Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Kotlinではじめる
Webアプリケーション入門
虎の⽳ 開発室
唐崎 蓉⼦
1
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
タイムテーブル
2
時刻 内容
19:30 開会案内・会場説明 等
19:35 Kotlin について
20:00 開発環境セットア...
はじめに
3
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
自己紹介
‣ 唐崎蓉⼦ ( Yoko Karasaki )
‣ 株式会社 虎の⽳ 開発室
‣ PHP / Ionic (Angula...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
対象
‣ Kotlinで何かWebサービスを作ってみたい
‣ Java⾔語開発経験者で、Kotlin⾔語も興味がある
‣ アニメ・漫...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
勉強会のゴール
‣ Kotlin の特徴を理解する
‣ Kotlin で簡単な Web アプリケーションが作れる
6
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
進め方
7
‣ Kotlin の簡単な説明とハンズオン(+演習)
‣ 分からない部分は随時質問を受け付けます!
‣ 周りのスタッフに...
Kotlin について
8
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Kotlin とは?
‣ Java VM ⾔語
‣ 100% interoperable with Java

(Javaと完全互換...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
文法
10
class MyClass : BaseClass {
fun main(args: Array<String>) : ...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
変数の定義(val / var)
11
fun main() {
val readOnly: String = "Read Only...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Nullable/Null許容 (Optional)
12
fun getLength(str: String?): Int? {
...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
型
13
‣ Double
‣ Float
‣ Long
‣ Int
‣ Short
‣ Byte
‣ Char
‣ Boolean...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
特殊な型 Any
14
‣ 全ての型を代⼊可能
‣ null と Optional 型(Null許容)は⼊れられない
fun mai...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
特殊な型 Unit
15
‣ Java で⾔うところの void
‣ 関数返り値の型を省略した場合は Unit になる
fun ma...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
特殊な型 Nothing
16
‣ 値が存在しないことを表す
‣ 他の全ての型に代⼊可能な型
‣ 関数の返り値に指定すると、⼊ったら...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
特殊な型 Nothing
17
fun getName(user: User) {
val name = user.name
?: ...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
特殊な型 Nothing
18
fun getName(user: User) {
val name = user.name
?: ...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Data Class
// Java
public class User {
private String name;
privat...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Data Class
public class User {
private String name;
private int ag...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Data Class
data class User(
val name: String,
val age: Int
)
class...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
参考リンク・ドキュメント
22
1. Kotlin 公式ドキュメント
‣ http://kotlinlang.org/docs/re...
開発環境の

セットアップ
23
https://toranoana.github.io/kotlin-webapp/
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
今日作成するもの
‣ アニメ情報取得 API を使⽤して、

今期のアニメ⼀覧・詳細を表⽰
‣ http://api.moemoe....
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
手順
1. IntelliJ Idea のインストール
2. JDK のパスを確認 / gradle.properties 設定
3...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
ドキュメント
26
1.リポジトリ
‣ https://github.com/toranoana/kotlin-webapp.git...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
IntelliJ IDEA / JDK
‣ 以下のインストール
27
IntelliJ IDEA https://www.jetbr...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
プロジェクトの準備
$ git clone https://github.com/toranoana/kotlin-webapp.g...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
JDK のパスを確認(Mac)
$ /usr/libexec/java_home -V
Matching Java Virtual ...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
JDK のパスを確認(Win)
30
‣ 多くの場合は以下にインストールされている

( jdk1.8.0 はバージョンにより変わる...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
プロジェクトの準備
31
1. IntelliJ を起動
2. [ Import Project ] から

./kotlin-we...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
JDKのパス設定
32
※ ⾃分の環境の JDK を選択する

  (”Use Project SDK” の⽅ではありません)
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
Gradle ツールウィンドウ
33
‣ Gradleのツールウィンドウを開く
‣ View -> Tool Windows -> ...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
ビルド
34
‣ Gradleツールウィンドウ内の

kotlin-webapp

-> Tasks

-> application...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
ビルド
‣ http://localhost:8080/
35
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
ビルド
1. コード変更後、変更を反映するには再度

bootRun を実⾏
‣ kotlin-webapp

-> Tasks

...
フレームワーク / ライブラリ
について
37
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
フレームワーク
38
要素
フレームワーク名
ライブラリ名
説明
Web
Framework
Spring Boot 2.0
Web...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
アニメ情報取得 API
39
{
"title_short2": "",
"twitter_account": "milkyholm...
40
デモ
演習
41
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
演習 詳細ページの作成・遷移
‣ http://localhost:8080/detail/?id=673 

42
NO IMAGE
解説(デモ)
43
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
おさらい
44
‣ Kotlin の基本的な⽂法・特徴
‣ SpringBoot + Thymeleaf を使って Kotlin で...
Copyright  (C) 2018 Toranoana Inc. All Rights Reserved.
参考リンク・ドキュメント
45
‣ Kotlin 公式ドキュメント
‣ http://kotlinlang.org/docs/ref...
Prochain SlideShare
Chargement dans…5
×

Kotlinではじめる Webアプリケーション入門

「[秋葉原][とらのあな] オタク×Kotlin勉強会(第2回)」( https://yumenosora.connpass.com/event/82337/ )用説明資料。

  • Soyez le premier à commenter

Kotlinではじめる Webアプリケーション入門

  1. 1. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Kotlinではじめる Webアプリケーション入門 虎の⽳ 開発室 唐崎 蓉⼦ 1
  2. 2. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. タイムテーブル 2 時刻 内容 19:30 開会案内・会場説明 等 19:35 Kotlin について 20:00 開発環境セットアップ & 休憩 20:30 フレームワークとライブラリについて+ ハンズオン 20:50 演習 21:30 終了
  3. 3. はじめに 3
  4. 4. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 自己紹介 ‣ 唐崎蓉⼦ ( Yoko Karasaki ) ‣ 株式会社 虎の⽳ 開発室 ‣ PHP / Ionic (Angular) / Kotlin / (Ruby) ‣ 今期のアニメ ‣ ダリフラ / ゆるキャン△ / 宇宙よりも遠い場所 4
  5. 5. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 対象 ‣ Kotlinで何かWebサービスを作ってみたい ‣ Java⾔語開発経験者で、Kotlin⾔語も興味がある ‣ アニメ・漫画などオタク向けのWebサービスを
 作ってみたい 5
  6. 6. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 勉強会のゴール ‣ Kotlin の特徴を理解する ‣ Kotlin で簡単な Web アプリケーションが作れる 6
  7. 7. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 進め方 7 ‣ Kotlin の簡単な説明とハンズオン(+演習) ‣ 分からない部分は随時質問を受け付けます! ‣ 周りのスタッフに聞いてもOK!
 (社員証をつけています)
  8. 8. Kotlin について 8
  9. 9. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Kotlin とは? ‣ Java VM ⾔語 ‣ 100% interoperable with Java
 (Javaと完全互換性があり、相互運⽤が可能) ‣ 型推論付き静的型付け ‣ セミコロンレス 9
  10. 10. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 文法 10 class MyClass : BaseClass { fun main(args: Array<String>) : Int { var len = 0 for (arg in args) { len = arg.length } return len } } public class MyClass extends BaseClass { public int main(ArrayList<String> args) { int len = 0; for (String arg : args) { len = arg.length(); } return len; } } ‣ Kotlin ‣ Java
  11. 11. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 変数の定義(val / var) 11 fun main() { val readOnly: String = "Read Only" var writable: String = "Writable" readOnly = "Can't change" // NG writable = "Changed!" // OK } val 読み込み専⽤・変更不可 var 読み込み・書き換え可能
  12. 12. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Nullable/Null許容 (Optional) 12 fun getLength(str: String?): Int? { return str?.length } ‣ 型に ? をつけると Nullable(Null許容) になる ‣ ?. は safe call operator ‣ str が nullでない 場合のみ実⾏される ※ Java も標準ライブラリには Optional がある
  13. 13. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 型 13 ‣ Double ‣ Float ‣ Long ‣ Int ‣ Short ‣ Byte ‣ Char ‣ Boolean ‣ String ‣ Array
  14. 14. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 特殊な型 Any 14 ‣ 全ての型を代⼊可能 ‣ null と Optional 型(Null許容)は⼊れられない fun main() { val optional: String? = "optional" var value: Any value = 1 // OK value = "hoge" // OK value = optional // NG value = null // NG }
  15. 15. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 特殊な型 Unit 15 ‣ Java で⾔うところの void ‣ 関数返り値の型を省略した場合は Unit になる fun main(value: String?) { println(value) } // ↑↓ 同じ fun main(value: String?): Unit { println(value) }
  16. 16. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 特殊な型 Nothing 16 ‣ 値が存在しないことを表す ‣ 他の全ての型に代⼊可能な型 ‣ 関数の返り値に指定すると、⼊ったら抜けない
 関数になる fun fail(message: String): Nothing { logger.error("Error message : $message") throw IllegalStateException(message) }
  17. 17. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 特殊な型 Nothing 17 fun getName(user: User) { val name = user.name ?: throw Exception("User is required") } ‣ エルビス演算⼦ ‣ ?: 前が null でない時は
 ?: の前を評価 ‣ null の時は ?: の後
 を評価
  18. 18. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 特殊な型 Nothing 18 fun getName(user: User) { val name = user.name ?: throw Exception("User is required") } fun fail(message: String): Nothing { logger.error("Error message : $message") throw IllegalStateException(message) } fun getName(user: User) { val name = user.name ?: fail("User is required") }
  19. 19. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Data Class // Java public class User { private String name; private int age; } // Kotlin data class User( val name: String, val age: Int ) 19 ‣ データを保持するためのクラス
  20. 20. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Data Class public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } } class MyClass { public void main(args:Array<String>) { User user = new User(); user.setName("My Name"); user.setAge(10); System.out.println(user.getName()); } } 20 ‣ Java の場合
  21. 21. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Data Class data class User( val name: String, val age: Int ) class MyClass { fun main(args: Array<String>) { val user = User("My Name", 20) println(user.name) } } 21 ‣ Kotlin の場合
  22. 22. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 参考リンク・ドキュメント 22 1. Kotlin 公式ドキュメント ‣ http://kotlinlang.org/docs/reference/ 2. Kotlin ドキュメント⽇本語版(⾮公式) ‣ https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/ 3. Kotlin勉強会(第1回)の資料 ‣ https://www.slideshare.net/toranoana-lab/kotlin-88458802 本⽇配った補⾜資料も是⾮ご活⽤ください!
  23. 23. 開発環境の
 セットアップ 23 https://toranoana.github.io/kotlin-webapp/
  24. 24. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 今日作成するもの ‣ アニメ情報取得 API を使⽤して、
 今期のアニメ⼀覧・詳細を表⽰ ‣ http://api.moemoe.tokyo/anime/v1/master/2018/1?ogp=1 24
  25. 25. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 手順 1. IntelliJ Idea のインストール 2. JDK のパスを確認 / gradle.properties 設定 3. プロジェクトのインポート 4. ビルド / 動作確認 25 ※ 動作確認後に休憩をはさみます
  26. 26. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. ドキュメント 26 1.リポジトリ ‣ https://github.com/toranoana/kotlin-webapp.git 2. ハンズオン⽤ドキュメント ‣ https://toranoana.github.io/kotlin-webapp/
  27. 27. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. IntelliJ IDEA / JDK ‣ 以下のインストール 27 IntelliJ IDEA https://www.jetbrains.com/idea/ Java SE
 Development Kit 
 (JDK) http://www.oracle.com/technetwork/ java/javase/downloads/jdk8- downloads-2133151.html
  28. 28. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. プロジェクトの準備 $ git clone https://github.com/toranoana/kotlin-webapp.git 28 ‣ Git のリポジトリを clone ‣ または zip をダウンロードして解凍
  29. 29. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. JDK のパスを確認(Mac) $ /usr/libexec/java_home -V Matching Java Virtual Machines (1): 9.0.4, x86_64:"Java SE 9.0.4" /Library/ Java/JavaVirtualMachines/jdk-9.0.4.jdk/ Contents/Home /Library/Java/JavaVirtualMachines/ jdk-9.0.4.jdk/Contents/Home 29 ‣ Mac の場合
  30. 30. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. JDK のパスを確認(Win) 30 ‣ 多くの場合は以下にインストールされている
 ( jdk1.8.0 はバージョンにより変わる) ‣ C:Program FilesJavajdk1.8.0binjavac ‣ C:Program Files(x_86)Javajdk1.8.0binjavac
  31. 31. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. プロジェクトの準備 31 1. IntelliJ を起動 2. [ Import Project ] から
 ./kotlin-webapp/build.gradle を選択
  32. 32. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. JDKのパス設定 32 ※ ⾃分の環境の JDK を選択する
   (”Use Project SDK” の⽅ではありません)
  33. 33. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. Gradle ツールウィンドウ 33 ‣ Gradleのツールウィンドウを開く ‣ View -> Tool Windows -> Gradle
  34. 34. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. ビルド 34 ‣ Gradleツールウィンドウ内の
 kotlin-webapp
 -> Tasks
 -> application
 -> bootRun
  35. 35. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. ビルド ‣ http://localhost:8080/ 35
  36. 36. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. ビルド 1. コード変更後、変更を反映するには再度
 bootRun を実⾏ ‣ kotlin-webapp
 -> Tasks
 -> application
 -> bootRun 2. http://localhost:8080/ 
 をリロード 36
  37. 37. フレームワーク / ライブラリ について 37
  38. 38. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. フレームワーク 38 要素 フレームワーク名 ライブラリ名 説明 Web Framework Spring Boot 2.0 Webアプリケーションを 開発する際のフレームワーク テンプレート
 エンジン Thymeleaf 純粋な HTML として
 テンプレートを記述できる HTTP通信 Fuel Kotlin で書かれた HTTP 通信ライブラリ JSONパース Gson JSONデータと Java オブジェクトを相互に変換
  39. 39. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. アニメ情報取得 API 39 { "title_short2": "", "twitter_account": "milkyholmes", "public_url": "https://sp.bushiroad.com/special_tv/", "title_short1": "ミルキィホームズ", "sex": 0, "ogp": { "og_title": "", "og_type": "", "og_description": "", "og_url": "", "og_image": "", "og_site_name": "" }, "twitter_hash_tag": "milkyholmes", "id": 673, "sequel": 5, "created_at": "2018-01-07 20:29:38.0", "city_name": "", "cours_id": 17, "title": "探偵オペラ ミルキィホームズ アルセーヌ 華麗なる欲望", "city_code": 0, "title_short3": "", ‣ http://api.moemoe.tokyo/anime/v1/master/2018/1?ogp=1
  40. 40. 40 デモ
  41. 41. 演習 41
  42. 42. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 演習 詳細ページの作成・遷移 ‣ http://localhost:8080/detail/?id=673 
 42 NO IMAGE
  43. 43. 解説(デモ) 43
  44. 44. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. おさらい 44 ‣ Kotlin の基本的な⽂法・特徴 ‣ SpringBoot + Thymeleaf を使って Kotlin で
 簡単な Web アプリケーションの作成
  45. 45. Copyright  (C) 2018 Toranoana Inc. All Rights Reserved. 参考リンク・ドキュメント 45 ‣ Kotlin 公式ドキュメント ‣ http://kotlinlang.org/docs/reference/ ‣ Try Kotlin: Simplest version ‣ https://try.kotlinlang.org

×