Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Kotlinのチュートリアルをやってみた①

More than 3 years have passed since last update.

SwiftエンジニアがKotlinのチュートリアルをやってみたのでメモ書きします。今回はHello Worldをするまでです。IntelliJ IDEAを使ってやります。
ちなみに私はAndroidアプリをむかーしに1回だけ書いたことがある(eclipse / Java)程度で、IntelliJ IDEA、Kotlinは触ったことありません。

チュートリアル資料

https://kotlinlang.org/docs/tutorials/
※今回私はIntelliJ IDEAを使うのでその中でもこのページに沿って進めます。
https://kotlinlang.org/docs/tutorials/getting-started.html

Hello Worldをするまで

IntelliJ IDEAをダウンロードする

こちらのページで最新のCommunity版をダウンロードしました。古いIDEAやAndroidStudioを使う場合は手動でKotlinのプラグインを追加する必要があるようです。追加方法については以下のように書かれています。

Under Preferences (OSX) or Settings (Windows/Linux) > Plugins > 
Browse Repositories type Kotlin to find the Kotlin plugin. 
Click Install and follow the instructions.

新規プロジェクトを作成する

IntelliJ IDEAを立ち上げてCreate New Projectをします。
スクリーンショット 2017-04-08 16.23.53.png
KotlinはJDK 1.6以上で動くようです。Kotlin(Java)チェックボックスにチェックを入れてNextをクリックします。
スクリーンショット 2017-04-08 16.25.20.png
プロジェクト名を設定します。
スクリーンショット 2017-04-08 16.25.43.png
するとこんなかんじでプロジェクトが作られました。
スクリーンショット 2017-04-08 16.27.21.png

Kotlinファイルを作成する

srcフォルダの下にKotlinフォルダを作成します。srcフォルダの上で右クリックをし、New -> Kotlin File/Classを選択します。
スクリーンショット 2017-04-08 16.50.18.png
適当に名前を決めてOKをクリックします。
スクリーンショット 2017-04-08 16.50.44.png
ファイル追加ができました。
スクリーンショット 2017-04-08 17.03.42.png

Hello Worldを表示する

main関数を書きます。maiくらいまでタイプすると予測補完が出てきます。
スクリーンショット 2017-04-08 17.39.30.png
ここでEnterかtabを押すと補完が聞いてmain関数が入力されます。
スクリーンショット 2017-04-08 17.39.43.png
main関数の中にprintln("Hello, World!")と打ってみます。

ではいよいよ動かしてみます。一番簡単な実行方法は左のKotlinマークをクリックし、Run 'AppKt'を選択することだということなのでその通りにやってみます。
スクリーンショット 2017-04-09 0.05.31.png
するとRun tool windowに実行結果が表示され、Hello Worldを表示させることに成功しました。
スクリーンショット 2017-04-09 0.07.30.png

おまけ:快適に開発するために

保存時に自動でフォーマットをかける

http://qiita.com/suzuki-hoge/items/98df92eb44eb131de6eb#保存時にフォーマッタを実行する という記事に従って設定しました。とても便利です。

大文字小文字を区別しないで補完

IntelliJ IDEA -> PreferencesからEditor -> General -> Code Completionを選択し、Code sensitive CompletionをNoneにします。
スクリーンショット 2017-04-09 19.42.04.png
するとこのように大文字小文字関係なく補完が出て来るようになります。
スクリーンショット 2017-04-09 19.42.32.png

綴りチェックのOFF

造語などを書いた時にいちいち波線を引かれたくない時に設定します。
↓ちょっと見えにくいけどShouhinの部分に緑色の波線が入っている。
スクリーンショット 2017-04-09 19.55.25.png
IntelliJ IDEA -> PreferencesからEditor -> Inspections -> Spellingのチェックを外せば波線は表示されなくなります。
スクリーンショット 2017-04-09 19.59.26.png

.gitignore

こちらをまるっとコピーして入れました。
https://github.com/JetBrains/kotlin/blob/master/.gitignore

コマンド:名前からアクションを見つける

