SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

JavaをやめてKotlin始めた.

ここ最近ずっと仕事で書いていたクローラーbotをWebの海へ解き放つ。命令通りにbotがWebを巡回し戻ってくるまでの時間をプログラムで試算すると、なんと36時間以上もの時間がかかってしまうことがわかった。subprocessやMapReduceを書けばまだ処理時間を短縮出来そうだが、そこまでの熱意もなかったのでただただ待つ。しかし待つ時間がとても暇なので、別の仕事で振られていたAndroidアプリ開発に着手し出した。

ゼロベース開発なので、技術選定は自由。IDEも言語も。誰からも文句は言われない。そこで言語はJavaではなくKotlinにした。KotlinならJavaみたいな長々としたコードを書かなくて済むんじゃないかというレベルの発想。知識ゼロベースから新しい技術を覚えるところから開発を始めた。

About Kotlin

KotlinとはIntelliJで有名なJetBrains社によって開発された言語である。Java以上の簡潔性と安全性を目指して開発されており、JVM上で動く。簡潔性で言うならば、型推論や関数リテラルクロージャなどを備えているため、Javaと比べて冗長になりがちなコードをすっきりと書くことができる。また、安全性の観点だと、Javaよりも厳格な静的型付けやNullableとnotNullといったNull安全の機能がある。ことAndroid開発においても、Kotlinは最近よく導入されており、AndroidStudioといったIDEのサポートがしっかりされていることも後押ししている。あとはなんてったって、名前がかわいい。コトリン。

Kotlin Koans

新技術に手を出す時にどうやって学習すべきかと迷うことは多いが、大きく二つに分かれると思う。一つは、ガリガリとアプリを開発していく中で学習していくトップダウン式。もう一つは、公式チュートリアルや技術書のコードをひたすら写経して身体に染み込ませるボトムアップ式。個人的にはトップダウン式は難易度が高い。しかしボトムアップ式は非常につまらない。内定者時代に会社からもらったJavaの本を何周もしてJavaを覚えたが、これがかなり苦痛だった。そして労力の割には得られるスキルが小さく、実践には決して及ばない。(今思うとこの勉強方法はかなり馬鹿っぽい。)

さてじゃあどうしたものかと考えながら、Kotlinの公式ドキュメントへ行くと、Koansというものがあった。Koansとはプログラミングの入門目的として用意された問題集を一般的に指すみたいで、語源は「公案」らしい。Zenもそうだが、プログラミングの世界ではしばしば日本語を好んで名付けがされる。Koansもその内の一つだろう。

とにかく問題集というのが気に入った。ただ写経するだけでなく、頭を使って取り組むのは大事なことだ。Kotlin KoansにはJavaコードをコンバートすることが問題設定されており、Web上のエディタに直接コードを書き込み走らせることが出来る。タブを切り替えれば、既に用意されたテストコードも読む事が可能で、Go言語もそうだが、こうした学習コンテンツが公式ドキュメント上に用意されているのは最近よく見られる。

テストが通るようにKotlinコードを書いていく。Javaだとこう書くことがKotlinを使うと、こんなにスマートに!という学びの仕組み。少し頭を使って、簡単にコードが書けて、簡単に結果が確認出来る、ということがコンテンツにより強制されることはとてもありがたい。Koansを使えば一通りの文法は押さえられる。

ABC, Kotlin

しかし結局は実践無くして得られる知識はあまり定着しない。Koansに限らずWebベースでお題に対してコード打ち込みながら学んでいくコンテンツは昨今多くなっている。代表的なところだと、Codecadmyあたりか。ここ数年、いろんなプログラミング学習コンテンツを試してはいるが、こうした勉強は記憶から消えていくことが多い。そこで次のステップとして、技術書を参考にガリガリとAndroidアプリのコードを書き始めている。プログラミングは量が最終的に質に昇華されると思っているので、とにかく書くこと。ABCの哲学: Always Be Coding !!

Koansもいいけど結局はCourseraやUdacityのようなオンライン講義を受けてガリガリとコードを書いたりテストを解いたりしていくのが合っている気がする。KotlinでAndroid開発!みたいな講義があれば受講したいけど、なかなかね。



相変わらずコンパイラ書いたり機械学習やったりNativeアプリ開発したりと方向性がまるで見えないが、とりあえずKotlin始めました。

Remove all ads