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
UNIX哲学とアジャイルとAWSと
Search
yoshitaka KOITABASHI
February 12, 2023
Technology
1.6k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UNIX哲学とアジャイルとAWSと
yoshitaka KOITABASHI
February 12, 2023
More Decks by yoshitaka KOITABASHI
See All by yoshitaka KOITABASHI
変化と挑戦:NoSQLとNewSQL Serverless Databaseの技術革新とマルチテナンシーの秘密
yoshiitaka
23
6.5k
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
3
2.1k
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
23
5.8k
Re:cap container Services
yoshiitaka
2
610
The_Frugal_Architectの観点から眺めるServerless.pdf
yoshiitaka
1
180
re:Inventに行くと何を得られ、なぜ人はラスベガスに行くのか
yoshiitaka
0
160
コンテナ支部recapをrecapしよう_気になったコンテナの周りのアップデートを紹介.pdf
yoshiitaka
1
1.1k
AWS re:Invent 2023の期間中に出たコンテナアップデート集
yoshiitaka
4
830
stripeを組み合わせたサーバレスアーキテクチャとシードのスタートアップ ビジネスをグロースするためにやったこと
yoshiitaka
3
630
Other Decks in Technology
See All in Technology
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
220
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
170
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
170
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.9k
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
610
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
150
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
150
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
120
BPaaSで進むAIオペレーションの現在地 AI実装が効く領域とスケーラビリティの選定と実装
kentarofujii
0
210
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
2
430
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
220
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
4
810
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Unsuck your backbone
ammeep
672
58k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
640
Paper Plane
katiecoart
PRO
1
52k
Documentation Writing (for coders)
carmenintech
77
5.4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
280
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bash Introduction
62gerente
615
220k
Everyday Curiosity
cassininazir
0
240
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
260
BBQ
matthewcrist
89
10k
Transcript
UNIX 哲学とアジャイルと AWS と KOITABASHI Yoshitaka 2023/2/13 yoshii0110 1
2023/2/13 yoshii0110 2 KOITABASHI Yoshitaka @yoshii0110 KDDIアジャイル開発センター株式会社 Amazon EC2, AWS
Fargate, Amazon SQS 🥷 🏢 💕
UNIX と UNIX 系システムの系統 2023/2/13 yoshii0110 3 引用: https://commons.wikimedia.org/wiki/File:Unix_history-simple.svg
余談: FreeBSD は EC2 で動かせる AMI がある 2023/2/13 yoshii0110 4
UNIX 哲学の歴史 • 1978年 マキルロイの UNIX 哲学 AT&T ベル研究所プログラマー パイプの発明者
• 1994年 ガンカーズの UNIX 哲学 DEC のプログラマー x window system 開発チームメンバー • 2003年 レイモンドの UNIX 哲学 オープンソース推進団体 OSI の共同創設者 「伽藍とバザール」の著者 2023/2/13 yoshii0110 5
余談: UNIX ってなぜ UNIX というのか • ケントンプソンが PDP-7 で作っていた当時のUnixが同時に ひとりのユーザしか処理できなかった
• 同僚がジョーク混じりにこのシステムのあだ名を UNIplexed Information and Computing Service (UNICS) にしたのが語源 2023/2/13 yoshii0110 6
余談: パイプの起源 パイプとは、あるプログラムの出力を、他のプログラムの入力に接続するための、 統一されたメカニズム 例: > cat /etc/group | fgrep
appserver _appserverusr:*:79: _appserveradm:*:81: • このパイプは、ケン・トンプソンが考案した訳ではなく、マキルロイがトンプソンに強く何度も提案 • 根負けしたトンプソンがある夜、たった一晩で僕がやるといい実装してしまった • ちなみに、マキルロイが提案していたパイプは > で、トンプソンは | を提案し実装 2023/2/13 yoshii0110 7
UNIX 哲学 • UNIX 哲学とは、 Unix 開発者たちの経験に基づいた 文化的な規範と哲学のまとめ • UNIX
は UNIX 哲学を実践した最初のシステム 2023/2/13 yoshii0110 8
それぞれの UNIX 哲学 2023/2/13 yoshii0110 9 マキルロイの UNIX 哲学 (Perter
H.Salusがまとめたもの) 一つのことをうまくやるプログラムを書け 連携するプログラムを書け 標準入出力(テキスト・ストリーム)を 扱うプログラムを書け。 標準入出力は普遍的なインターフェース なのだ ガンカーズの UNIX 哲学 スモール・イズ・ビューティフル 各プログラムが一つのことをうまくやるようにせよ できる限り早く試作せよ 効率よりも移植しやすさを優先せよ 単純なテキストファイルにデータを格納せよ ソフトウェアを梃子(てこ)として利用せよ 梃子の効果と移植性を高めるために シェルスクリプトを利用せよ 過度の対話的インターフェースを避けよ すべてのプログラムをフィルタとして設計せよ レイモンドの UNIX 哲学 モジュール化の原則 驚き最小の原則 明確性の原則 沈黙の原則 組み立て部品の原則 修復の原則 分離の原則 経済性の原則 単純性の原則 生成の原則 倹約の原則 最適化の原則 透明性の原則 多様性の原則 安定性の原則 拡張性の原則 表現性の原則
余談: DEC という会社と移植性 ガンカーズのUNIX哲学: 効率よりも移植性 DEC という会社: さまざまなアーキテクチャのコンピュータを開発 • さまざまなコンピュータに
Unix を移植していた • 当時、ベル社で生まれた Unix からいろんな派生の Unix が 生まれ、各社自社の Unix マシンを売るため、 独自の機能をつけていく • なので、Unix 上で書いたプログラムを移植する時は、 シェルスクリプトを使うべきと書籍では書いてあった 2023/2/13 yoshii0110 10
一つのことをうまくやるプログラムを書け Q: なぜか? A: 万能型のプログラムは、たった一つのプログラムを使えばよいので、 ユーザには受けがよいかもしれない だが、そうしたプログラムは問題がある 1.書くのが難しい 2.保守やデバッグが難しい 3.新しい状況に合わせて機能を拡張するのが難しい
2023/2/13 yoshii0110 11
プログラムは用途別の工具であるべき • 要するに、個々のプログラムは、 「1つの仕事だけをきちんとする」だけで良いということ • これならば、設計も、コードを書くのも、修正も簡単 • また、個々のプログラムを適切な仕組みを使って、組み合わせると、 全体が部分の総和以上になることに Unix
の開発者は気づいた 2023/2/13 yoshii0110 12
ある用途専用のプログラムをいくつか組み合わせると、 どのプログラムも責務と持っていない作業ができるようになる 2023/2/13 yoshii0110 13
UNIX 哲学は死なない • UNIX 哲学の応用範囲は広がっている • ソフトウェア技術の進化やクラウドコンピューティングが 広まったことで、UNIX 時代と全く同じ哲学で、という訳ではなく、 UNIX
哲学が上手く適応されながら広がっている 2023/2/13 yoshii0110 14
アンドリュー・タネンバウムと MINIX アンドリュー・タネンバウム: MINIXの父、 大学教授 ワーナーは、タネンバウムの教え子 自分の一番重要な仕事は、コンピュータ科学を修めた優秀な学生を 多く育てること MINIX: 教育目的の
Unix 系 OS 初期バージョンは、フロッピーディスク単体で運用ができた MINIX 3は、ハードウェアを要するもののマイクロカーネル本体のコードは 4000行弱 2023/2/13 yoshii0110 15
アンドリュー・タネンバウムの教訓 • ソフトウェアはガスのようなもので、 入れ物がいっぱいになるまで膨らんでいく • サイズは重要 • 将来現れるかもしれないハードウェアにも適応できるような設計を 心がけよ •
ハードウェア特有の特殊な機能に頼らなければ、 新しいプラットフォームへの移植がより簡単になる 2023/2/13 yoshii0110 16 引用: https://dl.acm.org/doi/10.1145/2795228 引用: http://member.wide.ad.jp/~shima/publications/Lessons_learned_from_30_years_of_Minix-JP.html
UNIX 哲学は、ソフトウェアの開発に 応用できる考え方でもある 2023/2/13 yoshii0110 17
Unix Philosophy and Node.js npm を作ったアイザック・シュルーターが TXJS2013 で こんなことを言ってます 「Unix
Philosophy is an outlook for software development, not any specific technical development in software. 」 UNIX 哲学は、ソフトウェア開発の展望であって、 ソフトウェアにおける特定の技術的開発ではない 2023/2/13 yoshii0110 18 引用: https://blog.izs.me/2013/04/unix-philosophy-and-nodejs/
ロブ・パイクのプログラミング5ヶ条と Go言語 • プログラミング5ヶ条 • ルール4:派手なアルゴリズムは単純なアルゴリズムに比べてバグが多く、 実装も大変なので、シンプルなアルゴリズムとシンプルなデータ構造を 使うようにすること • Go言語の設計思想
• Go Conference 2014 Autumn での基調講演「Simplicity is Complicated」 • ロブパイクは、Go言語が成功した要因は「 Simplicity(単純さ) 」にあると語る • 可読性が最重要項目 • 可読性のあるコードは、信頼できる • 信頼できるコードは、理解しやすく、取り組みやすく、壊れてしまっても 簡単に修正できる 2023/2/13 yoshii0110 19 引用: http://users.ece.utexas.edu/~adnan/pike.html 引用: https://go.dev/talks/2015/simplicity-is-complicated.slide#1
マイクロサービスアーキテクチャ • UNIX 哲学 • 1つのことをうまくやる • 連携するプログラムを書け • マイクロサービス
• ビジネスドメインに基づいて分割され独立して デプロイ可能なサービス • 疎結合で独立性が高い • つまり、単一の大きなソフトウェアを作るのではなく、 複数のプログラムの集まりとして作ることでメンテナンス性、 アジリティ、開発チームの自立性、サービスの堅牢性が向上 2023/2/13 yoshii0110 20
AWS が提供しているサービス数 2023/2/13 yoshii0110 21
UNIX 哲学と AWS 2023/2/13 yoshii0110 22 • AWS の各サービスはそれぞれ役割が違う •
Amazon の内部は、Two Pizza ルールにて、1つのチームが 1つのコンポーネントに集中し、全体像を意識する必要がないよう 組織も考えられている => 1つのことをうまくやらせる
Amazon EventBridge Pipes 2023/2/13 yoshii0110 23 • 昨年の re:Invent にて
Amazon EventBridge Pipes が登場 • ソースとターゲットの間で「イベント」を受け渡す • その際に他のサービスをかませて加工できる 個々のプログラムを適切な仕組みを使って、組み合わせると、 全体 が部分の総和以上になること => 1つのことをうまくやらせる
UNIX 哲学とアジャイル 2023/2/13 yoshii0110 24 引用: https://agilemanifesto.org/iso/ja/manifesto.html 引用: https://www.ipa.go.jp/files/000065601.pdf UNIX
哲学: できる限り早く試作せよ アジャイル: 早くお客さんに価値を届けることが重要
UNIX 哲学とアジャイルと AWS と • AWS のサービスは、UNIX 哲学を体現している • だが、
AWS のサービスをただ使うだけでは、できる限り早く試作したり、 お客様にサービスをすぐに提供できない。 • AWSのサービスを使い俊敏にお客様にサービスを提供するには、 クラウドサービスを使うための組織、開発手法が必要 そう、それがアジャイル 2023/2/13 yoshii0110 25
「UNIX 哲学とアジャイルと AWS と」 これらが 組み合わされた時に我々は、現代のソフトウェア開発において UNIX 哲学を体現しているといえるのではないか? 2023/2/13 yoshii0110
26