Command + Shift + Aで設定系のことも検索できます。例えばwhiteと入力するとwhite spaceの設定などが表示されます。
スクリーンショット 2017-04-09 19.01.18.png

警告対処

※結論から言うと、私は放置しておくことにしました。ので、興味ある人のみ最後まで読んでみてください。

警告内容

初めてHello Worldを実行した時にコンソールにこんなメッセージが出ていました。

objc[16282]: Class JavaLaunchHelper is implemented in both 
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java and 
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib.
One of the two will be used. Which one is undefined.

スクリーンショット 2017-04-09 0.08.21.png

実行はできているものの不穏なメッセージが表示されています。

対処法調査

stack over flowに辿り着きました。
http://stackoverflow.com/questions/20794751/class-javalaunchhelper-is-implemented-in-both-one-of-the-two-will-be-used-whic
どうやらJDK 1.7.0_45時点から発見されているバグであり、JDK 1.8.0_92時点でもそれは直っていないとのこと。執筆時最新バージョンはJDK 1.8.0_121だったのでまずは最新バージョンを入れて直っていないか確かめることにしました。

対処実行

JDKはこちらからダウンロードし、指示に従ってインストールをしていきます。インストールが終わったらIntelliJで設定をします。File -> Project Structureを選択します。
スクリーンショット 2017-04-09 12.49.16.png
Project SDKを設定する箇所があるので、New -> JDKを選択します。
スクリーンショット 2017-04-09 14.00.31.png
JDKを選択する画面が出てくるのでJDK 1.8.0_121を指定します。
スクリーンショット 2017-04-09 13.28.23.png
もしJDKの場所がどこかわからなかったら以下のコマンドラインツールで以下のコマンドを打ってみてください。パスが表示されます。
/usr/libexec/java_home -V
スクリーンショット 2017-04-09 13.27.47.png

JDKを最新に指定できたところで再度プログラムを実行してみます。が、またも同じ警告。しょうがないので先程のstack over flowに書かれていた通り、Java 7u21を使用してみることにします。こちらのページからJava 7u21をダウンロードします。アーカイブからダウンロードするにはOracleのプロファイルを作成する必要があります(アカウント登録のようなもの)。ダウンロードしたらインストールしてIntelliJにセットした上で実行します。すると警告なく実行できました。
スクリーンショット 2017-04-09 13.30.04.png

こうして解決したものの、古いJDK使うのもアレだし警告出てても実行自体はできるので私は最新版のJDK 1.8.0_121を使うことにしました。何か問題が出てきたらまたその時考えます。

感想

開発開始までが早い

開発開始までにやる環境構築が少なく、すぐに開発に取り掛かることができて非常に良かったです。

現在カーソルを合わせている関数名が表示されるのは面白い

今カーソルを合わせているところの関数名が上部に表示されるのは面白いなと思いました。
スクリーンショット 2017-04-09 19.33.22.pngスクリーンショット 2017-04-09 19.33.31.png

.gitignoreも表示できるのが良い

Xcodeだと(たぶん)Xcode内で.gitignoreを表示することはできませんが、IntelliJではできます。頻繁に編集するわけではありませんがいちいちコマンドラインツールを立ち上げることなく編集できるのは便利だと思いました。
スクリーンショット 2017-04-09 20.15.07.png

保存済みかどうかがわかりにくい

Xcodeの場合は保存していないファイルはグレーになりますが
スクリーンショット 2017-04-09 19.36.59.png
intelliJは特に変化がないように思います。保存していなかったとしても実行時に自動保存されるようなので特に問題はないのですがXcode, eclipseを触ってきた身としては少し戸惑いを感じました。

akatsuki174
iOS→Androidエンジニアになりました。それなりに使える言語はSwift, Objective-C, Kotlin, Java。 UX, データ分析, グロースハック, デザイン, 自然言語処理にも興味あり。 1分野に固まらず、いろんな分野のことについて書いていこうと思います。
techtrain
プロのエンジニアを目指すU30(30歳以下)の方に現役エンジニアにメンタリングもらえるコミュニティです。
https://techbowl.co.jp/techtrain/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away