読者です 読者をやめる 読者になる 読者になる

Kotlin Advent Calendar 2012 (全部俺)

JavaプログラマのためのKotlin入門

1日目:アドベントカレンダーはっじまっるよー!

f:id:ngsw_taro:20121129063626j:plain

 とうとう来た12月!師走!本当に1年って早いですね。今年もだらだらと過ごしてしまいました。来年こそは本気出すっ(キリッ

ってことで今年もアドベントカレンダーの季節がやってきました。クリスマスを楽しく待つためのカレンダー、それがアドベントカレンダーです。それになぞらえて、12月1日から25日(クリスマス)まで日替わりで技術ネタについてブログを書いていく、というのが近年IT系コミュニティで恒例となっています。今年のアドベントカレンダーはAdvent Calendar 2012まとめ - NAVER まとめにまとめられています!

アドベントカレンダーのテーマ

ずばりKotlinです!

Kotlin(コトリン)という新しいプログラミング言語について、クリスマスまで毎日語っていきたいと思います。しかし、ただ語っていくだけではありません。このアドベントカレンダーは2つの特徴があります。

ブログタイトルの通り、全部俺です。というのは通常、アドベントカレンダーは毎日担当者が入れ替わり立ち替わりで記事を書いて進めていくスタイルを取ります。が、当アドベントカレンダーは毎日僕が担当します!

2点目の「Javaプログラマ向けKotlin入門」は、まぁ字面通りの意味なんですが、Javaの経験者をターゲットとしたKotlinの解説をしていきたいと思っています。「プログラミングKotlin(仮)」という解説サイトを公開していますが、より体系的に順を追って丁寧にKotlinを紹介していくよう努めます。具体的には、Javaオンリーのプログラマには馴染みの薄い高階関数などの関数型プログラミング的なアプローチをわかりやすく解説できればと思います。

このアドベントカレンダーを通して、一番お伝えしたいことは

Kotlinかわいい

ということです。あ、つまりKotlinは簡単・強力・便利ということを伝えたいんです!

アドベントカレンダーの読み方

アドベントカレンダーに書く内容と言えばハックした事だったり重箱の隅をつつく内容だったりという傾向があると勝手に思ってますが、当アドベントカレンダーは前述の通りKotlin入門者のための解説ブログです*1

それぞれの記事は独立する内容になるよう努めますが、まれに1つのトピックを前編・後編という感じに分ける場合もあります。興味のある記事を拾い読みすることもできますが、最初から順に読み進めることをおすすめします。

アドベントカレンダーの目次(予定)はこちらです。

Kotlinって何だ?

Kotlinはプログラミング言語のひとつ。IDEで有名なJetBrains社によりApache 2.0ライセンスの下開発されています。Java仮想マシンJVM)上で動作するバイトコードにコンパイルされる、いわゆるJVM言語*2で、産業利用を目的とした本格的なオブジェクト指向言語です。

なぜKotlinなのか?

Javaは今年で17歳です。女の子なら女子高生です。去年にJava 7がリリースされ、来年夏にはJava 8のリリースが予定されています。そんなJavaについて、バージョン間の互換性の問題が話題にのぼることがしばしばあります。またJavaコードの冗長性や、配列の型安全性*3など、いろいろ悩みが多いのが実情だったりします。

 そこで他のJVM言語に目を向けたとき、ScalaやGroovyといった選択肢があると思います。これらは実用的で楽しい言語ですが、JetBrains社は次のように主張しています。

  • Scalaは複雑
  • Groovyは動的で間違いが起きやすい

このような状況を打破するためKotlinプロジェクトがスタートしました。KotlinはJavaよりも簡潔で安全に、Scalaよりもシンプルに、静的型付けによりGroovyよりも安全性とスピートを重視するといったことを目標に設計されています。

これは僕の個人的な意見ですが、上記の特徴に加えてKotlinは、Java経験者にとっての学習コストが小さく、Javaでよく陥りがちなミスを未然に防いでくれるような言語設計なので、業務利用の言語として非常に適していると思います。

まとめと次回予告

アドベントカレンダー初日分はここまでです。今日はKotlinが静的型付けのオブジェクト指向JVM言語であることを学びました。また、その誕生のモチベーションがJavaの抱える問題、Scalaなどの他言語の不満点の補完ということを学びました。明日はKotlinについて特徴的で興味深いいくつかの機能をウォークスルーします。

*1:そのため、既にKotlinに詳しい方には物足りないかも知れません。

*2:KotlinはJavaScriptコードにコンパイルすることも可能です。

*3:「Effective Java 第2版」の項目25「配列よりリストを選ぶ」を参照してください。詳細はジェネリクス(12月16日)で触れる予定です。