Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

まだJSPやってない

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

初心者の視界 Java

Slide 14

Slide 14 text

実際 Java Spring Gradle Thymeleaf Mybatis

Slide 15

Slide 15 text

例えばIDEの画面

Slide 16

Slide 16 text

例えばIDE Java Java

Slide 17

Slide 17 text

例えばIDE Spring Gradle

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

やってみる

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

事前にわかっている情報

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

FlutterはDartで書く

Slide 26

Slide 26 text

Dartはプログラミング言語

Slide 27

Slide 27 text

以上

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Flutter

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Dart?

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

詳細化してみた

Slide 35

Slide 35 text

Pub Flutter Flutter Flutter

Slide 36

Slide 36 text

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の間 のインターフェース)

Slide 37

Slide 37 text

わかったこと

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

感想

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

ハマった例

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

PostgreSQL MySQL H2

Slide 60

Slide 60 text

PostgreSQL MySQL H2

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

PostgreSQL MySQL H2 Database Engine

Slide 63

Slide 63 text

名前って重要

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

データベース PostgreSQL MySQL H2 Database

Slide 68

Slide 68 text

RDB PostgreSQL MySQL H2 Database データベース

Slide 69

Slide 69 text

分類するとわかりやすい

Slide 70

Slide 70 text

やってみる

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

わかったこと

Slide 73

Slide 73 text

NoSQLに種類がある

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

NoSQLって「Not Only SQL」な のね

Slide 77

Slide 77 text

感想

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

やっぱり名前って重要

Slide 82

Slide 82 text

合ってるかわからない

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

Wikipedia頼み

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

もう1つやってみた

Slide 88

Slide 88 text

Flutterで

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

DartはFlutter?

Slide 91

Slide 91 text

コレジャナイ感・・・

Slide 92

Slide 92 text

DartはFlutterに含まれる

Slide 93

Slide 93 text

has-a関係

Slide 94

Slide 94 text

Flutter Dart Pub

Slide 95

Slide 95 text

まだ少し違和感

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

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

Slide 99

Slide 99 text

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

Slide 100

Slide 100 text

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

Slide 101

Slide 101 text

参考 - 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

Slide 102

Slide 102 text

深掘りするには

Slide 103

Slide 103 text

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

Slide 104

Slide 104 text

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

Slide 105

Slide 105 text

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

Slide 106

Slide 106 text

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

Slide 107

Slide 107 text

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関係

Slide 108

Slide 108 text

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関係

Slide 109

Slide 109 text

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

Slide 110

Slide 110 text

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

Slide 111

Slide 111 text

分類してみて

Slide 112

Slide 112 text

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

Slide 113

Slide 113 text

is-a関係で用語を学ぶ

Slide 114

Slide 114 text

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

Slide 115

Slide 115 text

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

Slide 116

Slide 116 text

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

Slide 117

Slide 117 text

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

Slide 118

Slide 118 text

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

Slide 119

Slide 119 text

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

Slide 120

Slide 120 text

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

Slide 121

Slide 121 text

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

Slide 122

Slide 122 text

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

Slide 123

Slide 123 text

トラブルに弱くなる

Slide 124

Slide 124 text

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

Slide 125

Slide 125 text

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

Slide 126

Slide 126 text

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

Slide 127

Slide 127 text

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

Slide 128

Slide 128 text

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

Slide 129

Slide 129 text

ビルドツール 歴史

Slide 130

Slide 130 text

歴史を調べるのは面白い

Slide 131

Slide 131 text

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

Slide 132

Slide 132 text

その他いろいろ

Slide 133

Slide 133 text

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

Slide 134

Slide 134 text

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

Slide 135

Slide 135 text

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

Slide 136

Slide 136 text

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

Slide 137

Slide 137 text

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

Slide 138

Slide 138 text

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

Slide 139

Slide 139 text

その人のレイアウト

Slide 140

Slide 140 text

他の人のレイアウト

Slide 141

Slide 141 text

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

Slide 142

Slide 142 text

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

Slide 143

Slide 143 text

持ってる武器を使おう

Slide 144

Slide 144 text

まとめ

Slide 145

Slide 145 text

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