Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「動くものは作れる」の一歩先へ 〜「自走プログラマー」の紹介〜
Search
mizzsugar
June 09, 2021
Programming
640
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「動くものは作れる」の一歩先へ 〜「自走プログラマー」の紹介〜
mizzsugar
June 09, 2021
More Decks by mizzsugar
See All by mizzsugar
厳しさとゆるさの間で迷う人に捧げる個人開発記
mizzsugar
0
62
SQLModel入門〜クエリと型〜
mizzsugar
3
1.5k
フルリモート向いてないと思っていた私が、なんだかんだ健やかに 1年半フルリモート出来ている話
mizzsugar
1
160
Djangoでのプロジェクトだって型ヒントを運用出来る!
mizzsugar
4
9.1k
pytestの第一歩 〜「テスト駆動Python」の紹介〜
mizzsugar
3
480
データ分析ツール開発でpoetryを使う選択肢
mizzsugar
1
1.2k
unittest.mockを使ってテストを書こう
mizzsugar
5
7k
変数に変数を代入したら?
mizzsugar
1
2.7k
Djangoのパスワードハッシュアルゴリズムで_PyramidのWebアプリケーション作った.pdf
mizzsugar
0
970
Other Decks in Programming
See All in Programming
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
920
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
170
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
はてなアカウント基盤 State of the Union
cockscomb
0
640
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
610
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
130
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
280
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
RTSPクライアントを自作してみた話
simotin13
0
630
New "Type" system on PicoRuby
pocke
1
1k
Lessons from Spec-Driven Development
simas
PRO
0
220
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
420
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
150
Rails Girls Zürich Keynote
gr2m
96
14k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
620
ラッコキーワード サービス紹介資料
rakko
1
3.7M
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Transcript
「動くものは作れる」の 一歩先へ 2021-06-09 @stapy mizzsugar0425 〜「自走プログラマー」の紹介〜 1
Agenda - 自己紹介 - 本の概要 - 対象読者 - おすすめポイント -
to プログラミング入門者の方 - to プログラミング入門者の方とチーム開発している先輩プログラマの方 2
お前、誰よ? - Twitterはこのアイコン (@mizzsugar0425)→ - Python歴3年 - Spready株式会社 (we are
hiring!!) - 好き: コーヒー、自転車、ビール - Stapy5代目LT女王 - 静岡住みでフルリモートで働いています - Django Congressで登壇します! Djangoでの型ヒントについて話ます。 https://djangocongress.jp/ 3
本の概要 - プロジェクト開発のベストプラクティス120項目を紹介 - 著者は、Pythonでの開発に定評のあるビープラウド社の方々 - 本のURL↓ https://amzn.to/3v260Lk 4
対象読者 - 簡単なスクリプトなら書けるけれど、小〜中規模のシステムとなると 何をすればいいのか分からなくなる人 - そんな方と一緒にチーム開発している先輩プログラマの方々 サンプルコードはPythonだけれども、 どの言語を扱う人にも役に立つ内容です!! ※データ構造の章は特に、 PythonのWebフレームワーク「Django」を使った内容になっていますが
ORMを使うならばどの言語の方にも刺さる内容だと思います。 5
おすすめポイント 6
to プログラミング入門者の方々 7
1. プログラミング言語を越えた普遍的な内容 - 関数の実装から始まり要件定義に終わる内容。 - 1章 コード実装 - 2章 モデル設計
- 3章 エラー設計 - 4章 システム設計 - 5章 やることの明確化 - 常日頃から知りたかったけれども、なかなか現場に知見がない内容も! - プロジェクト開発の仕事の抽象度がだんだん上がっていくイメージ - 要件定義〜運用までやっている身としてはとても有り難い内容でした🙏 8
2. リアルな開発現場でありそうなソースコード - サンプルコードあるある「簡単すぎて現場との乖離がある」 この本では「ああ〜見覚えある〜〜」という感想になりました! - 読むのが辛くはないが現場を想定出来そうな、ちょうど良い複雑さです🙆 (※個人の感想) - やりがちなNG実装と理想の実装両方が書かれているのも良いです👍
- ↑次からの実装に活かしやすいです! 9
to プログラミング入門者の方々と 開発している先輩方 10
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」より抜粋
会話の内容 * 先輩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
会話の概要 - 渡されたdictの中にidsという項目がなかったらidsがNoneになる - 後輩さんは、idsがないためにKeyErrorが発生することを恐れた - そもそもDjangoなどのFWが引数dataの内容を精査済みで idsがないということはありえない - 仮にFWで精査してなかったとしても
idsがないことは異常なら、異常な状態で処理を続けるのは良くない - この会話が載っている抜粋版URL https://bit.ly/2TaRbJ7 13
会話を読んだ感想 後輩さんと同じやらかししたことある〜〜🤣 チームの人に同じこと言ったことある〜〜😅 てか後輩さん、やったことはアレだけど説明うますぎん?🤔 14
会話を読んだ感想 後輩さんと同じやらかししたことある〜〜🤣 チームの人に同じこと言ったことある〜〜😅 てか後輩さん、やったことはアレだけど説明うますぎん?🤔 ↑個人的注目ポイント↑ 15
2. レビューでの伝え方の幅が広がる - 適切な説明の言葉が見つからないだけで、実は後輩さんと同じことを考えて実装し ているのではないか? - 「こういう風に考えて実装した?」と聞く切り口にもなれるかと 16
自走プログラマー抜粋版 ビープラウドさんが公開しているこちらのサイトも レビューで使わせてもらっています🙏🙏🙏 PRのコメントにリンク貼ったりしています! jisou-programmer.beproud.jp 17