Kotlinのおさらいをする
ことり「久しぶりにKotlinの勉強ができるね,凛ちゃん♪」
凛「学校行事とか,イベントでライブをすることが多くて,忙しかったにゃー・・・」
ことり「練習とか衣装作りとか,みんなと力を合わせていいライブができてよかったよね」
凛「うん! 会場も大盛り上がりだったし,凛も楽しかったにゃ!」
ことり「またライブしようね♪」
凛「もちろんだにゃ!」
ことり「それじゃ,そろそろKotlinの勉強を始めよっか♪ ちょっと間が空いちゃったから,これまでの内容をおさらいをしよう」
凛「ちょっと忘れてたから不安だったにゃ・・・」
ことり「まずは,どんなことを勉強したか覚えていることはある?」
凛「うーん,何か計算をしていたことしか覚えてない・・・」
ことり「それだと,ほとんど何も覚えてないね・・・ もう一回おさらいしておこっか」
凛「お願いしますにゃ,ことりちゃん」
ことり「はい,わかりました♪ まずは,文字を表示させるプログラムだね 何か思い出した?」
凛「・・・あ,printlnのことかにゃ?」
ことり「正解♪ println("Hello world")って書いたら,Hello worldが表示されるの」
凛「一番最初にKotlinのプログラムを動かすために書いたんだよね?」
ことり「そうだよ こんな感じのプログラムを書いたんだよ」
fun main(args: Array<String>){
println("Hello World!")
}
ことり「その後,何をしたか思い出した?」
凛「確か,入れ物を使って表示するプログラムを書いた気がするにゃ!」
ことり「お,そうそう 変数 っていうのを使って文字を表示させたよ こんなプログラムを書いたよ」
fun main(args: Array){
var printString = "Hello World"
println(printString)
}
ことり「まだまだしたことがあるんだけど,何かある?」
凛「同じことを何度も繰り返すやつにゃ!」
ことり「お,即答だね~ 正解だよ♪」
凛「何度も同じ文字が出てきたのは覚えてたにゃ!」
ことり「このときはこんなプログラムでした」
fun main(args: Array<String>){
//forで繰り返し
for (i in 1..10) {
println("forで表示しています")
}
//whileで繰り返し
var count = 10
while (count-- > 0){
println("whileで表示しています")
}
}
ことり「他には何かありますか?」
凛「う~ん,もう出てこないにゃ・・・」
ことり「時間切れ♪ 正解は文でした こんな感じのプログラムだよ」
fun main(args: Array<String>){
var point = 40
println(point)
if (point < 50){
println("50点以下です")
} else {
println("50点以上です")
}
}
fun main(args: Array<String>){
var point = 40
println(point)
when {
point < 50 -> println("50点以下です")
else -> println("50点以上です")
}
}
凛「よく覚えてないにゃ・・・」
ことり「え,あんなに教えたのに・・・ウルウル」
凛「いやでも,よくみたらpointの値でどっちかが表示されるのかな~・・・」
ことり「そうそう,そんな感じだよ♪ 良かった,全く覚えていないかと思っちゃったよ」
凛「プログラムをみたら,ちょっと思い出したにゃ・・・(あんな悲しそうな顔をみたら,何も覚えてないなんて,とても言えないにゃ・・・)」
ことり「復習はこれで終わりだけど,何かわからないところとかあった?」
凛「う~ん,特にはないかにゃ~」
ことり「次からは今までのプログラムを使って,更に難しいことをするけど大丈夫?」
凛「ちょっと自信がないけど,凛頑張るにゃ!」
海未「今回のおさらいは,過去の記事を元にしています ことりの話を聞いてもよくわからなかったところがあれば,以下の記事を参考にしてくださいね」
条件文,繰り返し,コメントを使う
凛「やっほー,ことりちゃん!」
ことり「あ,凛ちゃん♪ 今日はいつもより元気いっぱいだね~」
凛「えへへ,ことりちゃんとKotlinを勉強するのが楽しくて,早く次を教えてほしいにゃ!」
ことり「うん,それじゃ今回は簡単な条件文とコンピュータが得意な繰り返しを教えます♪」
凛「前回に引き続いて難しいそうな内容だにゃ・・・」
ことり「難しく考えなくても大丈夫♪ 簡単にできると思うから頑張って」
凛「ことりちゃんがそう言うなら,頑張ってみる!」
ことり「うん! それじゃあまずは条件文からしていこっか」
凛「おー!」
ことり「それじゃ,早速ですが,下のコードを書いてね」
fun main(args: Array){
var point = 75
println(point)
if (point < 50){
println("50点以下です")
} else {
println("50点以上です")
}
}
ことり「新しいところはif (point < 50){の行からだよ」
凛「これで何をしているの?」
ことり「pointの値が50未満だったら上のprintln("50点以下です")が実行されて,50以上だと下のprintln("50点以上です")が実行されるの」
凛「と言うことは,今pointには75が入っているから,下の方が実行されるのかにゃ?」
ことり「実行してみましょう♪」
75
50点以上です
ことり「はい,ことりちゃん正解です,パチパチ~♪」
凛「えへへ~ ところで,pointの値を40にしたら,50点以下ですが表示されるの?」
ことり「うん♪ 実際に変えて実行してみよっか」
fun main(args: Array){
var point = 40
println(point)
if (point < 50){
println("50点以下です")
} else {
println("50点以上です")
}
}
ことり「これで実行♪」
40
50点以下です
凛「確かになったにゃ!」
ことり「という訳で,条件文は以上・・・と言いたいところなんだけど,実はもう一つ書き方があるの」
凛「if以外にも書き方があるってこと?」
ことり「うん,それがこの書き方だよ」
fun main(args: Array){
var point = 40
println(point)
when {
point < 50 -> println("50点以下です")
else -> println("50点以上です")
}
}
凛「whenを使っている?」
ことり「うん,さっきのifのプログラムをwhenに書き換えたよ 」
ことり「という訳で,条件文は以上です」
凛「意外と簡単だったにゃ! 次は・・・繰り返し,だっけ?」
ことり「うん♪ 繰り返しは同じ処理を何度もする時に使うよ」
凛「同じ処理?」
ことり「たとえば,プリントを100回印刷するとかかな 10回ならまだ大丈夫だけど,100回も同じことを書くのは手間がかかっちゃうよね」
凛「凛だと,100回も同じことを書くなんてできないにゃ・・・」
ことり「そこで繰り返しの出番♪ なんだけど,条件分と同じように繰り返しにもいくつか書き方があるの」
凛「これは難しいの?」
ことり「そんなに難しくない・・・かな? 実際に書いてみよう」
fun main(args: Array){
//forで繰り返し
for (i in 1..10) {
println("forで表示しています")
}
//whileで繰り返し
var count = 10
while (count-- > 0){
println("whileで表示しています")
}
}
ことり「繰り返しはforかwhileが使われるよ」
凛「なるほど~・・・ことりちゃん,//で始まる行は何?」
ことり「これはコメントアウトって言って,この行に書かれたことはコンパイルする時,何も無い行としてコンパイルするの 気づいたことを書くのに便利だよ」
凛「と言うことは,//forで繰り返しと//whileで繰り返しは無視されて,それ以外の行が実際にコンパイルされるってことだね!」
ことり「うん♪ それじゃこれを実行してみよう」
forで表示しています
forで表示しています
forで表示しています
forで表示しています
forで表示しています
forで表示しています
forで表示しています
forで表示しています
forで表示しています
forで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
whileで表示しています
凛「ちゃんと10回ずつ繰り返し表示してるにゃ!」
ことり「これで繰り返しは終了♪ お疲れ様でした♪」
凛「今日は今までで一番たくさん覚えた気がするにゃ・・・」
ことり「いつもよりちょっと多かったね~ でも,今日と今まで教えてきた内容でいろんなことができるようになるよ♪」
凛「そうなの? 明日から何か作っていくことになるのかにゃ?」
ことり「その前に,これまでのことを思い出すためにちょっとしたプログラムを書いて復習してみよう」
凛「おー!」
変数を使う
ことり「凛ちゃん,そろそろ続きをしていこうと思うけど,休憩はもういいかな?」
凛「うん! 凛はもうばっちりだにゃ! ことりちゃんが持ってきてくれたクッキーのおかげだよ」
ことり「気に入ってもらえてよかった♪ それじゃあ,続きからいこっか♪ 今度はさっきの表示を発展させてみるよ」
凛「さっきのって書いた文字がそのまま表示されるやつのこと?」
ことり「うん♪ helloWorld.ktをこんな感じに書き換えてね」
凛「var printString = "Hello World"が前のプログラムには無かったね 何か意味があるのかにゃ?」
ことり「ちゃんとあります これは・・・って説明する前に何が表示されるか予想してから実行してどうなるか確認してみようか」
凛「凛はprintStringが表示されると思うにゃ! それじゃあ,コンパイルして実行っと・・・」
Hello World
凛「あれ? 全然違うのが表示されたよ? ことりちゃん,これであってるの?」
ことり「うん,これであってるよ 今回新しく出てきたvar printString = "Hello World"でHello Worldが出てくるの」
凛「?? どういうこと?」
ことり「var printString = "Hello World"だけど,これはprintStringに"Hello World"を入れて,println(printString)でprintStringに入ってる"Hello World"が表示されたの」
凛「・・・文字が多くてわからないにゃ・・・」
ことり「うーん,絵にしたらこんな感じかな」

凛「printStringっていう入れ物に"Hello World"がしまわれてる! println(printString)で入れ物の中身を表示してるのかにゃ?」
ことり「凛ちゃん正解♪ これで伝わらなかったら,どうしようかと思ってたけど,心配しなくてよかったね」
凛「やっぱりことりちゃんの教え方が上手だからだよ」
ことり「ありがと♪ ちなみに,printStringのような入れ物を変数って言うから覚えていてね それじゃあ,次はこんな感じに書き換えましょう」
凛「4行目辺りにprintString = 3 + 6があるから,printStringの中身を入れ替えているのかな?」
ことり「それじゃあコンパイルしましょう♪」
凛「あれ? いつもと表示が違う・・・」
ことり「これは・・・ 変数に入れられないって言ってるね」
凛「入れられない物があるの?」
ことり「変数にには型というのがあって,これによって変数に入れられる値と入れられない値があるの 今回は最初にvar printString = "Hello World"で文字を入れたから,3 + 6の数字は入れられなくなっちゃったの」
凛「代入の許可ぁ? 認められないわぁ」
ことり「急に絵里ちゃんのモノマネをしてきたね・・・」
凛「こうしたほうが覚えられやすいと思って!」
ことり「覚えられやすいなら,それでいいかな・・・」
凛「でも,3 + 6は表示できないの?」
ことり「一手間加えたら表示できるよ 一番良さそうなのはこんな感じにすればいいかな」
凛「なんか.toString()みたいなのがついているんだけど,これは?」
ことり「これは計算した数値を文字にする関数って言うものの一つだよ・・・って言ってわかる?」
凛「関数って凛たちが授業で習う数学に出てくるあれ?」
ことり「おぉ,大体あってるよ♪ 数学に出てくるのはxに数値を代入して,yを求めることが多いけど,プログラミングも同じだよ 何か関数に値を渡して,その関数に対応した値が求められるの」
凛「なるほどにゃ」
ことり「それじゃ,これをコンパイルして何も表示されないのを確認したら,実行してみよう」
凛「コンパイルして,何も出なかったので実行にゃ!」
凛「今度はちゃんと表示されたにゃ!」
ことり「お疲れ様♪ 今日はちょっと盛りだくさんだったね」
凛「ちょっと変数で覚えることが多いにゃ・・・」
ことり「どんなプログラムでも変数は絶対に使うから,忘れちゃだめだぞ♪」
凛「忘れないように頑張る!」
Kotlinを書いてみる
凛「結局,休憩の後何もしなかったね・・・」
ことり「うん・・・お菓子がおいしくていっぱいおしゃべりして,穗乃果ちゃんたちが来ちゃったもんね・・・」
凛「今日は気を取り直して,頑張らなくっちゃね!」
ことり「そうだね,昨日おしゃべりした分,頑張らなくっちゃ♪ 昨日はKotlinが使える様にしたんだよね」
凛「うん! 確か> kotlin -versionをコマンドラインに入力すると・・・」
Kotlin version 1.0.6 (JRE 1.8.0_121-b13)
凛「そう! これが表示されるんだよね」
ことり「そう♪ 凛ちゃん賢い~賢い~♪」
凛「えへへーことりちゃんに褒められたにゃー!」
ことり「よし,それじゃあ次の工程に進んじゃおうか♪」
凛「行っくにゃー!」
ことり「次は実際にプログラムを書いちゃおう」
凛「おぉ,ついに凛たちのやりたいことが!」
ことり「うん! それじゃ,初めから勉強するときに必ずとってもいいほど出てくる"Hello World!"を表示させましょう~ 」
凛「おお~!」
ことり「まずは,今後の勉強を整理するために,デスクトップにkotlinというフォルダを作ります その中にhelloWorld.ktというファイルを作って,ファイルに以下の内容を書きます」
fun main(args: Array<String>){ println("Hello World!")}
凛「これで"Hello World!"が表示されるの?」
ことり「多分出るはず・・・これを書いたら,コンパイルしていきますよ~」
凛「こんぱいる?」
ことり「前回も少ーしだけ話したけど,わかりやすく言うと私たちが書いたものは,コンピュータは理解してもらえなくて,これを理解してもらえるために翻訳するの これをコンパイルっていうんだー」
凛「なるほどー」
ことり「ちなみに,翻訳してくれるものをコンパイラっていうの ネットで調べるときに頻繁にコンパイルとコンパイラは出てくるから覚えておいてね」
凛「おぉ,ことりちゃん先生みたいだにゃー ことり先生~」
ことり「はい,星空さん,何か質問ですか?」
凛「本格的な授業だにゃ!」
ことり「そろそろ,続きに戻っちゃいます♪ コマンドラインを起動してhelloWorld.ktがあるフォルダに行きます」
凛「ちょっと待って,文字しかないのに,どうやってフォルダに移動するの?」
ことり「コマンドラインに入力する時,いつも左側に何か表示されるでしょ? それが今どこのフォルダにいるか表示してるの」
凛「C:から始まるこれのことかにゃ?」
ことり「うん! それをさっきhelloWorld.ktを作ったフォルダに移動します これを入力すると移動できるよ 左側の表示も変わっているか確認してね」
> cd C:\Users\%USERNAME%\Desktop\kotlin
凛「おぉ,左側の表示が長くなったにゃ」
ことり「これでhelloWorld.ktがあるフォルダに移動したよ 次はコンパイルをしていきます コンパイルはこれを入力してね」
> kotlinc helloWorld.kt
凛「これで翻訳してくれるの?」
ことり「うん,多分何か新しいファイルがあるはずなんだけど・・・あ,HelloWorldKt.classができてるよ!」
凛「確かにあるにゃ! これが翻訳した結果なの?」
ことり「うん! これなら,コンピュータが理解して動いてくれるはずだよ! 実行するにはこれを入力!」
> kotlin HelloWorldKt
凛「これが出てきたにゃ!」
Hello World!
ことり「上手くいったね!」
凛「やったー!」
ことり「次はHello World!以外の文字を表示させてみましょう」
凛「そんなことできるの?」
ことり「このHello World!はprintln("Hello World!")で表示させてるの 次はこの一文をこれに書き換えちゃいます」
println("ことりと凛ちゃん")
ことり「さて,凛ちゃんここで問題です これをコンパイルして実行すると,何が表示されるでしょう?」
凛「うーん,さっきことりちゃんはprintln("Hello World!")でHello World!が表示されているって言ってたから,ことりと凛ちゃんが表示されるのかにゃ?」
ことり「それでは,実際にコンパイルして実行してみましょう」
凛「コンパイルはkotlinc helloWorld.ktで,実行はkotlin HelloWorldKtで・・・あ,これが表示されたにゃ!」
ことりと凛ちゃん
ことり「はい,というわけで凛ちゃん,大正解♪」
凛「やったにゃー! ちょっとプログラムが楽しくなってきた!」
ことり「本当? それはよかった♪ けど,まだまだ始まったばかりだから,覚えることはたくさんだよ」
凛「凛,ことりちゃんと一緒なら覚えられそうにゃ!」
ことり「おぉ,ものすごいやる気だね♪ けど,ちょっと休憩してから続きをしちゃおう」
凛「確かに,ちょっと疲れたにゃ・・・ それじゃ休憩するにゃ」
実行環境構築
ことり「よし,まずはKotlinをインストールしよう!」
凛「了解にゃ!」
ことり「Kotlin,インストールで検索して・・・ふむふむ,どうやらJavaのコンパイラが必要みたいだね」
凛「じゃば? こんぱいら? 凛たちが勉強しようとしているのはKotlinじゃないの?」
ことり「うーん,すごく簡単に説明すると,Kotlinを翻訳するとJavaっていう言語に変わるの そして,Javaをコンピュータに理解してもらうためにJavaを翻訳するの」
凛「ふーん・・・凛にはよくわからないにゃ・・・」
ことり「凛ちゃん一人でしてたら,もうここで終わってたね・・・ もうちょっと説明すると・・・」
海未「今回はKotlinの環境構築を重点的にするため,KotlinとJavaの関連性は割愛します 機会があればこの辺りの説明をしていきます」
ことり「とりあえず,Javaがパソコンの中にあるか確認してみよう」
凛「どうやって確認するの?」
ことり「Windowsにコマンドプロンプトっていうのがあるから,それを開いてこれを入力してみて」
> java -version
凛「わかったにゃ!」
ことり「入力してこんなのが表示されたら問題ないかな♪」
java version "1.8.0_121"Java(TM) SE Runtime Environment (build 1.8.0_121-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
凛「おぉ,確かに表示されたにゃ!」
海未「ここではJavaの構築はしません もし,ことりの言うとおりに入力して下のような表示が出てきたら,Javaが準備できていないことになります Javaを準備して,また戻って来てくださいね あと,Javaはことりが教えたバージョンで進めます」
'java' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ことり「よし,じゃあKotlinをインストールしちゃおう♪ Kotlinをインストールするにはここだね」
凛「確かにKotlinって書いてあるけど,英語で書かれてて何が書かれているのかわからないにゃ・・・」
ことり「こういう機能を追加したとか,こういうバグがあったから直しましたとか,どういう変更があったかが書かれているみたいだね 今のところはそんなに気にしなくていいかな~」
凛「すぐにわかるなんて,やっぱりことりちゃんはすごいにゃ!」
ことり「ありがとう,凛ちゃん♪ それじゃ,一番下のDownloadの項目にある kotlin-compiler-1.0.6.zip があるからそれをクリックして」
凛「おぉ,なんかファイルをダウンロードしてきた!」
ことり「この中にKotlinを翻訳する物が入ってるよ 中に kotlinc っていうフォルダがあるから,これをC:\Program Filesの中に移しちゃいましょう」
凛「移したにゃ! これでKotlinが動くの?」
ことり「もうちょっとかな~ これからパスを通すよ~」
凛「パスを通す?」
ことり「さっきjava -versionって入力したでしょ? これと同じようなことができるようにするの」
凛「ふーん,それはどうすればいいの?」
ことり「スタートボタンを右クリックしてシステムを選ぶの するとウィンドウが出てくるからその中にあるシステムの詳細設定をクリック♪」
凛「ことりちゃん,ちょっと待ってにゃ!・・・システムを選んで,システムの詳細設定・・・OKにゃ!」
ことり「はい♪ それじゃ,出てきたウィンドウの中に環境変数っていうボタンがあるからそれをクリックして,システム変数の欄にPathっていう欄があるからそれを選択して編集ボタンをクリック♪」
凛「わ!ここにも色々英語が・・・」
ことり「凛ちゃん英語が苦手だけど我慢して!右上に新規ボタンがあるからそれをクリックすると,入力欄が出てくるからC:\Program Files\kotlinc\binを入力してOKボタンをクリック♪」
凛「できたにゃ!」
ことり「これでKotlinが動くようになったかな ちょっと確認したいから,コマンドプロンプトにこれを入力してみて」
> kotlin -version
ことり「そしてこれが出てきたら準備OK!」
Kotlin version 1.0.6 (JRE 1.8.0_121-b13)
凛「入力して・・・あ!出てきたにゃ!」
ことり「これでKotlinインストール完了♪ お疲れ様でした♪」
凛「お疲れ様!本当にちょっと疲れたにゃ・・・」
ことり「じゃあ,休憩してから実際にKotlinを書こっか♪ 休憩のためにマカロン持ってきたよ♪」
凛「おぉ,おいしそうにゃー」
プロローグ
!注意!
このKotlin勉強では,ラブライブ!の登場人物であることりちゃん,凛ちゃんがレギュラーとして登場しますが,本編に一切関係ないプログラミング言語が大きく関係します.なので,読者の感性や場面,独自の設定などによって 著しいキャラ崩壊 の可能性があります,ご了承ください.
また,他のμ'sのメンバーは天の声として海未ちゃんが登場予定です.他は登場予定はありません.が,何かの要員で登場するかも?
追加設定
一応プログラムに関する設定は勝手に追加しました(勝手につけて申し訳ありません).
- ことりちゃんは別言語でプログラミング経験があります.なので,プログラミングの知識を持っています.Kotlinは書いたことがありません.つまるところ,ことりちゃんは私ですね.
- 凛ちゃんは一切プログラミングをしたことがありません.これからプログラミングを学んでいく初心者です.学ぶ意欲旺盛ですが,如何せんプログラミングについて知識はほぼ皆無なので,経験者とかしたら変な考え方をするかも?温かい目で見てください
最終目的
Kotlinについて理解!私自身Kotlinを知らないので基礎的な文法と強みを重点的に理解するつもりです.最終的にはKotlin何かを作成予定ですが,何を作るか決めていないし,私もKotlinの強みが全然わかってないため頓挫するかもしれません(頓挫しないよう頑張ります).
その他
- 最初に凛ちゃんが「Kotlinスタートブック-新しいAndroidプログラミング-」という書籍を持ってきます.これを要約した様にしていくつもりです.実際になるかわかりませんが・・・
- 開発環境OS:Windows10 Home
最後に
さて,前置きが長くなりましたが,これからことりちゃんと凛ちゃんのKotlin勉強が始まります!
凛「ことりちゃん,みてみて!」
ことり「わ! 凛ちゃん,びっくりしたよ~・・・」
凛「あ,ごめんね,ことりちゃん・・・でも,これを見てほしいにゃ!」

凛「Kotlin(ことりん)だにゃ!」
ことり「・・・あの,Kotlinがどうかしたの?」
凛「凛,Kotlinを勉強しようと思うんだ~」
ことり「おぉ!?いいね!でも,またどうして?」
凛「Kotlinっていう名前,凛とことりちゃんに似てるからにゃ!」
ことり「なんか,勉強するには変な理由だね・・・」
凛「けど,凛一人だと上手くいかないと思うから,よかったらことりちゃんも一緒に勉強しない?」
ことり「私も!?・・・うーん,どうしようかなー」
凛「凛とことりちゃんに似てる名前だよ!?なんか,親近感湧かない!?」
ことり「確かに,名前が似てるのには愛着というか,そういう気持ちはわかるような・・・」
凛「でしょでしょ?なら凛と一緒に勉強しよう!」
ことり「なんか,半ば強引なような気がするけど,凛ちゃんが頑張るなら私も頑張ろうかな♪」
凛「さっすがことりちゃん!頼りになるにゃー」
ことり「ありがと,凛ちゃん♪なら,パソコン用意して始めちゃおう♪」
凛「おー!」