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
ICKX
May 30, 2025
Programming
520
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「兵法」から見る質とスピード
ICKX
May 30, 2025
More Decks by ICKX
See All by ICKX
AIの揺らぎに“コシ”を与える階層化品質設計
ickx
0
320
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
160
階層化自動テストで開発に機動力を
ickx
1
880
検索条件にCRITERIAを
ickx
0
88
あなたの知らない新潟
ickx
0
93
香川にはTyrellがあるからね
ickx
0
420
品質が高いコードって何?Rev2.1
ickx
2
1.1k
品質が高いコードって何?
ickx
7
4.9k
【PHPerKaigi2021】PHPでCSVを安心して扱うために
ickx
4
3.3k
Other Decks in Programming
See All in Programming
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
170
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.8k
Contextとはなにか
chiroruxx
0
140
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
3.9k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
310
dRuby over BLE
makicamel
2
330
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
180
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
220
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
260
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
680
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How GitHub (no longer) Works
holman
316
150k
Designing for humans not robots
tammielis
254
26k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
A Soul's Torment
seathinner
6
2.9k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
450
Building Applications with DynamoDB
mza
96
7.1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
Transcript
「兵法」から見る "質とスピード" 同人ソフトサークル Project ICKX 若葉 章 @effy_staffs (EFFY開発チーム)
自己紹介 • 若葉 章(わかば あきら) • 2010年~ 同人ソフトサークル Project ICKX
• プロデューサー / 営業 / インフラ / サーバサイド... / ゲームの実開発以外全部 • 本職はスタッフエンジニアっぽいこともするPHPエンジニア • PHP続けてもうすぐ25年 PHP3の頃からお世話になっています • 最近の趣味は自転車とアマチュア無線 • Tyrell IVEで東京湾一周したり、京阪や徳島から高松まで走ったり • ICOM IC-705やID-52で移動運用試したり • Nintendo Switch で『VERTICAL STRIKE ENDLESS CHALLENGE』販売中 • Qiitaで『PHPで高速に・省メモリ・確実に日本語CSVを扱う方法』公開中 https://qiita.com/wakabadou/items/84b48ca12f25fb2fb69c 「composer require fw3/streams」をよろしくね。 「composer require tacddd/tacddd」もよろしくね。 「composer require bypassflow/crypt 」もよろしくね。
宣伝 PHPerKaigi2021で発表した「PHPでCSVを 安心して扱うために」にて紹介した、SJIS CSVを直接扱えるライブラリ “fw3/streams “ 最新版にてZIPファイル内のCSVファイルを ”そのまま直接”扱えるようになりました。 ぜひ使ってみてね。
こんな感じ。 メソッドで種類を指定し、 ファイルパスとZIP内のパスを 記述するだけでOK CSVの設定はふつう !!注意!!foreachを使用しない ストリームのため巻き戻しができず ここだけ定石から外れる
こんな感じ。 メソッドで種類を指定し、 ファイルパスとZIP内のパスを 記述するだけでOK CSVの設定はふつう !!注意!!foreachを使用しない ストリームのため巻き戻しができず ここだけ定石から外れる
こんな感じ。 CSVの設定はふつう !!注意!!foreachを使用しない ストリームのため巻き戻しができず ここだけ定石から外れる NoRewindIterator万歳!!
宣伝 最近、baypassflowと名付けたPHP8.4以降向けの ライブラリ開発に着手しました。 現在はcryptのみリリースしています。 同じ条件でも毎回違う結果が出るのに適正に検証できるハッシュ 同じ条件でも毎回違うバイナリが出力される暗号化処理 来月あたりに強力なオブジェクトコレクションを リリースする予定なのでお楽しみに。
資料 PHPカンファレンス関西2024やPHPerKaigi2024で 発表した”「“品質”が高いコード」って何?”を 前提としたページがあります(品質警察だ!のとこ) 事前に読んでおくとより理解が深まります
「兵法」から見る "質とスピード"
こ の プ レ ゼ ン は 兵 法 の
観 点 か ら 持 続 す る 組 織 に と っ て の 開 発 の 質 と ス ピ ー ド の 意 味 と 価 値 に つ い て 初 歩 的 な 知 見 を お 楽 し み い た だ く 発 表 で す 。
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ 品質警察だ!
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ 品質警察だ!
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ ソースコードに対する 要求、書けてますか?
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ 何のために”どこまで” 開発スピードを 高めるの???
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ 速さが足りていれば “競合に勝てる”の? 何のために”どこまで” 開発スピードを 高めるの???
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ リリース”してしまった”ら それは見なければならない 面倒の対象が増えたとも 速さが足りていれば “競合に勝てる”の? 何のために”どこまで” 開発スピードを 高めるの???
ここ数年流行りの”質とスピード” • 設計・実装の”品質”を高めれば保守しやすくなるよ • 保守しやすくなれば開発スピードが高まるよ • 開発スピードをゆっくりしていっても保守しやすくはならないよ • 保守をかなぐり捨てても開発スピードはあがらないよ •
保守性を高めておくと割と早いタイミングで効果を得られるよ • 保守性の向上は今そこにいる自分達のためだよ プログラマの 損得や苦楽の話なの? リリース”してしまった”ら それは見なければならない 面倒の対象が増えたとも 速さが足りていれば “競合に勝てる”の? 何のために”どこまで” 開発スピードを 高めるの???
これでは今まで通りの 「プログラマの独り善がり」 のままですね
(プログラマ以外と) 「兵法」から見る "質とスピード"
「兵法」 とは何でしょうか?
へい‐ほう〔‐ハフ〕【兵法】 1.いくさの仕方。 用兵や戦闘の方法。兵学。 ひょうほう。 「孫子の兵法」 2.剣術・柔術などの武術。 ひょうほう。 「兵法指南」 出典:小学館デジタル大辞泉 https://kotobank.jp/word/%E5%85%B5%E6%B3%95-129027
「孫子の兵法」 とは何でしょうか?
• 13篇からなる『竹簡孫子』という兵法書 • 「孫子さんが残した書」ではなく「孫子」という書 • 紀元前500年ごろの中国春秋時代の軍事思想家 『孫武』の作とされる • その後子孫とされる『孫臏』が記したものが 含まれたりしてるものがあるが、詳細は割愛
なぜ後世に残るほどウケたの • 孫子以前は事の勝敗は運任せだった (行き当たってばったり・あたって砕ける) • 勝敗は時の運ではなく人為である事を示し指針を 理論化し書として残した • 『一見判り易い』 •
兵は拙速を聞くも、未だ巧久なるを賭ざるなり • 未だ戦わずして廟算するに、勝つ者は算を得ること多きなり • などなど • 孫氏の兵法の前提を知らないと生兵法で大けがする羽目に
兵は拙速を尊ぶ • 兵は拙速を聞くも、未だ巧久なるを賭ざるなりの平易表現 • 世で最も誤用されている語 • 「なんでもいいから速く始めろ」と深刻な誤解をされがち • これは孫子的には一番やっちゃダメなパターンにあたります •
準備不足で事にあたる訳で「未だ戦わずして廟算するに、 勝つ者は算を得ること多きなり」にぶつかる • じゃあなんで「拙速(拙くてもいいから速いこと)を尊ぶ」 なんだよってなる
孫子に通底する価値観 • 孫子は何を成すための書か => 組織(国体)の護持 • 全てにおいてこれが優先されています • 組織を護持する事で民草の安寧を得ることによって 組織を護持し民草の安寧を以下無限ループって怖くね?
• その為に・・・ • リソースが必要になる瞬間のために徹底的にリソースの損失 を減らす • 損害を防ぐためにリソースを投入する場合はムダ上等でじゃ ぶじゃぶ突っ込む • 徹底的に損失を減らす 「出費を減らす」ではなく「損失を減らす」
その上で「拙速を尊ぶ」とは • 其の戦いを用うるや、勝つことを貴ぶ。久しければ則ち兵を鈍らせ 鋭を挫く。 城を攻むれば則ち力屈き、久しく師を暴さば、則ち国用足らず。 夫れ、兵を鈍らせ鋭を挫き、力を屈くし貨を殫くせば、則ち諸侯其 の弊に乗じて起こる。 智者有りと雖も、其の後を善くすること能わず。 • 故に、兵は拙速を聞くも、未だ巧久なるを賭ざるなり。
夫れ兵久しくして国を利する者は、未だ有らざるなり。 故に尽く用兵の害を知らざる者は、則ち尽く用兵の利をも知ること 能わざるなり。
砕くとこんなかんじ • “戦いという手段”は勝つことを良しとする。 ただし、戦いが長くなると兵が疲弊し攻めきれなくなるし、 かといって敵の本拠地まで遠征したら莫大なリソースを 消費するしで国のリソースが枯渇してしまう。 • 仮に勝てたとしても既にリソースなくば、弱体化した国を 見て周辺国が攻めこんで来ても、もはや負けるだけになる。 •
なので、手段に多少拙い点があってもごり押しして 何とかなった事例はあっても、手段をうまくしようとして 長引かせてうまくいった事例はない。 • そもそもただ長く戦って国に利益があった事などない。 したがって、軍の運用に伴う弊害を知らないものは、軍の運用によ る利益を知る事も出来ない。
「拙速を尊ぶ」? 「手段に多少拙い点があってもごり押しして 何とかなった事例はある」なら、やっぱり さっさと始めたほうが良いのでは???
「兵は国の大事なり」 • 「事を起こす」というのは「事を起こしてしまった以上、 事が収まるまで出費が続く」という事です。 • 繰り返しになりますが、なので「拙くてもいいからさっさと 終わらせろ」となります。 • ですが、手段を巧くやった上に、更にもっと早く終わらせる 方法があります。
「既に勝った」状態で始める • 事を起こす前に徹底的に準備し、開始と同時に終わらせる • 未だ戦わずして廟算するに、勝つ者は算を得ること多きなり • 昔の善く戦う者は、先ず勝つ可からざるを為して、 以て敵の勝つ可きを待つ
本当に「拙速を尊ぶ」為には • 1に先に仕込め、2に先に仕込め • システム開発だと • ライブラリの整備とか技法の統一だとか • やるべき最低限の事以外全て整った状態から始める •
迂直の計にも通じる話 • それでもなおどうにもならない事象に対して初めて 「拙くてもいいから速く終わらせろ」 • 「必要になってからやる」だと遅すぎる 「必要なので”既に使っている”」を”常に達成”する必要がある
「現代の兵法」 でたいせつなこと
リズムとテンポ
リズム(rhythm) 1.強弱・明暗・遅速などの周期的な反復。 生活のリズムが狂う」 2.音楽の基本的要素の一つで、音の時間的な変化の 構造。アクセントが規則的に反復する拍節的リズ ム、アクセントの継起が不規則な定量リズム、音 の長さに一定の単位をもたない自由リズムなどに 分類される。「リズムに乗って踊る」 3.詩の韻律。 出典:小学館デジタル大辞泉
https://kotobank.jp/word/%E3%82%8A%E3%81 %9A%E3%82%80-3175090
テンポ(〈イタリア〉tempo) 1.楽曲の演奏で、譜面に指定された速度。 2.物事の進みぐあい。「時代のテンポにあわせる」 「急テンポ」 3.[類語]速さ・速度・スピード・ペース・ピッチ・速 力・調子・音調・音律・調性・音階・音程・音 高・トーン・拍子・拍・律動・乗り・リズム・調 べ 出典:小学館デジタル大辞泉 https://kotobank.jp/word/%E3%81%A6%E3%82
%93%E3%81%BD-578916
現代戦においては・・・ • 敵に対する時間の相対的な行動のテンポ(速度)とリズムが 重要になっています • 敵よりテンポが速ければ相手の将来の行動に対して先んじて 対処する、すなわち始まる前から終わらせることが出来ます • また、敵の選択できる意思決定の選択肢を狭める、究極的 には、こちらが想定しているものに限定させる事まで
狙えます ここで自分の意思決定を速めるための思考法として ちょっと前に流行りかけたOODAループが出てきます。 あれはPDCAの代替ではありません。
ここで 「孫子の兵法」 に戻ります
「善く戦う者は、人に致して人に致されず」 • 「善い戦いを行えるものは、人をこちらの都合で動かし、 自らは人の都合に動かされない」 • 雑に略すと主導権を取れ
「人に致されている」ってどういう状況? • 同業他社が新機能をリリースしたので、後追いで同機能を開発・リリースする • 他業他社が同業に乗り込んでくるので心乱される • 世間の流行りを流行りだからという理由だけで追い続ける • 外部フレームワークが開発終了したのでリリース3日目にして1から作り直しになった(なん とか▪3)
• これら全て、自発ではなく外乱に引きずり回されての行動です。 • これが「人に致されている」状況です。 • 主導権を握りそこなったら最後、ずっと後追い続けるだけで永遠に一番になれないの図。
では「人を致している」ってどういう状況? • なんとなくコピーできそうな新機能”も”リリースし、同業他社に余計な後追い開発をさせ る • 「あの会社が居るから参入しても美味しくなさそう」と他業他者にしり込みさせる • カスタマーを巻き込んで流行りを作り、流行を主導する • これらは自発で行った行動で他社や世間を引きずり回している状態です。
• これが「人を致している」状況です。 • 今度は逆に他が我々を追いかける状況のため、状況全体をコントロールしやすくなります。 • コントロールできるって事は予想外に重いリリースも混ぜて、 パクる同業他社の開発時間を浪費させる事も出来るって寸法。
ここでようやく なぜ“質とスピード“が必要なのか が判ります
人に致して 人に致されないため
人に致して 人に致されない ためには?
相手より早くだす!
相手より早くだす! 不正解の音
“我々”のリズムとテンポで 狙いすましたタイミングで 戦力を投射(リリース)する
タイミング?
「気を見るに敏」
広報や営業、商品戦略に 携わった事のある方なら ご理解頂けると思います
情報公開、リリース、Xへのポスト… どんなものであっても 「“今この瞬間”が最も威力を発揮する」 タイミングがあります
つまり
戦略上最適なタイミングで リリースをし続ける
最適なタイミングで リリースするには?
全員が理解しているリズムと テンポに乗って行動する
リズムとテンポが判っていれば 各々が「いつ、何をすれば良い」を 判断しやすくなるからです
最適なリズムを乱し、 期待するテンポを遅らせる ものは?
質の低いコード
なので、”我々”は 質の低いコードを 許してはならない
ところで全員とは?
営業、広報だけでなく 代表から連なる 組織内の全員
はい、これで”我々”が “プログラマー”から “我が組織”になりましたね
つまり
”質の高いコード”は 組織の攻めの選択肢を 増やすための必須要件です
ところでスピードどこいった?
ぶっちゃけリズムに乗れていて 必要とするテンポを満たせるなら スピードなんてどうでもいいです
それらを充足できているのに、 更にスピードを求めるのは ただの過剰品質です
スピードは必要とする リズムとテンポのために あります
但し、将来のテンポの選択肢を 増やすためにスピードアップの 研究は常に行う必要があります
既に定石化できている スピードアップの手段を用いて ”今”必要なテンポを達成するなどね
結びに
組織を持続させるために 我々は何を成さねば ならないのか
タイミングよく リズムとテンポにのって 人を致す
リズムとテンポを 乱さないためには
質の高いコードが必要
だから”我々”は コードに質を 求めねばならない
おしまい