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

プロになるJavaでチート能力を手にして完全勝利

 プロになるJavaでチート能力を手にして完全勝利

2022年4月18日に開催されたJJUGナイトセミナーでの登壇資料です
https://jjug.doorkeeper.jp/events/135559

Naoki Kishida

April 18, 2022
Tweet

More Decks by Naoki Kishida

Other Decks in Programming

Transcript

  1. プロになるJava • 仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 • Javaの文法だけではなく、ツールやSpring Boot、データベースまで1冊で紹介 • 著者 – きしだ

    なおき - Java言語、プログラミング – 山本 ユースケ - IntelliJ IDEA、ツール – 杉山 貴章 - Spring Boot + DB • 2022年3月19日発売 – すでに2刷 • 技術評論社
  2. コンセプト • 対象 – 就職・転職したい人 – プログラミングの仕事のスキルをあげたい人 – プログラミング未経験者 •

    非対象 – 日常の作業をプログラムで効率化したい人 • そんな人はJavaを選ばないので
  3. コンセプト • 目的 – Webアプリケーションのプログラミングに携われる • 内容 – プログラミング •

    処理を書けるようにする – IDE • IntelliJ IDEA – Web • HTTPプロトコル • Spring Boot • データベース https://twitter.com/javarevisited/status/1489090687551242240
  4. コンセプト • 入口は低く、出口は高く – 目標を低く設定することで「わかりやすい」を 達成する本が多い – 目標は高め • 知っておくべきことにもかかわらず到達しにくいことを

    提示しておく – 計算複雑性、オートマトン、スタック・キュー、HTTPプロトコル • しかしなるべくスムーズに段差なく – 段差はないが急にはなる・・・
  5. プロになるJavaの インストラクショナルデザイン • 教える題材の構造ではなく理解の構造にしたがって教える – 教訓3 教える理由をはっきりさせる – 教訓4 成功の基準をはっきりさせる

    – 教訓5 標的行動を見せてやらせて確認させる – 教訓9 誤答を教える – 教訓11 学び手を知る – 教訓14 学ばせて、楽しませる 職業プログラマになる Swing 練習問題 JShell オープンチャットでレベル感を知る
  6. わかりやすさ • 難しい表現をさける – プログラミングの本は難しい言葉を使いがち – 読みやすい表現を使うと、文章が難しいのかJavaやプログラミングが難しいのか判別しにくくなる – 例 •

    本書→この本 • 取得する→取る • スムーズに読めるように – 1500番のサンドペーパーをかけた程度のなめらかな文章を目指す – ツルツルだけど艶が出るまではない • プログラミングの難しさに集中する – ただし3部で力尽きた模様(4部はわかりにくい部分が多い)
  7. わかりやすさ • Swing – 文字を出すだけのプログラムを「プログラム」と認識しても らえない – クラス、オブジェクト、インスタンスの説明がやりやすい • ValueBasedなオブジェクトはオブジェクトと認識しづらい

    – Valhallaのvalue classで「オブジェクト」ではなくなる • “test”をあらわす2つのオブジェクトはあまり意味がない – JShellでSwingはほんとに楽しい
  8. 手にとりやすく • パステル調 – 「プロになる」だと黒くシュッとしたデザインに なりがち • 初心者が手を出しづらい • 副題に「ゼロから身につく」を

    – 座談会で(話すかも) • デザインは「青っぽく!かわいく!」とだけ 言って寝てたので細かいとこはユースケさん
  9. 計算複雑性 • 階層 – 組み合わせ論理 • ループのないコード – 有限オートマトン •

    スタックや再帰のないコード – プッシュダウンオートマトン • スタックのあるコード – チューリングマシン • スタックがふたつ以上あるコード • 任意のデータ構造を扱う
  10. 有限オートマトンを難しさ別に分解 • ループの各処理が独立 • ループの各処理は独立しているけど集計が必要 – Stream • 他の要素の値も扱うリスト処理 –

    Streamで書けない • 隠れた状態を扱う – ランレングス圧縮(文字列の連続数が隠れた状態) • 状態遷移図が必要な処理
  11. オブジェクト指向 • ファンタジーに陥らない – いぬねこや姫様勇者のようなクラス • わかった気になるけどアプリケーションの実装につながらない • 継承の使い方を差分プログラミングと値の分類に整理 •

    オブジェクト指向の限界も提示しておく – 「オブジェクト指向ならいいプログラムになる」みたいな夢を見せない – 「いいプログラムにするためにはオブジェクト指向する必要がある」み たいな誤解をさせない