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
650
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
自分のPCにPython環境を用意して_VSCodeでStreamlitアプリを動かすまでの8ステップ.pdf
mizzsugar
0
93
Colabのみで初心者向けPythonハンズオン.pdf
mizzsugar
0
78
厳しさとゆるさの間で迷う人に捧げる個人開発記
mizzsugar
0
72
SQLModel入門〜クエリと型〜
mizzsugar
3
1.6k
フルリモート向いてないと思っていた私が、なんだかんだ健やかに 1年半フルリモート出来ている話
mizzsugar
1
160
Djangoでのプロジェクトだって型ヒントを運用出来る!
mizzsugar
4
9.1k
pytestの第一歩 〜「テスト駆動Python」の紹介〜
mizzsugar
3
490
データ分析ツール開発でpoetryを使う選択肢
mizzsugar
1
1.2k
unittest.mockを使ってテストを書こう
mizzsugar
5
7k
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.9k
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
330
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
100
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
230
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
250
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
240
Go 1.27 における memory allocation の高速化
andpad
0
250
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
810
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
160
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
180
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Technical Leadership for Architectural Decision Making
baasie
3
500
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
Ruling the World: When Life Gets Gamed
codingconduct
0
300
The Cost Of JavaScript in 2023
addyosmani
55
10k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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