初めての Kotlin プログラムを記述する

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

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

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

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

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

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

Prerequisites

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

学習内容

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

作成するアプリの概要

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

前提条件

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

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

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

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

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

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

  1. 黒いポップアップ ボックスの左上にある X をクリックして閉じます。
  1. 以下の注釈付きのスクリーンショットを参考に、このエディタの使い方を習得してください。

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

このウェブベースのコードエディタには他にも多くの機能が用意されていますが、使用を始める際に知っておくべき機能はこのようなものです。

サンプルコードを開く

  1. ファイル エクスプローラで、まだ選択されていない場合は [Example > Hello, world!> Simplest > 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. [Console] タブをクリックします。コンソールは、プログラムがテキスト出力を出力できる場所です。

  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. 下のスクリーンショットに示すように、Console に「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. [Console] ウィンドウに移動すると、次のスクリーンショットに示すように、3 行がコンソール ウィンドウに表示されます。

お疲れさまでした。

エラーへの対処

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

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

  1. 下にスクロールして、コンソールを表示します。
  2. [Problem view] タブが選択されていない場合は選択します。
  3. [Problems] タブを確認します。同じ感嘆符アイコンが付いたメッセージと、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!")
}