初めての Kotlin プログラムを作成する

この Codelab では、ブラウザで実行できるインタラクティブなエディタを使って、Kotlin 言語で初めてのプログラムを作成します。

「プログラム」[リンク] とは、システムがなんらかのアクションを実行するための一連の手順と考えることができます。たとえば、誕生日カードを作るプログラムを作成するのであれば、そのプログラムの中に、お祝いメッセージを出力する手順や、生まれ年から年齢を計算する手順を書くことになるでしょう。

他の人に意思を伝えるときには人間の言葉を使いますが、それと同じように、コンピュータのオペレーティング システムに意思を伝えるときにはプログラミング言語を使います。ただ幸いなことに、プログラミング言語は人間の言葉ほど複雑ではなく、しかも非常に論理的です。

Android アプリは Kotlin プログラミング言語で作成されています。Kotlin は、デベロッパーがエラーが少なくより正確なコードを効率よく記述できるように開発された、最新のプログラミング言語です。

アプリの作成とプログラミングの基本を同時に学ぶのは難しいため、ここでプログラミングの基本を押さえてからアプリの作成に進むことにします。最初にプログラミングの基本をある程度押さえておけば、アプリの作成にスムーズに進めるばかりでなく、このコースで後ほど行う初めてのアプリの作成も容易になります。

「コードエディタ」とは、コードを記述するためのツールです。テキスト ドキュメントを作成するためのワード プロセッサ(Google ドキュメントなど)のようなものです。この Codelab では、ブラウザで動作するインタラクティブな Kotlin エディタを使用します。つまり、ソフトウェアを一切インストールすることなく、アプリ開発の第一歩を踏み出せるということです。

前提条件

  • お使いのブラウザでインタラクティブなウェブサイトを使用できること。

学習内容

  • メッセージを表示するだけの簡単な Kotlin プログラムを、作成、変更、理解、実行する方法。

作成するアプリの概要

  • 実行するとメッセージを表示する Kotlin プログラミング言語のプログラム。

必要なもの

  • 最新のウェブブラウザ(Chrome の最新バージョンなど)を搭載したパソコン。
  • パソコンでのインターネット アクセス。

このタスクでは、さっそくウェブサイト上のエディタを使用して Kotlin 言語でのプログラミングを始めます。

インタラクティブなコードエディタを使用する

初めてのプログラムを作成するために、パソコンにソフトウェアをインストールする必要はありません。代わりとなるウェブベースのツールを利用できます。

  1. ブラウザで、https://try.kotlinlang.org/ にアクセスします。これにより、ブラウザベースのプログラミング ツールが開きます。
  2. 以下のスクリーンショットのような画面が表示されます。左側にファイルのリスト、右側にエディタが表示されます。右下に Cookie ポリシーに関する情報が表示された黒いボックスが表示されることもあります。

警告: このサイトの Cookie ポリシーに同意できない場合は、続行しないでください。

  1. 黒いポップアップ ボックスの左上にある [X] をクリックして、ボックスを閉じます。
  1. 次の注釈付きのスクリーンショットを参考に、このエディタの概要を把握してください。

  • (1)上部の [Learn]、[Community]、[Try online] の各タブ。[オンラインで試す] タブをクリックします(まだ選択されていない場合)。
  • (2)左端のペインの [ファイル エクスプローラ]。このリストの各フォルダには、Kotlin を学習するための小さなスタンドアロンのサンプルが含まれています。
  • (3)右側のペインにあるエディタ は、コードの記述作業のほとんどを行う場所です。

このウェブベースのコードエディタには他にも多くの機能がありますが、ここでは、使用を開始するために知っておくべき機能について説明します。

