sys1yagi
Anatomy Kotlin

Updated 5 months ago

解剖 Kotlin ~バイトコードを読み解く~

 新しい言語を習得しようとするとき、どのようなアプローチで学習することが考えられるでしょうか。公式のチュートリアルに沿って動かす、入門書を読む、公式ドキュメントを読む、勉強会に参加する、勉強会を主催する、目的をもったアプリケーションを作るなどさまざまなアイデアがありそうです。

 本書で取り扱うKotlinは、JVM(Java Virtual Machine)で動作する静的型付き言語です。JVMで動作するということは、KotlinのソースコードをコンパイルをするとJavaバイトコードを出力するということです。Javaバイトコードはただのバイナリファイルなので、そのまま読むのは骨が折れます。Java SDKにはjavapコマンドという、Javaバイトコードを逆アセンブルしてJavaバイトコードの命令を可読化してくれるツールが含まれています。そのほかjad1などJavaバイトコードをデコンパイルしてJavaソースコードへ復元するデコンパイラなどもあります。Javaバイトコードを読む時は一般的にこうしたツールを利用します。

 KotlinのソースコードをコンパイルをするとJavaバイトコードを出力すると述べました。つまりKotlinは「コンパイル結果をデコンパイルしてJavaソースコードとして解釈する」という学習のアプローチを選択できるということになります。もしあなたがJavaに慣れ親しんでいるなら、このアプローチがいかに親しみやすいか想像できるのではないかと思います。Kotlinはさまざまな言語の強力な機能を取り入れています。Javaからはかけ離れたような機能もあり、理解が難しいと感じることがあるかもしれません。しかしコンパイルをしてしまえばJavaと同じJavaバイトコードとなり、それをデコンパイルすればJavaソースコードとなってどのような処理になっているのかを読み解けます。もちろんデコンパイルによって完全なJavaソースコードを得られるわけではありませんが、理解の大きな助けになります。

 本書ではKotlinのソースコードをコンパイルした結果を、逆アセンブルしたりデコンパイルしながら読み解くことで、Kotlinの特徴的な機能の動作を理解していきます。もしあなたがJavaを好きなら、本章を読み終えたとき、きっとKotlinを愛しはじめている自分に気づくでしょう。

1: http://varaneckas.com/jad/