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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
16
Colabのみで初心者向けPythonハンズオン.pdf
mizzsugar
0
20
厳しさとゆるさの間で迷う人に捧げる個人開発記
mizzsugar
0
64
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
Other Decks in Programming
See All in Programming
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
770
どこまでゆるくて許されるのか
tk3fftk
0
290
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
260
Oxlintのカスタムルールの現況
syumai
6
1.2k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
180
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
200
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
270
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
150
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
230
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
180
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
GraphQLとの向き合い方2022年版
quramy
50
15k
New Earth Scene 8
popppiees
3
2.4k
Unsuck your backbone
ammeep
672
58k
Crafting Experiences
bethany
1
200
Practical Orchestrator
shlominoach
191
11k
Fireside Chat
paigeccino
42
4k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Git: the NoSQL Database
bkeepers
PRO
432
67k
30 Presentation Tips
portentint
PRO
1
330
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