サンプルコードを開く

  1. ファイル エクスプローラで、[Examples > Hello, world! > Simplest version > SimplestVersion.kt(下のスクリーンショットの 1)。
  2. ファイル名 SimplestVersion.kt.kt ファイル拡張子に注目してください(下のスクリーンショットの 1 を参照)。画像に .jpg.png の拡張子があり、PDF に .pdf の拡張子があるように、すべての Kotlin ファイルには .kt の拡張子が必要です。
  3. エディタのコード(下のスクリーンショットの 2)に注目してください。一部のコードがハイライト表示されています。このコードを操作します。

エディタでハイライト表示されたプログラム コードは次のとおりです。

fun main(args: Array<String>) {
    println("Hello, world!")
}

プログラム コードを実行する

自分で作成したプログラムを実行することは、パソコンのワード プロセッサなどのプログラムを実行することとあまり変わりません。違いを指摘するなら、タスクを達成する、ゲームをプレイするなどの目的でプログラムを実行するとき、最も気になるのはそのプログラムで何ができるかであり、できるまでの処理を記述したコードは意識しない、という点です。プログラミングする場合は、魔法のようなことを実現するコードを自分の目で確認し、扱うことができるのです。

それでは、このプログラムで何が起こるか見てみましょう。

  1. エディタ右上にある緑の三角形 をクリックして、プログラムを実行します。

  1. 必要に応じて、ページを下にスクロールしてエディタの下部を表示し、下部のペイン(下のスクリーンショットの 1)を表示します。

  1. [コンソール] タブをクリックします。コンソールは、プログラムがテキスト出力を出力できる場所です。

  1. 上のスクリーンショットのように、[コンソール] ペインに「Hello, world!」と表示されたはずです。これで、このプログラムは Hello World メッセージを Console ウィンドウに表示(出力)するものであることがわかりました。
  2. 出力された Hello, world! の上に Compilation complete successfully というメッセージが表示されていることに注目してください。「コンパイル」とは、Kotlin プログラム コードをシステムで実行できる形式に変換する処理のことです。コンパイルが正常に終了した場合は、プログラム中に実行を妨げるようなエラーはありません。

プログラムの構成要素

このプログラムの動作を確認したところで、その仕組みを見ていきましょう。

  1. エディタでプログラムを確認します。
  2. このコードには 2 つの異なるセクションがあります。

プログラムの上部:

/**
 * We declare a package-level function main which returns Unit and takes
 * an Array of strings as a parameter. Note that semicolons are optional.
 */

上記のコード スニペットでは、/**/. の記号の中にテキストが表示されています。

これはコメント、つまり他のデベロッパー向けの情報を含むメッセージです。プログラムを実行すると、このコメントはシステムによって無視されます。差し当たり、このコメントも無視してください。コメントの詳細については、後の Codelab で説明します。

プログラムの下部:

fun main(args: Array<String>) {
    println("Hello, world!")
}

この 3 行のコードが、実際に実行されてメッセージを出力するプログラムです。

Hello World コードを変更する

プログラムを変更して、少し違うことをさせてみましょう。

  1. テキストを "Hello, world!" から "Happy Birthday!" に変更します。
  2. エディタ右上の緑の実行ボタン をクリックして、プログラムを実行します。
  3. 次のスクリーンショットのように、[コンソール] に「Happy Birthday!」と出力されます。

今回のアップデートでどのように変更されますか?

これは、どのような仕組みなのでしょうか。また、表示を行うだけにしてはコードが多いようにも思えます。

友だちに「Hello, world!」と紙に書いてもらう場合を考えてみましょう。このリクエストには、言葉に表れない、言外の情報がたくさん含まれています。もし、「この紙に『Hello, world!』と書いて」とだけ伝えたら、友だちはその言外の情報を推し計ることになります。たとえば、「これを実行するにはペンが必要だ」、「つまり、文字を使って書いてほしいということだな」などと推定しているのです。コンピュータはこのように言外の情報を推定しないため、一つ一つの手順について細かく指示しなければなりません。

日本語に構造があるように、プログラミング言語にも構造があります。外国語を学んだことがあれば、文法やスペル、場合によっては見たこともない文字、そして語彙を覚えることの難しさをご存じでしょう。プログラミングの学習にも同様の難しさがありますが、幸いなことに、英語などの学習よりも複雑ではなく、はるかに論理的です。

プログラムの各部分を理解する

それでは、コードを見ていきましょう。このプログラムの各部分には固有の目的があり、プログラムの実行にはそのすべてが必要です。最初の単語から見ていきます。

fun
  • fun は、Kotlin プログラミング言語の単語です。fun は関数(function)の略です。関数とは、特定のタスクを実行するプログラムのセクションのことです。
fun main
  • main は、この関数の名前です。関数には名前があり、それによってお互いを区別します。この関数は、プログラムを実行すると最初に呼び出される、つまりメインの関数であるため、main と呼ばれます。すべての Kotlin プログラムには、main という名前の関数が必要です。
fun main()
  • 関数名の後には、必ず () という一組のかっこを付けます。
fun main(args: Array<String>)
  • かっこの中には、関数が使用する情報を入れることができます。関数への入力となるこの情報は、「引数(arguments)」または略して args と呼ばれます。引数については、後で詳しく説明します。main 関数には常に同じ引数があることを知っておく必要があります。
fun main(args: Array<String>) {}
  • 引数の後に、一組の中かっこがあります。関数の中身は、タスクを実行するためのコードです。このコード全体を中かっこで囲みます。

中かっこの中のコード行を見てみましょう。

println("Happy Birthday!")

このコード行により Happy Birthday! のテキストが出力されます。

  • println で、テキスト行を出力するようシステムに指示します。
  • かっこ内に、出力するテキストを指定します。
  • 出力するテキストが引用符で囲まれていることに注意してください。これにより、引用符で囲んだ部分をすべてそのまま出力するようシステムに伝えられます。

実際にテキストを出力するには、この println 命令全体を main 関数内に入れる必要があります。

これで、簡単な Kotlin プログラムが出来上がりました。

fun main(args: Array<String>) {
    println("Happy Birthday!")
}

よくできました。println() function を使用して 1 行のテキストを出力できました。ただ、関数内には、タスクの実行に必要な数だけ命令行を記述できます。

  1. println("Happy Birthday!") の行をコピーして、その下に 2 回貼り付けます。必ず main 関数の中かっこの中に貼り付けるようにします。
  2. 出力するテキストの一つを相手の名前(ここでは「Jhansi」)に変更します。
  3. もう一方のテキストを「You are 25!」に変更します。

コードは次のようになります。

fun main(args: Array<String>) {
    println("Happy Birthday!")
    println("Jhansi")
    println("You are 25!")
}

このコードを実行するとどうなるでしょうか。

  1. プログラムを実行して動作を確認します。
  2. [コンソール] ウィンドウに、次のスクリーンショットに示すように、3 行が出力されるはずです。

お疲れさまでした。

エラーへの対処

プログラミングでミスが発生するのは普通のことであり、多くのツールがミスの修正に役立つフィードバック機能を備えています。ここでは、意図的にミスをして何が起こるかを確認します。

  1. プログラム中のテキスト Jhansi を囲んでいる引用符を削除します。その結果、この行は次のようになります。
println(Jhansi)
  1. プログラムを実行します。Jhansi の部分が赤くなり、コードの 8 行目の横に感嘆符が表示されます。これにより、エラー箇所がわかります。

  1. 下にスクロールしてコンソールを表示します。
  2. [問題ビュー] タブが選択されていない場合は、このタブを選択します。
  3. [Problems view] タブを確認します。同じ感嘆符アイコンと Error という単語を含むメッセージが表示されます。以下は、コードのエラーの説明です。

  1. (8, 12). という数字を探します。これらの数字は、エラーが発生したコードの行(8 行目)と、エラーが始まったその行の文字の位置(12)を示しています。
  2. 次に、Unresolved reference: Jhansi というメッセージが表示されます。このメッセージは、システムで検出されたコードエラーを示しています。エラー メッセージの意味を理解できなくても、何が問題なのかわかることがあります。この場合、println() はテキストを出力する命令だということがわかっています。また、テキストは引用符で囲む必要があることも学びました。すなわち、テキストが引用符で囲まれていなければエラーということです。
  3. そこで引用符を追加して元に戻します。
  4. プログラムを実行し、再び動作するようになったことを確認します。

お疲れさまでした。これで、初めての Kotlin プログラムの実行と変更が完了しました。

この Codelab で使用したプログラムのコード全体を以下に示します。

  • https://try.kotlinlang.org/ は、Kotlin プログラムの作成を練習できるウェブ上のインタラクティブなコードエディタです。
  • すべての Kotlin プログラムに main() 関数(fun main(args: Array<String>) {})が必要です。
  • テキスト行を出力するには、println() 関数を使用します。
  • 出力するテキストは二重引用符で囲みます(例: "Hello")。
  • 複数のテキスト行を出力するには、println() 命令を繰り返します。
  • エラー箇所はプログラム内で赤く表示されます。エラーの箇所と原因の特定に役立つエラー メッセージが [問題ビュー] タブに表示されます。

この Codelab は、Kotlin を用いた Android の基本コースの一部です。

次の手順を行います。

  1. println() 命令を print() に変更します。
  2. プログラムを実行します。どうなりますか。

ヒント: print() 命令は、文字列の最後に改行を追加せずにテキストをそのまま出力します。

  1. メッセージの各部分が異なる行に表示されるようテキストを修正します。

ヒント: 改行を入れるには、テキスト内に \n を追加します(例: "line \n break")。改行を入れると、下記のように出力が変更されます。

ヒント: 空のテキストを指定する(println(""))ことで、空の行を出力できます。

コード:

fun main(args: Array<String>) {
    println("no line break")
    println("")
    println("with line \n break")
}

出力:

確認:

以下はこの問題の解答の一例です。

fun main(args: Array<String>) {
    print("Happy Birthday!\n")
    print("Jhansi\n")
    print("You are 25!")
}