Kotlinを紹介します。最終的なゴールとしてはKotlinを使ったAndroidアプリケーション開発を解説します。今回は導入として,Kotlinの概要や特徴について説明します。Environment:統合開発環境)で有名なJetBrainsが中心となって開発が進められている新しいプログラミング言語です。Software)として開発環境とそのソースコードが公開されています。Machine:Java仮想マシン)で動作するJavaバイトコード(おなじみのclassファイル)へコンパイルされます。このようなプログラミング言語をJVM言語と呼ぶことがあります。ScalaやGroovyもKotlinと同じくJVM言語の1つです。JavaScriptへのコンパイルもサポートしているaltJSの1つでもあります。Androidアプリの開発もサポートしています。Kotlinは型推論やラムダ式,トレイトなどのモダンな文法,機能を持った静的型付けの本格的なオブジェクト指向言語です。Javaよりも簡潔で安全なコードを書けることが特徴です。執筆時現在のバージョンは0.10.195で,目下開発途中にあります。Kotlinなのか世の中には,すでに数えきれないほどプログラミング言語が存在します。その中からなぜKotlinを選ぶのか,これについて言及します。言えることは,JVM言語であるということです。Javaは世界中で使われている非常に人気の高い言語です。1995年の登場以来,多くのコードが書かれ,多くのシステムが運用されてきました。8がリリースされたのは記憶に新しいです。その反面で後方互換性を維持するために記述の冗長さや型安全の問題は改善されにくい現状にあります。そこでJVM言語の登場です。Javaの抱える問題から解放されてプログラミングできるだけではなく,高い信頼と性能を持ったJVM上で動くこと,Javaによって記述された既存のライブラリ/フレームワークなどの資産を活用できるなどのメリットも併せ持っています。JVM言語だけでもその数は非常に多いです。有名なものでは,ScalaやGroovyが真っ先に思い浮かびますね。このような競合がある中でJetBrainsは,次のようなKotlinの設計ゴールを定めています。少なくともJavaと同等のコンパイル速度Javaよりも安全:nullポインタの逆参照(注1)のようなありふれた落とし穴のための静的チェックなどJavaよりも簡潔:型変数の推論,高階関数(クロージャ⁠)⁠,拡張関数,ミックスインや第一級デリゲーションなどをサポートScalaよりもシンプルな方法で,表現力を実用的なレベルに維持する特徴的なのは,nullポインタの逆参照,すなわちNullPointerExceptionが起こり得ないようなしくみ(NULL安全)が言語機能として提供されているところです。その他にもミスを未然に防いでくれる機能があり,Javaよりもつまらないバグを生みにくい言語となっています。安全に重きを置くとコードが複雑になるのではないか,という心配があるかと思いますが,その点もKotlinでは考慮されています。これらのような特徴に加え,Javaから離れすぎない文法による学習コストの小ささから,実際の業務での利用に適しているのではないかと筆者は考えています。注1)dereferenceのこと。簡潔,安全,JavaバイトコードとJavaScriptへコンパイル可能,静的型付け,オブジェクト指向,クロージャ......。これらはKotlinを説明する常套句に過ぎません。どれもKotlinの特徴を端的に表している重要な言葉です。簡単なコードを交えて1つずつ紹介していきます。簡潔であることKotlinはコード自体のシンプルさはもとより,文法すなわち記述ルールも簡潔です。コードが簡潔であることでキーを叩く回数が少なくなり誤りが混入しづらいだけでなく,可読性が増しメンテナンスのコスト低減を期待できます。文法が簡潔であることで学習コストが小さく,プログラマのレベルの違いから引き起こされるコードのばらつきを,小さく抑えることができます。リスト1は毎度おなじみのHelloWorldをKotlinで記述したコードです。println(message)}CLIの黒い画面から挨拶文が表示されるだけのプログラムですが,Kotilnの特徴がうかがえます。トップレベルに関数を定義できることがわかります。funキーワードが関数定義のために必要なキーワードです。mainという名前で,Array<String>型の引数を取る関数がKotlinプログラムのエントリポイントです。変数の型を,変数名の後に置くのもJavaとは異なる点です。表示するメッセージを変数messageに代入しています。Kotlinではvalキーワードなどを使って変数を宣言します。messageはString型ですが,それは右辺から推論できるので明示する必要はありません。printlnは引数の値を標準出力に書き出す関数です。;(セミコロン)を置いて文の終端を明示する必要はありません。同じ行に続けて文を書く場合には;で区切る必要があります。安全であること前述のとおり,KotlinはJavaと比べて安全です。型やnullの扱いが厳格です。Kotlinではキャストやnullの逆参照による実行時例外が起こることは非常にまれです。nullが代入され得る変数と,され得ない変数を区別します。リスト2(注2)は,bへnullを代入しようとしている個所でコンパイルエラーとなります。通常の型(ここではString)の変数へnullは代入できないのです。NG!!少し変更を加えたリスト3はコンパイルに成功します。変数とdの型がString?になっています。OKこのような?が末尾に付く型の変数はnullを代入可能です。その変数が参照するオブジェクトのメンバへのアクセスに制限が伴います。NullPointerExceptionを防ぎNULL安全を貫くためです。NULL安全については,次回以降で説明します。注2)コードの説明上,main関数が不要な場合は省略します。同年入社したメーカー系SIerを経て,2013年にエムスリー株式会社へ入社。以来,世界の医療を変革するためソフトウェアエンジニアとして従事。日本Kotlinユーザグループ代表,日本Javaユーザグループ幹事を務める。国内初となるKotlin入門書「Kotlinスタートブック」(リックテレコム)の著者。ビールとディズニーが大好き。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。