$30 off During Our Annual Pro Sale. View Details »

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

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

mizzsugar

June 09, 2021
Tweet

More Decks by mizzsugar

Other Decks in Programming

Transcript

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

    View Slide

  2. Agenda
    - 自己紹介
    - 本の概要
    - 対象読者
    - おすすめポイント
    - to プログラミング入門者の方
    - to プログラミング入門者の方とチーム開発している先輩プログラマの方
    2

    View Slide

  3. お前、誰よ?
    - Twitterはこのアイコン (@mizzsugar0425)→
    - Python歴3年
    - Spready株式会社 (we are hiring!!)
    - 好き: コーヒー、自転車、ビール
    - Stapy5代目LT女王
    - 静岡住みでフルリモートで働いています
    - Django Congressで登壇します!
    Djangoでの型ヒントについて話ます。
    https://djangocongress.jp/
    3

    View Slide

  4. 本の概要
    - プロジェクト開発のベストプラクティス120項目を紹介
    - 著者は、Pythonでの開発に定評のあるビープラウド社の方々
    - 本のURL↓
    https://amzn.to/3v260Lk
    4

    View Slide

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

    View Slide

  6. おすすめポイント
    6

    View Slide

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

    View Slide

  8. 1. プログラミング言語を越えた普遍的な内容
    - 関数の実装から始まり要件定義に終わる内容。
    - 1章 コード実装
    - 2章 モデル設計
    - 3章 エラー設計
    - 4章 システム設計
    - 5章 やることの明確化
    - 常日頃から知りたかったけれども、なかなか現場に知見がない内容も!
    - プロジェクト開発の仕事の抽象度がだんだん上がっていくイメージ
    - 要件定義〜運用までやっている身としてはとても有り難い内容でした🙏
    8

    View Slide

  9. 2. リアルな開発現場でありそうなソースコード
    - サンプルコードあるある「簡単すぎて現場との乖離がある」
    この本では「ああ〜見覚えある〜〜」という感想になりました!
    - 読むのが辛くはないが現場を想定出来そうな、ちょうど良い複雑さです🙆
    (※個人の感想)
    - やりがちなNG実装と理想の実装両方が書かれているのも良いです👍
    - ↑次からの実装に活かしやすいです!
    9

    View Slide

  10. to プログラミング入門者の方々と
    開発している先輩方
    10

    View Slide

  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」より抜粋

    View Slide

  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

    View Slide

  13. 会話の概要
    - 渡されたdictの中にidsという項目がなかったらidsがNoneになる
    - 後輩さんは、idsがないためにKeyErrorが発生することを恐れた
    - そもそもDjangoなどのFWが引数dataの内容を精査済みで
    idsがないということはありえない
    - 仮にFWで精査してなかったとしても
    idsがないことは異常なら、異常な状態で処理を続けるのは良くない
    - この会話が載っている抜粋版URL
    https://bit.ly/2TaRbJ7
    13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide