DRIVENたちをどう使うのか
DRIVEN流行りすぎ問題
近年、○○ Driven や ○○ First 、○○ Orientedなどの用語が頻出します。その中で、Drivenに絞って集めてみました。もはやDrivenが多すぎて、大混乱です。書いてて画面を叩き割りたくなったくらいです。ぜひ読んでください。
それでも「いい言葉」
彼らDRIVENたちは1つだけで使ってもその真価は発揮されないといえます。ほかの手法と組み合わせたり、前提知識や経験に裏打ちされてこそより大きな力を発揮することでしょう。
まずは単語を知っていれば、調べることが出来ます。「難しい言葉を知っている必要はない」ってその通りです。しかし、知ろうとする中で得る知識って役に立ちます。このページは、検索するための目録ぐらいに使ってください。
ぜひともたくさん覚えて、当てはまる場所を探ってあげましょう。
XDD「x-driven-development」
最もQiita的なDRIVEN系として下記一覧にまとめました。
- テスト駆動開発【Test Driven Development】
- ビヘイビア駆動開発【Behavior Driven Development】
- 受け入れテスト駆動開発【Acceptance Test Driven Development】
- ログ駆動開発【Log Driven Development】
- モデル駆動開発【Model Driven Development】
- ドメイン駆動開発【Domain Driven Development】
- ユースケース駆動開発【Use Case Driven Development】
TEST DRIVEN【テスト駆動】
TEST DRIVEN【テスト駆動】
小さな単機能単位でテストをしながら、全体へと開発を進めていく手法です。だんだんと大きな単位のテストになっていきますが、その時に小さな単位のテストでも正常であることを確認しながら進めていきます。派生としてATDD【Acceptance Test Driven Development】や[BDD](# TEST DRIVEN【テスト駆動】
- メリット
- 適切なテストが用意できていれば、大きなプロジェクトになってもデバッグがしやすい、とても効率的な手法です。
- デメリット
- ほぼありません。強いて言えば、テストが間違っていることに気が付けないと後で痛い目にあいます。
ISSUE DRIVEN【課題駆動】
https://www.amazon.co.jp/dp/B00MTL340G
Issueとは「クリティカル・シンキング」において、論理を構造化する際に、その場で「何を考え、論じるべきか」を指す言葉です。ということで、「教授に与えられた課題を提出する」といったときの課題とは別物です。Githubで出てくるIssueのことですね。Issue Drivenを理解したければGithubを使うといいと思います(※テキトーです)。
- メリット
- 「目的/目標/課題」フレームワークの3段編成に組み込みやすいです。目的がブレにくいといえます。
- デメリット
- 目的が間違っていると破綻します。
OUTPUT DRIVEN【出力駆動】
Result Driven と近いですが、こちらは、自分の知識や能力を持っているだけではダメあるとする手法です。「能ある鷹は爪を隠す」とは言いますが、ひけらかすのと成果物を生み出していくのは別の話です。学んで爪を磨いても、使わなければ爪は朽ちていくものです。アウトプット駆動学習【Output Driven Study】などが用例です。
- メリット
- 成果物を人に見せたり、自分で眺めたりできるのでモチベーションの継続が期待できます。
- デメリット
- 何を出力するのかを間違えていると効果が期待できません。
HYPOTHESIS DRIVEN【仮説駆動】
仮説を軸に行動する手法です。書籍「ISSUE DRIVEN」で出てくる言葉です。 ゲーム理論やOODAループなどもこれが関係してくると思います。
MESSAGE DRIVEN【メッセージ駆動】
Message-Driven Bean と呼ばれるフレームワークを使うとJavaでAjax的なことが出来るらしいです。
RESULT DRIVEN【結果駆動】
結果を出すことを前提にして逆算して行動する手法です。
- メリット
- 達成までにやるべきことや時間を細分化できるため、日程計画が立てやすいです。
- デメリット
- 最終的な結果がわからない分野では役立てにくいです。
DATA DRIVEN【データ駆動】
データサイエンティストが使いがちな手法がこれです。映画「マネーボール」などでも話題になりました。データがものを言います。
データで次の行動を決定する手法です。
BEHAVIOR DRIVEN【挙動駆動】
BEHAVIOR DRIVEN【挙動駆動】
Test Drivenの派生です。振る舞い駆動とも言います。ウイルス対策関連で、Behavior は挙動と訳すのでこちらを選択しました。
テスト駆動の中に要求分析を取り入れて、ループの最適化を図る手法です。
MODEL DRIVEN【仕様駆動】
直訳するとModelは模型ですが、IT業界ではこう翻訳するらしいです。仕様書を基にして設計をすることです。ウォーターフォールっぽいですね。
- メリット
- モデル図を基にして自動コーディングが出来るのが売りです。モデル図をアジャイルすれば最強かもしれません。(※自動コーディングのためのプログラムはどうするの?)
- デメリット
- スタートアップなどの変化が急速なウェブサービスでは適用が難しそうです。
TECNOLOGY DRIVEN【技術駆動】
新しい技術の登場によって従来とは異なる新たなものが普及することです。5GによってVR普及したりすれば、5Gによる技術駆動イノベーションといえるかもしれません。対義としてはビジネス駆動が挙げられます。
- デメリット
- 結果論として語られることが多く、初めから意識していると成功しないケースが多いです。
BUSINESS DRIVEN【ビジネス駆動】
ビジネス主導で科学技術が普及していくことです。tesla motorなどはいい例かもしれません。
ACTION DRIVEN【行動駆動】
「5秒ルール」で提唱される考え方です。「モチベーションは行動後に発生するので、PDCAやOODAにおけるAから始めましょう」という理論です。
COST DRIVEN【費用駆動】
費用を抑えることを中心に考えます。
QUALITY DRIVEN【品質駆動】
品質を保つことを中心に考えます。
DELIVERY DRIVEN【納期駆動】
納期を守ることを中心に考えます。
DEMAND DRIVEN【要求駆動】
「ビデオ・オン・デマンド」でおなじみの「見たいときにいつでも見られる」に応用されています。要求を主体として考えた手法です。
需要主義型補充【Demand-Driven Replenishment】や、トヨタのジャストインタイム【Just In Time】などにも片鱗が見られます。
また、願望駆動と訳した場合、顧客駆動に近いと捉えることもできます。
EVENT DRIVEN【イベント駆動】
ソフトウェア開発を行っていると、イベントトリガーという言葉を耳にすることがあると思います。OnClick()
とかよく使いますよね。あとはHook
とかですね。PHPとかWebAPIで頻出するやつらです。「あるイベントが起きた時に何をするのか」を定義することが中心となる手法です。
LOG DRIVEN【ログ駆動】
LOG DRIVEN【ログ駆動】
BDD、TDD、ATDDの問題点を解決するとして注目されています。
別名として、PDD【Print Driven Development】があります。ここで言うPrintとはprint()
関数のことです。
「デバッグモードで起動したときにログを書き出してくれるような設計」のアプリケーション開発において、そのログを重視した開発手法です。
CUSTOMER DRIVEN【顧客駆動】
顧客志向【Customer Oriented】や顧客第一【Customer First】と近いかもしれません。対義として市場駆動【Market Driven】や製品駆動【Product Driven】が挙げられます。
ユーザー機能駆動開発【Feature Driven Development】や顧客価値駆動開発【Customer Value Driven Development】としても利用されていて、反復型開発の一種であるアジャイル【Agile Software Development】もこれです。
※気を付けたいのは、顧客価値というのは「顧客が求める価値」であるということです。「顧客の価値」ではないです。
PLAN DRIVEN【計画駆動】
ウォーターフォール型開発はこれです。PDCAでPLANから入る考え方です。
FEATURE DRIVEN【機能駆動】
FEATURE DRIVEN【機能駆動】
機能駆動とはユーザー機能駆動開発【Feature Driven Development】とほぼ同義です。
QUOTE DRIVEN【気配駆動】
QUOTE DRIVEN【気配駆動】
価格駆動方式【Price Driven Method】やディーラー方式【Dealer Method】と呼ばれることもあります。価格決定方式による2分類のうちの片方です。
ORDER DRIVEN【注文駆動】
ORDER DRIVEN【注文駆動】
東証をはじめ世界の取引所の大半が採用する方式です。オークション方式【Auction Method】と呼ばれることもあります。価格決定方式による2分類のうちの片方です。
- メリット
- 取引相手に交渉することが出来ます。
REQUEST DRIVEN【要求駆動】
REQUEST DRIVEN【要求駆動】
ORDER DRIVEN とQUOTE DRIVENを組み合わせた方式です。
BRAIN DRIVEN【脳駆動】
神経科学を前提知識として持ち、実際に脳で何が起きているのかを理解しながら行動する手法です。
https://www.amazon.co.jp/dp/B08GX7XMLZ
- メリット
- より深いところから判断できるのでとても効率がいいです。アセンブラを書けるC++プログラマーみたいな感じでしょうか。
インフラ設計やパケットキャプチャができるWebアプリケーション開発者みたいな感じかもしれません。
- より深いところから判断できるのでとても効率がいいです。アセンブラを書けるC++プログラマーみたいな感じでしょうか。
- デメリット
- 感情を無視して科学的に合理的な判断を下すようになるかもしれません。
SELF DRIVEN【自己駆動】
Self Controll とほぼ同義だと思います。自律ですね。
https://www.amazon.co.jp/dp/B072KBWB6G
DOMAIN DRIVEN【ドメイン駆動】
ドメインで必要とされる最適なに設計しようという考え方です。例えば「Pyhtonがデータサイエンティストのドメインに最適化するなら、DjangoなどのWeb用の部分で必要とされる機能は、ドメインで必要とされないから削除しよう。」などといった感じです。
https://www.amazon.co.jp/dp/B00GRKD6XU
USECASE DRIVEN【利用事例駆動】
USECASE DRIVEN【利用事例駆動】
ユースケースを基にしてオブジェクト指向開発を行う手法です。
- メリット
- オブジェクト指向とCustomer Drivenを統合できます。
INTELLIGENCE DRIVEN【知能駆動】
インテリジェンス主導型セキュリティと言って、サイバーセキュリティ業界の用語です。
https://www.amazon.co.jp/dp/B074ZRN5T7
MARKET DRIVEN【市場駆動】
マーケティング業界で使われる言葉ですね。そのまんまです。対義にはProduct Driven があります。
THEORY DRIVEN【理論駆動】
演繹的手法と帰納的手法で分けると、前者はセオリードリブン、後者はデータドリブンです。言葉通りですね。
https://www.amazon.co.jp/dp/B00YFRIKPQ
OUTCOME DRIVEN【成果駆動】
ジョブ理論に影響を与えた考え方です。AWSにはこれを専門にやるチームがいるらしいです。
AI DRIVEN【人工知能駆動】
AI活用を軸に物事を計画する手法です。かなり省略して言うと「DXの本質」といえるかもしれませんね。サブスクで顧客情報を収集して、機械学習させる。そして顧客満足度アップに活用。このループをぶん回すことを念頭に置いた計画。みたいな感じでしょうか。
VISION DRIVEN【ビジョン駆動】
ミッション・ビジョン・バリューの、ビジョンを見据えて逆算しながら行動する考え方。テトリスを作るにはどうするか
・日本一稼ぐスマホゲームはどんなものか
・100年後にプレイされるゲームはどんなものであるべきか
で、最後のものを考えながら日々行動していくことに近い。自分の老後は年金で生活したくない、50歳の時の収入を1億にするために、30歳までに2000万を達成しようみたいな。
HEART DRIVEN【心駆動】
何のことはない。ただ感情で動くという意味だと取れます。感情を利用して行動することによって、パワフルに行動できることもありますTPOによって使い分けが必要かもしれませんね。修辞学的な使い方が出来そうなマインドセットですね。
原体験 DRIVEN
英語にするとFormative Experience なので、分かりにくいから日本語です。しばらくは「原体験」が使われるだろうと思います。原体験とは幼いころにした経験のうち、現在の人格形成などに多大な影響を与えたもののことを指します。
MIND DRIVEN【マインド駆動】
マインドフルネス的な話だと思われます。マインドフルネスの本質は、目の前の具体的な事象に意識を集中させることで、脳のデフォルトモードネットワークと呼ばれる無駄な活動を低減することにあります。これにより、脳のリソースを最大限まで活用しようというお話です。
INSIGHT DRIVEN【インサイト駆動】
ともすれば、論語の「学びて思わざれば則ち罔し」となってしまいそうなこの言葉は、消費者の潜在意識(インサイト)を調査し、得られた気づきを商品開発から模擬販売までのブラッシュアップに役立てるという、マーケティング用語です。
DESIGN DRIVEN【設計駆動】
製品に新しい意味(UXなど)を与えることによって生じるイノベーション手法です。任天堂の言葉で言うと「枯れた技術の水平思考」によって生み出すことになるでしょう。
HAPPINESS DRIVEN【幸福駆動】
どこぞの宗教用語らしいです。言葉の意味そのままでとらえれば、「どうしたほうが幸せか」を基準に行動を選択していくのだろうと思われます。幸せとは何か?という定義が曖昧なので、MACの原則が使えなさそうですね。
MOTIVATION DRIVEN【動機駆動】
書籍が発売されていて、エンゲージメントの向上が主な内容のようです。エンゲージメントドリブンのほうがシックリきます。
MISSION DRIVEN【任務駆動】
ミッション、ビジョン、バリューのミッションを判断基準として強く意識する考えかたです。パナソニックで使われる言葉なようですね。社会で実現したいことというのが、ミッションであり、個人に置き換えると、ライフワークとも呼ぶべきことを主軸に置くことになります。
PURPOSE DRIVEN【目的駆動】
ほぼ、ミッションドリブンですね。
STRENGTH DRIVEN【強みドリブン】
個人で言えばストレングスファインダーを使ったりして、何ができるのかを考える方法であり、組織で言えば、コアコンピテンシーのようなものを軸にして事業展開していくような話。
製販 DRIVEN
医療業界の用語で、医工連携モデルです。製販企業が駆動力となって医療開発・事業化を進めます。
産官学連携のうち、産が主体ということですね。Business Drivenですね。
- メリット
- 企業が進めるため、収益を求めます。そのため、速度と価格競争が起きやすいです。
- デメリット
- 法規制が未発達だったり、開発段階で出てしまったりということが起こりえます。このデメリットをいかに打ち消すかが明暗を分けそうです。
EXPERIENCE DRIVEN【体験駆動】
ウェブマーケティングの用語です。UX【User Experience】を重視した考え方です。SEO【Serch Engine Optimization】などでも重要です。
使いこなすには人の気持ちが分かる必要があります。Data Driven を左脳型とした場合、こちらは右脳型とみることが出来ます。IQではなくEQが必要ということですね。
- メリット
- Customer Drivenなので、顧客にとって価値のあるものになります。
- デメリット
- Experienceだけ重視すると開発の難しさは度外視になるため、注意が必要です。
COMMUNITY DRIVEN【共同体駆動】
COMMUNITY DRIVEN【共同体駆動】
キングコング西野などが主導する、新しい生き方につながっていくと思われます(※なんか違います)。
OSSなどでは既に浸透している考え方で、コミュニティを利用してCustomer Drivenを加速させる手法です。CADソフトであるSolidWorksは、このCommunity Drivenを売りにして世界シェアトップを取りました。APIを利用して開発者コミュニティを形成するのもこれをやりたいためです。
また、Wikiを見ると分かりますが、発展途上国の開発支援手法としての用語でもあるようです。
FOUR WHEEL DRIVEN【四輪駆動】
悪路走行性能に長けた駆動方式です。積雪の多い地域で採用実績が多いです。略称は「よんく」または「4WD」です。
- メリット
- 自動車には4輪がありますが、二輪駆動と違い、4輪すべてが駆動するため、接地車輪の数が少なくても走行継続できる可能性が高まります。
- デメリット
- パーツ点数が多いからなのか、なぜか高価です。プログラマー的には、インスタンス数を倍にするだけなのになんで?って感じです。しかし、メカエンジニア的には、高くて当然です。超めんどくさいですもん。
TEAM DRIVEN【チーム駆動】
チームによって人が違うため、チームごとに最適化した仕事の仕方があるという考え方です。この考え方では、Googleの研究結果にもあるように「心理的安全性」が重視されます。
LEARNING DRIVEN【学習駆動】
学習することがベースにある手法です。「同じことは繰り返さない!」がモットーでしょうか。ビジネスの世界では「申し訳ありません、辞職します。」ではなく、「再発防止策を作成します。」が正解と言われています。これを重視した考え方ですね。
PASSION DRIVEN【パッション駆動】
特にCommunity Drivenにおいて、パッションを基準に考えられたコミュニティは継続しやすいという考え方があります。
愛着駆動【Enagagement Driven】と言い換えてもいいかもしれません。
https://www.amazon.co.jp/dp/B07J17Z9ZF
TICKET DRIVEN【切符駆動】
TICKET DRIVEN【切符駆動】
何をするのかをチケットとして定義し、そのチケットのやり取りで管理する開発手法です。
Issue Driven やTest Driven を包括した、1つ上のレイヤーの手法として使えます。RedmineやBacklogを使うとやりやすかったりします。
- メリット
- 誰が何を何時間かけてやったのかが分かります。結果の管理がしやすいです。
- デメリット
- 全体を見渡せる人が減ります。また、与えられたタスクをこなすだけで良いため、想像力のある人も減ります。
まとめ
いろいろな業界の用語にDrivenが使われていて、参考になりますね。「これって他の業界でも当てはめれるよね」っていうアナロジーができそうで楽しくてアドレナリンがドバドバです。
また、早い者勝ちみたいなところがあって面白いですね。異口同音、同音意義が生まれやすそうです。これだけ○○Drivenの中だけで派生や包括が見られるのは興味深いです。
ちなみに
- ちなみにDrivenはたいてい「駆動」と訳されますが、「主導」と訳せる場合もありそうですね。
- ●● driven の●●が能動の場合は「主導」、受動の場合は「駆動」な気がします。
- 途中から「Wikipediaに書くべき」と思ったのはオフレコです。
- 気が向いたら○○First系や○○as△△の記事も書きます。
- 修正依頼、大歓迎です。ぜひお願いします。
- 特にプログラマー視点での修正依頼を所望します。
Excelsior!