Upgrade to Pro — share decks privately, control downloads, hide ads and more …

新人研修講師の体験を通して考える自己学習のアプローチ

 新人研修講師の体験を通して考える自己学習のアプローチ

関ジャバ'19 6月度 で登壇した際の資料です。
https://kanjava.connpass.com/event/134119/

キット

June 20, 2019
Tweet

More Decks by キット

Other Decks in Programming

Transcript

  1. 新人研修講師の体験を
    通して考える自己学習の
    アプローチ
    2019/06/20 関ジャバ'19 6月度

    View Slide

  2. 自己紹介
    名前:キット
    属性:プログラマー、講師
    最近の興味:学習
    初心者向け勉強会企画してます

    View Slide

  3. 新人向けの
    Javaプログラミング研修講師を
    しています

    View Slide

  4. 受講生のフィードバックを聞いて
    いるとプログラミング始めたての
    頃の気持ちを
    思い出した

    View Slide

  5. 自分も新しい技術を学ぶ際には
    同じことに陥っているはず

    View Slide

  6. 彼らの問題を客観的に
    見て自分の学習方法を
    改善できないかな

    View Slide

  7. 目次
    - 取り組んでいる技術が何かわかってない問題
    - 用語やツールの関係がわからない問題
    - 研修でテキストエディタ使う問題
    - その他いろいろ

    View Slide

  8. 今取り組んでる技術が何かイマ
    イチわかってない問題

    View Slide

  9. 目次
    - 取り組んでいる技術が何かわかってない問題
    - 用語やツールの関係がわからない問題
    - 研修でテキストエディタ使う問題
    - その他いろいろ

    View Slide

  10. 「JSPサーブレットプログラミング
    について学習した」

    View Slide

  11. まだJSPやってない

    View Slide

  12. まだ学習が浅い人はざっくりと大
    きな枠で括りがち

    View Slide

  13. 初心者の視界
    Java

    View Slide

  14. 実際
    Java
    Spring
    Gradle
    Thymeleaf
    Mybatis

    View Slide

  15. 例えばIDEの画面

    View Slide

  16. 例えばIDE
    Java
    Java

    View Slide

  17. 例えばIDE
    Spring
    Gradle

    View Slide

  18. 視界がぼんやりしてると
    学習時に混乱する

    View Slide

  19. 視界を詳細化することを
    意識する

    View Slide

  20. やってみる

    View Slide

  21. 自分が全くわからないものでや
    らないと

    View Slide

  22. そういえば最近
    Flutter気になってた
    (Java関連じゃなくてごめんなさ
    い)

    View Slide

  23. 事前にわかっている情報

    View Slide

  24. Flutterはモバイルアプリを
    作るためのフレームワーク

    View Slide

  25. FlutterはDartで書く

    View Slide

  26. Dartはプログラミング言語

    View Slide

  27. 以上

    View Slide

  28. View Slide

  29. Flutter

    View Slide

  30. View Slide

  31. Dart?

    View Slide

  32. 知ってるワードなら
    認識できる
    (今回は「dart」)

    View Slide

  33. その他は知らないので地道に調
    べる

    View Slide

  34. 詳細化してみた

    View Slide

  35. Pub
    Flutter
    Flutter
    Flutter

    View Slide

  36. itemBuilder: /*1*/ (context, i) {
    if (i.isOdd) return Divider();
    /*2*/
    final index = i ~/ 2; /*3*/
    if (index >= _suggestions.length) {
    _suggestions.addAll(generateWordPairs().take(10)); /*4*/
    }
    return _buildRow(_suggestions[index]);
    });
    sky engine
    (DartとFlutter Engineの間
    のインターフェース)

    View Slide

  37. わかったこと

    View Slide

  38. Pubというパッケージ管理ツール
    を使っている

    View Slide

  39. dart packagesはPubで取得
    してきた外部ライブラリ

    View Slide

  40. FlutterはDartの標準ライブラリを
    直接使っていない

    View Slide

  41. DartとFlutterについてわかったこと
    - Pubというパッケージ管理ツールを使っている
    - dart packagesはPubで取得してきた外部ライブラリ
    - FlutterはDartの標準ライブラリを直接使っていない

    View Slide

  42. 感想

    View Slide

  43. ドキュメントを漫然と読む
    だけでは詳細化は難しい

    View Slide

  44. 「これは何なのか」から調べてド
    キュメントを読んで
    みたら良さそう

    View Slide

  45. ドキュメントが違うサイトなら「違
    うツール」だと明確にわかる

    View Slide

  46. 詳細化してもコードは
    書けない

    View Slide

  47. 詳細化しても各々の関係性は
    わからない

    View Slide

  48. 客観的にはまだ視界がぼんやり
    してるかもしれないが自分では
    気づけない

    View Slide

  49. 詳細化をミスると的外れな
    ワードで調べ続けてハマる

    View Slide

  50. 普通にドキュメント流し読みする
    より楽しい

    View Slide

  51. ハマった例

    View Slide

  52. Dartプロジェクトにあるyamlファ
    イルは全部Pubだと
    思ってたが違っていた

    View Slide

  53. 詳細化にチャレンジした感想
    - ドキュメントを漫然と読むだけでは分類は難しい
    - 「これは何なのか」を意識しながら読んでみたら良さそう
    - ドキュメントが違うサイトなら「違うツール」だとわかるが同
    じサイトだと「同じツール」と思いがち
    - 詳細化してもコードは書けない
    - 詳細化しても各々の関係性はわからない
    - 詳細化をミスると的外れなワードで調べ続けてハマる

    View Slide

  54. 詳細化まとめ
    どこまで詳細化できてるか自分ではわからないが、チャレン
    ジすることでわかることが結構ある。
    意識してやってみると詳細化できてない自分に気づける。

    View Slide

  55. 用語やツールの関係が
    わからなくて混乱する問題

    View Slide

  56. 目次
    - 取り組んでいる技術が何かわかってない問題
    - 用語やツールの関係がわからない問題
    - 研修でテキストエディタ使う問題
    - その他いろいろ

    View Slide

  57. 今の演習ではPostgresを
    使ってるのにとりあえず
    前までの演習で使ったH2を
    起動する

    View Slide

  58. H2がPostgresと同じ、
    データベースだということがわ
    かっていない

    View Slide

  59. PostgreSQL
    MySQL
    H2

    View Slide

  60. PostgreSQL
    MySQL
    H2

    View Slide

  61. 名前に「SQL」って
    ついてないから別物

    View Slide

  62. PostgreSQL
    MySQL
    H2 Database Engine

    View Slide

  63. 名前って重要

    View Slide

  64. 名前は省略しない方が良い

    View Slide

  65. どうすればわかりやすい?

    View Slide

  66. マインドマップ使ってみる

    View Slide

  67. データベース
    PostgreSQL
    MySQL
    H2 Database

    View Slide

  68. RDB
    PostgreSQL
    MySQL
    H2 Database
    データベース

    View Slide

  69. 分類するとわかりやすい

    View Slide

  70. やってみる

    View Slide

  71. RDB
    PostgreSQL
    MySQL
    H2 Database
    データベース
    NoSQL
    ドキュメント指向
    MongoDB
    DynamoDB
    Key-Valueストア
    memchaed
    Redis
    グラフ指向

    View Slide

  72. わかったこと

    View Slide

  73. NoSQLに種類がある

    View Slide

  74. Key-ValueストアとNoSQLの関

    (同じ意味ぐらいに思ってた)

    View Slide

  75. ドキュメント指向データベースと
    いうものがある

    View Slide

  76. NoSQLって「Not Only SQL」な
    のね

    View Slide

  77. 感想

    View Slide

  78. それぞれをis-a関係で
    分類できた

    View Slide

  79. RDB
    PostgreSQL
    MySQL
    H2 Database
    データベース
    NoSQL
    ドキュメント指向
    MongoDB
    DynamoDB
    Key-Valueストア
    memchaed
    Redis
    グラフ指向

    View Slide

  80. それぞれの用語の関係性がはっ
    きりした

    View Slide

  81. やっぱり名前って重要

    View Slide

  82. 合ってるかわからない

    View Slide

  83. 一次情報に当たるものが
    なさそう

    View Slide

  84. Wikipedia頼み

    View Slide

  85. 見える化できるので自分の
    理解を人に説明しやすい

    View Slide

  86. RDB
    PostgreSQL
    MySQL
    H2 Database
    データベース
    NoSQL
    ドキュメント指向
    MongoDB
    DynamoDB
    Key-Valueストア
    memchaed
    Redis
    グラフ指向

    View Slide

  87. もう1つやってみた

    View Slide

  88. Flutterで

    View Slide

  89. Flutter
    モバイルアプリ
    フレームワーク
    Dart
    ionic
    React Native

    View Slide

  90. DartはFlutter?

    View Slide

  91. コレジャナイ感・・・

    View Slide

  92. DartはFlutterに含まれる

    View Slide

  93. has-a関係

    View Slide

  94. Flutter Dart Pub

    View Slide

  95. まだ少し違和感

    View Slide

  96. Flutterというフレームワークに
    Dartという言語が
    含まれる?

    View Slide

  97. Flutter SDK
    Dart SDK
    Pub
    Flutter標準ライブラリ
    Flutterテスト
    ライブラリ
    Dart標準ライブラリ
    Dart VM
    dartanalyzer

    View Slide

  98. そういえばJDKには
    何が含まれる?

    View Slide

  99. Tools
    javac
    javap
    Oracle JDK8
    UI Tool Kit
    java
    jar
    JVM
    Lang And Util
    Libraries
    Rich Internet
    Applications
    Integration
    Libraries
    Other Base
    Libraries
    javadoc
    jdeps
    Scripting
    Security
    Monitoring
    JConsole
    VisualVM
    JMC
    JFR
    JPDA
    JVM TI
    IDL
    RMI
    JavaDB
    Development
    jjs
    jrunscript
    Internationalization
    Web Services
    Troubleshooting
    keytool
    jarsigner
    policytool
    Java Web Start
    Applett
    JavaFX
    Swing
    IDL
    JDBC
    Math
    Collections
    Ref Objects
    Regular
    Expressions
    Logging
    Management
    Instrumentation
    Concurrency
    Utilities
    Reflection

    View Slide

  100. 「javac」は「Oracle JDK8」に含
    まれる「Tools」である

    View Slide

  101. 参考
    - https://docs.oracle.com/javase/8/docs/
    - https://docs.oracle.com/en/java/javase/12/index.html
    - https://ja.wikipedia.org/wiki/Java_Development_Kit
    - https://dart.dev/tools/sdk

    View Slide

  102. 深掘りするには

    View Slide

  103. RDB
    PostgreSQL
    MySQL
    H2 Database
    データベース
    NoSQL
    ドキュメント指向
    MongoDB
    DynamoDB
    Key-Valueストア
    memchaed
    Redis
    グラフ指向
    is-a関係

    View Slide

  104. RDB
    PostgreSQL
    MySQL
    H2 Database
    データベース
    NoSQL
    ドキュメント指向
    MongoDB
    DynamoDB
    Key-Valueストア
    memchaed
    Redis
    グラフ指向
    is-a関係

    View Slide

  105. PostgreSQLを理解しようと思う
    ならRDBを理解する

    View Slide

  106. RDBを理解しようと思うならデー
    タベースを理解する

    View Slide

  107. Tools
    javac
    javap
    Oracle JDK8
    UI Tool Kit
    java
    jar
    JVM
    Lang And Util
    Libraries
    Rich Internet
    Applications
    Integration
    Libraries
    Other Base
    Libraries
    javadoc
    jdeps
    Scripting
    Security
    Monitoring
    JConsole
    VisualVM
    JMC
    JFR
    JPDA
    JVM TI
    IDL
    RMI
    JavaDB
    Development
    jjs
    jrunscript
    Internationalization
    Web Services
    Troubleshooting
    keytool
    jarsigner
    policytool
    Java Web Start
    Applett
    JavaFX
    Swing
    IDL
    JDBC
    Math
    Collections
    Ref Objects
    Regular
    Expressions
    Logging
    Management
    Instrumentation
    Concurrency
    Utilities
    Reflection
    has-a関係

    View Slide

  108. Tools
    javac
    javap
    Oracle JDK8
    UI Tool Kit
    java
    jar
    JVM
    Lang And Util
    Libraries
    Rich Internet
    Applications
    Integration
    Libraries
    Other Base
    Libraries
    javadoc
    jdeps
    Scripting
    Security
    Monitoring
    JConsole
    VisualVM
    JMC
    JFR
    JPDA
    JVM TI
    IDL
    RMI
    JavaDB
    Development
    jjs
    jrunscript
    Internationalization
    Web Services
    Troubleshooting
    keytool
    jarsigner
    policytool
    Java Web Start
    Applett
    JavaFX
    Swing
    IDL
    JDBC
    Math
    Collections
    Ref Objects
    Regular
    Expressions
    Logging
    Management
    Instrumentation
    Concurrency
    Utilities
    Reflection
    has-a関係

    View Slide

  109. Oracle JDKを理解しようと
    思うなら含まれているツールを1
    つ1つ理解していく
    (つらい)

    View Slide

  110. Tools
    javac
    javap
    Oracle JDK8
    UI Tool Kit
    java
    jar
    JVM
    Lang And Util
    Libraries
    Rich Internet
    Applications
    Integration
    Libraries
    Other Base
    Libraries
    javadoc
    jdeps
    Scripting
    Security
    Monitoring
    JConsole
    VisualVM
    JMC
    JFR
    JPDA
    JVM TI
    IDL
    RMI
    JavaDB
    Development
    jjs
    jrunscript
    Internationalization
    Web Services
    Troubleshooting
    keytool
    jarsigner
    policytool
    Java Web Start
    Applett
    JavaFX
    Swing
    IDL
    JDBC
    Math
    Collections
    Ref Objects
    Regular
    Expressions
    Logging
    Management
    Instrumentation
    Concurrency
    Utilities
    Reflection

    View Slide

  111. 分類してみて

    View Slide

  112. 頭の中が整理された気がする

    View Slide

  113. is-a関係で用語を学ぶ

    View Slide

  114. has-a関係でプロダクトを学ぶ

    View Slide

  115. 分類まとめ
    - 分類すると用語の関連がはっきりする
    - 自分で分類した結果が合ってるかは自信ない
    - 用語の場合、一次情報に当たるものがない
    - Wikipedia良い
    - 見える化すると人に説明しやすい
    - is-a関係で用語、has-a関係でプロダクトを整理すると学
    習しやすい
    - 名前はやっぱり重要

    View Slide

  116. 既存の研修のやり方を考える

    View Slide

  117. テキストエディタ使う問題

    View Slide

  118. 目次
    - 取り組んでいる技術が何かわかってない問題
    - 用語やツールの関係がわからない問題
    - 研修でテキストエディタ使う問題
    - その他いろいろ

    View Slide

  119. テキストエディタでコード
    書く

    javacコマンド

    View Slide

  120. なぜ最初からIDE使わないの?

    View Slide

  121. 最初からIDEだとjavacコマンド
    の存在は知らないまま

    View Slide

  122. IDEが裏でどんなことやってるか
    わからないまま

    View Slide

  123. トラブルに弱くなる

    View Slide

  124. 初心者の頃、Gradleの
    有り難さがわからなかった
    (あって当たり前だった)

    View Slide

  125. テキストエディタ→IDE
    IDEの有り難さがわかる

    View Slide

  126. でも2週間もテキストエディタ使
    わなくてもいいかな

    View Slide

  127. そのツールが何を解決したくて
    登場したものかを知る

    View Slide

  128. 「歴史」を調べると背景が
    見えてくる

    View Slide

  129. ビルドツール 歴史

    View Slide

  130. 歴史を調べるのは面白い

    View Slide

  131. テキストエディタ問題まとめ
    - 最初にテキストエディタでコード書くのはありだと思う
    - ただし3日くらいでいい
    - ツールの登場背景を知っておくとどんな問題を解決する
    ものか見えてくる
    - 歴史を調べるのは面白い
    - Wikipediaやっぱり良い

    View Slide

  132. その他いろいろ

    View Slide

  133. 目次
    - 取り組んでいる技術が何かわかってない問題
    - 用語やツールの関係がわからない問題
    - 研修でテキストエディタ使う問題
    - その他いろいろ

    View Slide

  134. 「ServletとDBを接続することが
    できなかった。
    原因としては、Javascriptが
    理解できてないからだ」

    View Slide

  135. 自分の理解できていない
    ところが原因と思いがち

    View Slide

  136. 複数の技術を使い出すと
    混乱する

    View Slide

  137. 「みんな完成度の高いWebペー
    ジだったが、自分は写真表示と
    テーブルの作成しかできなかっ
    た」

    View Slide

  138. 「よくわからない隙間ができたり
    でWebページ作成が嫌いになり
    かけた」

    View Slide

  139. その人のレイアウト

    View Slide

  140. 他の人のレイアウト

    View Slide

  141. 学習してない技術を使ってる

    View Slide

  142. 他の人は学習した技術でいかに
    綺麗に見せるかを
    実践している

    View Slide

  143. 持ってる武器を使おう

    View Slide

  144. まとめ

    View Slide

  145. 研修講師で初学者と接するのは
    非常に勉強になる

    View Slide