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

1. 始める前に

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

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

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

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

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

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

前提条件

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

学習内容

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

作成するアプリの概要

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

必要なもの

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

2. Kotlin で初めてのプログラムを実行する

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

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

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

  1. ブラウザで、https://developer.android.com/training/kotlinplayground にアクセスします。これにより、ブラウザベースのプログラミング ツールが開きます。
  2. 以下のスクリーンショットのような画面が表示されます。中央にあるのがコードエディタです。Kotlin のプレイグラウンド

次のコードがエディタ内に表示されています。

fun main() {
    println("Hello, world!")
}

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

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

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

  1. エディタ右上にある白または緑の三角形 63ca117bafffc8da.png をクリックして、プログラムを実行します。
  2. エディタの下のペインを確認します。
Hello, world!
  1. 上の画像のように、「Hello, world!」と表示されたはずです。これで、このプログラムは Hello World メッセージを表示(出力)するものであることがわかりました。

「コンパイル」とは、Kotlin プログラム コードをシステムで実行できる形式に変換する処理のことです。コンパイルが正常に終了した場合は、プログラム中に実行を妨げるようなエラーはありません。問題がある場合は、エディタの下のペインに表示されます。

3. プログラムを変更する

Hello World コードを変更する

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

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

仕組み

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

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

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

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

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

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

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

println("Happy Birthday!")

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

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

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

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

fun main() {
    println("Happy Birthday!")
}

4. プログラムを拡張する

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

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

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

fun main() {
    println("Happy Birthday!")
    println("Jhansi")
    println("You are 25!")
}

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

  1. プログラムを実行して動作を確認します。
  2. コンソール ウィンドウの出力ペインに、次の 3 行が出力されるはずです。
Happy Birthday!
Jhansi
You are 25!

お疲れさまでした。

エラーへの対処

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

  1. プログラム中のテキスト Jhansi を囲んでいる引用符を削除して、該当の行を次のようにします。
println(Jhansi)
  1. プログラムを実行します。Jhansi の部分が赤くなり、変更したコード行の横に感嘆符が表示されます。これにより、エラー箇所がわかります。エラーを示す感嘆符が表示されたメッセージ
  2. 出力ペインを確認します。同じ感嘆符アイコンの付いたメッセージが表示されています。以下は、コードのエラーの説明です。

メッセージ: 未解決の参照(Unresolved reference)

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

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

5. 解答コード

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

fun main() {
    println("Happy Birthday!")
    println("Jhansi")
    println("You are 25!")
}

6. まとめ

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

7. 詳細

8. 自習用練習問題

次のことを行います。

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

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

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

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

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

コード:

fun main() {
    println("no line break")
    println("")
    println("with line \n break")
}

出力:

no line break

with line
 break

答え合わせ:

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

fun main() {
    print("Happy Birthday!\n")
    print("Jhansi\n")
    print("You are 25!")
}