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

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

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

83351f532f43b5ec23165a301046a7de?s=128

キット

June 20, 2019
Tweet

Transcript

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

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

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

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

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

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

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

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

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

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

  11. まだJSPやってない

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

  13. 初心者の視界 Java

  14. 実際 Java Spring Gradle Thymeleaf Mybatis

  15. 例えばIDEの画面

  16. 例えばIDE Java Java

  17. 例えばIDE Spring Gradle

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

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

  20. やってみる

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

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

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

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

  25. FlutterはDartで書く

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

  27. 以上

  28. None
  29. Flutter

  30. None
  31. Dart?

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

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

  34. 詳細化してみた

  35. Pub Flutter Flutter Flutter

  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の間 のインターフェース)
  37. わかったこと

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

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

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

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

  42. 感想

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

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

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

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

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

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

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

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

  51. ハマった例

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

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

    - 詳細化しても各々の関係性はわからない - 詳細化をミスると的外れなワードで調べ続けてハマる
  54. 詳細化まとめ どこまで詳細化できてるか自分ではわからないが、チャレン ジすることでわかることが結構ある。 意識してやってみると詳細化できてない自分に気づける。

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

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

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

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

  59. PostgreSQL MySQL H2

  60. PostgreSQL MySQL H2

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

  62. PostgreSQL MySQL H2 Database Engine

  63. 名前って重要

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

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

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

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

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

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

  70. やってみる

  71. RDB PostgreSQL MySQL H2 Database データベース NoSQL ドキュメント指向 MongoDB DynamoDB

    Key-Valueストア memchaed Redis グラフ指向
  72. わかったこと

  73. NoSQLに種類がある

  74. Key-ValueストアとNoSQLの関 係 (同じ意味ぐらいに思ってた)

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

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

  77. 感想

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

  79. RDB PostgreSQL MySQL H2 Database データベース NoSQL ドキュメント指向 MongoDB DynamoDB

    Key-Valueストア memchaed Redis グラフ指向
  80. それぞれの用語の関係性がはっ きりした

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

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

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

  84. Wikipedia頼み

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

  86. RDB PostgreSQL MySQL H2 Database データベース NoSQL ドキュメント指向 MongoDB DynamoDB

    Key-Valueストア memchaed Redis グラフ指向
  87. もう1つやってみた

  88. Flutterで

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

  90. DartはFlutter?

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

  92. DartはFlutterに含まれる

  93. has-a関係

  94. Flutter Dart Pub

  95. まだ少し違和感

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

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

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

  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
  100. 「javac」は「Oracle JDK8」に含 まれる「Tools」である

  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

  102. 深掘りするには

  103. RDB PostgreSQL MySQL H2 Database データベース NoSQL ドキュメント指向 MongoDB DynamoDB

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

    Key-Valueストア memchaed Redis グラフ指向 is-a関係
  105. PostgreSQLを理解しようと思う ならRDBを理解する

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

  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関係
  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関係
  109. Oracle JDKを理解しようと 思うなら含まれているツールを1 つ1つ理解していく (つらい)

  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
  111. 分類してみて

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

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

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

  115. 分類まとめ - 分類すると用語の関連がはっきりする - 自分で分類した結果が合ってるかは自信ない - 用語の場合、一次情報に当たるものがない - Wikipedia良い -

    見える化すると人に説明しやすい - is-a関係で用語、has-a関係でプロダクトを整理すると学 習しやすい - 名前はやっぱり重要
  116. 既存の研修のやり方を考える

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

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

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

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

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

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

  123. トラブルに弱くなる

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

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

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

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

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

  129. ビルドツール 歴史

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

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

    - Wikipediaやっぱり良い
  132. その他いろいろ

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

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

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

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

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

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

  139. その人のレイアウト

  140. 他の人のレイアウト

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

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

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

  144. まとめ

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