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

「動くものは作れる」の一歩先へ 〜「自走プログラマー」の紹介〜

「動くものは作れる」の一歩先へ 〜「自走プログラマー」の紹介〜

C98d379da6e5517afff697a6c5615e68?s=128

mizzsugar

June 09, 2021
Tweet

Transcript

  1. 「動くものは作れる」の 一歩先へ 2021-06-09 @stapy mizzsugar0425 〜「自走プログラマー」の紹介〜 1

  2. Agenda - 自己紹介 - 本の概要 - 対象読者 - おすすめポイント -

    to プログラミング入門者の方 - to プログラミング入門者の方とチーム開発している先輩プログラマの方 2
  3. お前、誰よ? - Twitterはこのアイコン (@mizzsugar0425)→ - Python歴3年 - Spready株式会社 (we are

    hiring!!) - 好き: コーヒー、自転車、ビール - Stapy5代目LT女王 - 静岡住みでフルリモートで働いています - Django Congressで登壇します! Djangoでの型ヒントについて話ます。 https://djangocongress.jp/ 3
  4. 本の概要 - プロジェクト開発のベストプラクティス120項目を紹介 - 著者は、Pythonでの開発に定評のあるビープラウド社の方々 - 本のURL↓ https://amzn.to/3v260Lk 4

  5. 対象読者 - 簡単なスクリプトなら書けるけれど、小〜中規模のシステムとなると 何をすればいいのか分からなくなる人 - そんな方と一緒にチーム開発している先輩プログラマの方々 サンプルコードはPythonだけれども、 どの言語を扱う人にも役に立つ内容です!! ※データ構造の章は特に、 PythonのWebフレームワーク「Django」を使った内容になっていますが

    ORMを使うならばどの言語の方にも刺さる内容だと思います。 5
  6. おすすめポイント 6

  7. to プログラミング入門者の方々 7

  8. 1. プログラミング言語を越えた普遍的な内容 - 関数の実装から始まり要件定義に終わる内容。 - 1章 コード実装 - 2章 モデル設計

    - 3章 エラー設計 - 4章 システム設計 - 5章 やることの明確化 - 常日頃から知りたかったけれども、なかなか現場に知見がない内容も! - プロジェクト開発の仕事の抽象度がだんだん上がっていくイメージ - 要件定義〜運用までやっている身としてはとても有り難い内容でした🙏 8
  9. 2. リアルな開発現場でありそうなソースコード - サンプルコードあるある「簡単すぎて現場との乖離がある」 この本では「ああ〜見覚えある〜〜」という感想になりました! - 読むのが辛くはないが現場を想定出来そうな、ちょうど良い複雑さです🙆 (※個人の感想) - やりがちなNG実装と理想の実装両方が書かれているのも良いです👍

    - ↑次からの実装に活かしやすいです! 9
  10. to プログラミング入門者の方々と 開発している先輩方 10

  11. 1. 生生しい(?)先輩と後輩のやりとり def validate(data): """data['ids']を検査して、含まれる不正なidの一覧を返す """ ids = data.get('ids') #

    ここが問題 err_ids = [] for id in ids: if ...: # idが不正かどうかをチェックする条件文 err_ids.append(id) return err_ids 11 「自走プログラマー ~Pythonの先輩が教えるプロジェクト開発のベストプラクティス120」より抜粋
  12. 会話の内容 * 先輩T:この ``def validate(data):`` 関数の中で ``data.get('ids')`` っていうコードがたくさん あるんだけど、フレームワークが ``data``

    辞書を用意して ``validate`` を呼んでくれるから、 ``'ids'`` は必ずあるんじゃない? * 後輩W:ありますね。 * 先輩T:じゃあどうして ``data['ids']`` じゃなく ``data.get('ids')`` なの? * 後輩W: ``'ids'`` がない場合に例外を発生させないようにするためです。 * 先輩T:??? * 後輩W: ``validate`` に必ず ``'ids'`` を持つ辞書を渡してくれるかわからないですよね。 * 先輩T:それはフレームワークがよくわからないから過剰防衛してるだけでは。 「自走プログラマー ~Pythonの先輩が教えるプロジェクト開発のベストプラクティス120」より抜粋 12
  13. 会話の概要 - 渡されたdictの中にidsという項目がなかったらidsがNoneになる - 後輩さんは、idsがないためにKeyErrorが発生することを恐れた - そもそもDjangoなどのFWが引数dataの内容を精査済みで idsがないということはありえない - 仮にFWで精査してなかったとしても

    idsがないことは異常なら、異常な状態で処理を続けるのは良くない - この会話が載っている抜粋版URL https://bit.ly/2TaRbJ7 13
  14. 会話を読んだ感想 後輩さんと同じやらかししたことある〜〜🤣 チームの人に同じこと言ったことある〜〜😅 てか後輩さん、やったことはアレだけど説明うますぎん?🤔 14

  15. 会話を読んだ感想 後輩さんと同じやらかししたことある〜〜🤣 チームの人に同じこと言ったことある〜〜😅 てか後輩さん、やったことはアレだけど説明うますぎん?🤔 ↑個人的注目ポイント↑ 15

  16. 2. レビューでの伝え方の幅が広がる - 適切な説明の言葉が見つからないだけで、実は後輩さんと同じことを考えて実装し ているのではないか? - 「こういう風に考えて実装した?」と聞く切り口にもなれるかと 16

  17. 自走プログラマー抜粋版 ビープラウドさんが公開しているこちらのサイトも レビューで使わせてもらっています🙏🙏🙏 PRのコメントにリンク貼ったりしています! jisou-programmer.beproud.jp 17