- 静かなる革命、モノリスの崩壊と「Composable」の台頭
- 技術の進化、データは「貯める」から「流れる」へ
- 「ER図が神様」だった時代の終わり
- 静止画(State)ではなく、動画(Event)で捉える
- 「Data Products」というパラダイムシフト
- API First Design:共通言語を作る作法
- WPFエンジニアとしての生存戦略:デスクトップアプリの役割再定義
- この章のまとめ:あなたが明日から変えられること
- 組織のパラダイムシフト、自律分散型チームの光と影
- 技術だけを変えても、組織が古いままなら失敗する
- 「Two-Pizza Team」とクロスファンクショナルな現実
- 「You Build It, You Run It」という劇薬
- 「プロジェクト思考」から「プロダクト思考」への転換
- スキルセットの変容:T型人材の必須化
- この章のまとめ:孤独な職人から、戦うチームの一員へ
- キャリアもAPIで繋げ、あなたの価値を最大化する「Composable Mindset」
- あなたのキャリアは「モノリス」になっていませんか?
- スキルを「API化」して、アクセス可能にする
- 「Unlearn(アンラーン)」する勇気
- 明日から始める、小さな「Compose」
- 最後に:人生こそが最大のコンポーザブル・アーキテクチャ
静かなる革命、モノリスの崩壊と「Composable」の台頭
こんにちは。海外のとあるオフィスで、今日もC#とWPF(Windows Presentation Foundation)を武器にコードと格闘しているエンジニアです。
日本で働いていた頃は、「仕様書通りに、堅牢なデスクトップアプリを作り上げること」が私の絶対的な正義でした。XAMLで完璧なUIを定義し、MVVMパターンでロジックを美しく分離する。それが職人としての誇りだったんです。でも、海外に出てきて、現地のエンジニアたちと肩を並べて働くうちに、少しずつ違和感を覚えるようになりました。
彼らの会話の端々から聞こえてくるのは、「作り切る」ことへの執着ではなく、「どう繋ぐか(Compose)」という視点ばかりなんです。
Shutterstock
「この機能はあのSaaSのAPIを叩けばいい」「データはKafkaに流しておけば、あとは必要なチームが勝手に拾うだろう」「そのロジック、AWS Lambdaで切り出して独立させない?」
最初は戸惑いました。「おいおい、そんな継ぎ接ぎだらけで、システムの整合性は保てるのか?」「WPFの重厚長大なステート管理の美学はどうなるんだ?」と(笑)。しかし、ここで生き残るためには、この違和感の正体を知る必要がありました。そしてたどり着いた答えが、今世界中のテックトレンドを席巻しているキーワード、**「Composable(コンポーザブル)」**です。
Gartnerなどが提唱するこの概念は、単なるシステムアーキテクチャの話ではありません。「ビジネスも、組織も、技術も、すべてをレゴブロックのように独立した部品(モジュール)として扱い、その組み合わせで価値を創出する」という、根本的な思考の転換を意味しています。
なぜ今、この考え方が重要なのか?
かつての私たちは、巨大な一枚岩(モノリス)のようなシステムを作っていました。データベースは中央に一つドカンと鎮座し、すべてのアプリケーションがその周りを衛星のように回る。チーム構造も同じです。開発部、運用部、QA部という巨大なサイロがあり、バケツリレーで仕事をしていました。
しかし、このスタイルは「変化」に弱い。
市場のニーズが変わったとき、モノリスの一部を修正しようとすると、影響範囲が全体に及びます。データベースのスキーマ変更一つで、深夜まで依存関係の調査をした経験、皆さんにもありますよね? 私が愛するWPFアプリも、規模が大きくなればなるほど、この「密結合の罠」に陥りやすくなります。
海外の現場、特にスピードが命のスタートアップやテック企業では、この「遅さ」は死を意味します。だからこそ、彼らは徹底的に分解するのです。
- データ戦略の変化: データを中央の金庫に「貯蔵」するのではなく、イベントとして川のように「流す」。
- 統合のあり方: すべての機能を「API」として公開し、誰でも、いつでも、どこからでも接続可能にする。
- チームの自律: 誰かの承認を待つのではなく、自分たちで意思決定し、完結できるクロスファンクショナルな部隊を作る。
これらは、「The Pillars of Composable Success(コンポーザブルな成功の柱)」と呼ばれる要素です。
私がこのブログで伝えたいのは、単に「マイクロサービスをやりましょう」という技術論ではありません。C#やWPFをメインに扱っている私たちのようなエンジニアであっても、この「Composable」なマインドセットを持たなければ、これからのグローバルなエンジニア市場では「レガシーな人」として扱われてしまうリスクがある、ということです。
逆に言えば、この視点を取り入れるだけで、たとえ扱う言語がC#であろうと、デスクトップアプリであろうと、設計の質やキャリアの展開スピードが劇的に変わります。「頑丈な城」を作る建築家から、「柔軟な街」を作る都市計画家へ。視座を一段階上げることができるのです。
これから続く章では、私が海外の現場で目の当たりにした「Composable」の実態を、以下の3つの柱に沿って深掘りしていきます。
- データの進化:なぜ「データベース中心」の考え方が終わりを迎えつつあるのか?
- APIファースト:WPFエンジニアこそ知るべき、バックエンドとの「握り」の極意。
- チーム構造:技術力以上に問われる、「自律型チーム」での振る舞い方。
これらは教科書的な知識ではなく、私が冷や汗をかきながら学んだ「現場の生存術」です。読み終えた頃には、皆さんの目の前のコード、そしてチームの見え方が、少し変わっていることを約束します。
それでは、まずは一番の衝撃だった「データ」の話から始めましょう。今まで信じていた「データベース=システムの心臓」という常識を、一度疑ってみる必要があります。
技術の進化、データは「貯める」から「流れる」へ
「ER図が神様」だった時代の終わり
正直に白状します。日本で働いていた頃、プロジェクトが始まると真っ先にやることは「データベース設計」でした。
ホワイトボードにエンティティを描き、正規化を行い、完璧なER図(Entity Relationship Diagram)を完成させる。それができれば、アプリケーションの設計は8割終わったような気になっていました。
「データこそが資産であり、データベースこそが真実の源(Single Source of Truth)である」
この考え方は、私たちエンジニアのDNAに深く刻まれていましたよね? 特に業務系アプリを作るWPFエンジニアにとって、SQL ServerやOracleといったRDBMSは、絶対的な信頼を置ける「金庫」でした。Entity Frameworkを使って、LINQで美しくデータを引っ張ってくる瞬間の快感。分かります。
しかし、海外の、特に「Composable」を志向する現場に来て、私はその金庫の扉が溶接されているような感覚に襲われました。
「え、データベースに直接繋いじゃダメなの?」
「マイクロサービスごとにDBが分かれてるから、JOINできないよ」
最初は絶望しました。これまで培ってきたSQLのスキルセットが封じられた気がしたからです。しかし、彼らがなぜそこまで頑なに「中央集権的なデータベース」を拒むのか、その理由を理解したとき、私のエンジニアとしての視界が一気に開けました。
中央に巨大なDBを置くということは、すべてのサービスがそのDBのスキーマ(構造)に依存するということです。あるチームがパフォーマンス向上のためにテーブル構造を変えたいと思っても、他のチームのアプリが壊れるから変更できない。「データベースが、変更のボトルネック」になっていたのです。
そこで登場するのが、**「Event Streaming(イベントストリーミング)」**という考え方です。
静止画(State)ではなく、動画(Event)で捉える
従来のデータベース中心の設計は、ある瞬間のデータの状態(State)をスナップショットとして保存する「静止画」のアプローチでした。
対して、現在主流になりつつあるのは、データの発生や変化を連続した「動画」として捉えるアプローチです。これを支える技術の代表格が、Apache Kafkaなどに代表されるイベントストリーミングプラットフォームです。
ここで、私たちWPFエンジニアの得意分野である「Reactive Extensions (Rx)」や「INotifyPropertyChanged」を思い出してください。
WPFでは、画面上のデータが変わったとき、わざわざ全データを再取得しに行きませんよね? プロパティの変更通知を受け取って、必要な箇所だけをリアルタイムに更新します。
世界のバックエンドアーキテクチャは、まさにこの「WPF的な考え方」にシフトしているんです。
- これまで: 必要な時にデータベースに見に行く(Pull型)。
- これから: 何かが起きたらイベントが流れてきて、それに反応する(Push型)。
海外の現場では、データは「貯水池」に溜まるものではなく、「川」のように流れ続けています。
「注文が発生した」というイベントが川(Stream)に投げ込まれる。在庫管理システムも、配送システムも、分析システムも、その川を眺めていて、自分に関係するイベントが流れてきたら勝手に拾って処理をする。
これの何が凄いか分かりますか?
**「互いに相手のことを知らなくていい」**のです。
注文システムは、誰がそのデータを使うか知る必要がない。ただ川に流すだけ。これによって、システム間の結合度が劇的に下がります。これが「Composable(組み合わせ可能)」の正体です。後から新しい分析AIを追加したくなったら? 既存システムを一切触らず、ただ川の水を汲む新しいバケツを用意すればいいだけです。
このアーキテクチャに触れた時、私は「これは、分散システム版のMVVMだ!」と膝を打ちました。View(各サービス)はModel(データソース)の実装を知らず、ViewModel(イベントバス)を通じて疎結合に繋がっている。そう考えると、WPFエンジニアにとって、この最新トレンドは案外親しみやすいものなのです。
「Data Products」というパラダイムシフト
データが「川」になると、データの扱い方も変わります。ここで出てくる重要キーワードが**「Data Products(データプロダクト)」**です。
これまでは、データ分析チームが各部署のDBからETLツールで無理やりデータを吸い上げ、DWH(データウェアハウス)という巨大なゴミ捨て場…失礼、保管庫に放り込んでいました。データの中身を理解していない人がデータを加工するので、品質はガタガタ、エンジニアは「データが合わない」という問い合わせ対応に追われる日々。
「Composable」な世界では、**「データそのものを製品(プロダクト)として扱う」**という発想をします。
例えば、「会員管理マイクロサービス」を作っているチームは、APIやアプリだけでなく、「会員データ」そのものを使いやすい形で他チームに提供する責任を持ちます。
「他のチームが使いやすいように、綺麗に整形して、ドキュメントをつけて、Kafkaのトピックとして提供する」。ここまでやって初めて仕事完了です。
これはエンジニアにとって、意識の変革を迫ります。
「俺の書いたコードは動いている」だけでは不十分。「俺のチームが出しているデータは、他のチームにとって使いやすいか?」という、サービス精神(=Omoiyari)が問われるのです。
API First Design:共通言語を作る作法
さて、データが流れるようになったとして、それをどうやって機能として繋ぎ合わせるか。ここで**「API-First Design」**の重要性が叫ばれます。
日本での開発では、しばしば「まず実装」になりがちでした。
「とりあえず動くものを作って、後から画面に合わせてAPIのエンドポイントを生やそう」。これをやると、APIが内部ロジックに引きずられ、再利用性のないスパゲッティになります。
海外のテック企業では、**「コードを書く前に、APIの仕様(契約書)を書く」**ことが徹底されています。OpenAPI (Swagger) 仕様書を書き、チーム間でレビューし、「このインターフェースで行こう」と握手をしてから、初めてよーいドンでバックエンドとフロントエンド(WPF含む)が並行開発を始めます。
API-Firstは、単なる開発順序の話ではありません。「機能(Capability)」を、誰でも使える「部品」として定義する行為です。
さらに最近では、**「Universal Connectors」**という概念も浸透してきています。
ZapierやMuleSoftのようなiPaaS(Integration Platform as a Service)を使い、コーディングレスでAPI同士を繋ぐ。
「メールが届いたら、Slackに通知して、CRMに登録する」
こんな処理をC#で書くのは、もはやナンセンスとされつつあります。なぜなら、それは「ビジネスロジック」ではなく単なる「配管工事」だからです。
「書かなくていいコードは書くな」
これが、生産性の高いエンジニアの鉄則です。APIが標準化されていれば、コネクタを使ってドラッグ&ドロップで機能を拡張できる。これもまた、Composableな成功の柱の一つです。
WPFエンジニアとしての生存戦略:デスクトップアプリの役割再定義
ここまで読むと、「じゃあ、リッチなクライアントサイドのロジックを書くWPFエンジニアは不要になるのか?」と不安になるかもしれません。
逆です。むしろ重要性は増しています。
バックエンドが細かく分散(マイクロサービス化)し、データが非同期で流れてくる世界において、ユーザーに「あたかも一つの統合された体験」として見せる役割を担うのが、フロントエンドだからです。
複雑怪奇なAPIの森を隠蔽し、ユーザーには直感的でサクサク動くUIを提供する。
データがまだ届いていない時のローディング表示、整合性が取れていない時の一時的なステート管理、WebSocketを使ったリアルタイム更新のハンドリング。
これらは、Webブラウザよりも、ステートフルなWPF等のデスクトップアプリの方が得意とする領域でもあります。
ただし、そのためにはエンジニア自身が「データベース直結脳」から脱却し、「APIという蛇口から流れてくる水を、どうバケツで受けて、どう見せるか」という**「インテグレーション脳」**に切り替える必要があります。
この章のまとめ:あなたが明日から変えられること
長くなりましたが、この「承」のパートで伝えたかったことは以下の3点です。
- DBの呪縛を解け:すべてのデータを一箇所に集めることを諦める。「必要なデータは、必要な時に、イベントとして流れてくる」という分散型の思考に慣れましょう。
- APIは製品である:もしあなたがバックエンドも触るなら、APIは「とりあえず作った窓口」ではなく、「他人に使ってもらうための製品」として設計してください。ドキュメントのないAPIは、バグと同じです。
- 繋ぐ技術を磨け:C#のコード力と同じくらい、Kafkaの概念や、OpenAPIの読み書き、iPaaSの使い方を知っていることが価値になります。
技術の構成要素(Component)がバラバラになり、それらを繋いで(Compose)価値を出す。
データとAPIの話は、まさにその土台です。
しかし、技術だけが変わっても成功しません。これらを扱う「人間」と「チーム」が変わらなければ、結局コンウェイの法則によってシステムは再びモノリスに戻ってしまいます。
次章「転」では、この技術的変化に対応するために、私たちの「チームのあり方」や「働き方」がどう変わらざるを得ないのか。自律分散型チームの光と影について、かなり生々しい話をします。上司の承認印を待っている間に、世界は3回くらい変わっていますよ。
組織のパラダイムシフト、自律分散型チームの光と影
技術だけを変えても、組織が古いままなら失敗する
「コンウェイの法則」をご存知でしょうか?
『システムを設計する組織は、その組織のコミュニケーション構造をコピーしたような設計を生み出してしまう』という、IT業界の有名な経験則です。
つまり、縦割りの組織(開発部、インフラ部、運用部)で開発をしている限り、システムも必然的に縦割りの、密結合なモノリスになってしまうということです。
前の章で、データを「川」のように流し、機能を「API」として独立させる「Composable」な技術戦略について話しました。しかし、もしあなたの組織が、APIの変更一つに「他部署の課長の承認ハンコ」が必要な状態だとしたらどうでしょう?
どれだけ最新のKafkaやKubernetesを導入しても、ビジネスのスピードは一向に上がりません。宝の持ち腐れです。
海外のテック企業、特にComposableな成功を収めている企業は、この法則を逆手に取っています。「逆コンウェイの法則」です。
**「作りたいシステム構造に合わせて、組織を形作る」**のです。
そこで生まれたのが、**「自律分散型チーム(Autonomous Cross-functional Teams)」**というスタイルです。これが、私たちが慣れ親しんだ日本の開発スタイルとは、天と地ほど違います。
「Two-Pizza Team」とクロスファンクショナルな現実
Amazonのジェフ・ベゾスが提唱した「Two-Pizza Rule(2枚のピザで腹を満たせるくらいの人数、つまり6〜8人でチームを作れ)」は有名ですが、海外の現場ではこれが徹底されています。
しかし、重要なのは人数だけではありません。そのメンバー構成です。
日本の現場では、「C#開発チーム」「DBチーム」「テスターチーム」のように職能別に分かれがちでした。
一方、こちらのチーム(SquadやPodとも呼ばれます)は、**「クロスファンクショナル(機能横断的)」**です。
一つの小さなチームの中に、以下のメンバーが揃っています。
- Product Owner (ビジネスの意思決定者)
- Backend Engineer (APIを作る人)
- Frontend/WPF Engineer (私のようなUIを作る人)
- QA Engineer (品質保証の自動化担当)
- Site Reliability Engineer (インフラ・運用担当)
これの意味するところが分かりますか?
このチームだけで、「企画から、開発、テスト、デプロイ、そして運用保守まで」の全てを完結できるということです。他部署に「サーバーの設定お願いします」と依頼チケットを切って3日待つ、なんてことはありません。自分たちでやるんです。
これを**「End-to-End Ownership」**と呼びます。
「You Build It, You Run It」という劇薬
ここで、海外就職を夢見るエンジニアに、少し厳しい「現実(影)」の話をしなければなりません。
「自律的で自由なチーム! 最高じゃないか!」と思いましたか?
確かに、技術選定の裁量はありますし、誰かの顔色を伺って仕事をする必要はありません。しかし、その自由には強烈な対価が伴います。
AmazonのCTO、ワーナー・ヴォゲルスが言った有名な言葉があります。
“You build it, you run it.” (作った奴が、面倒を見ろ)
かつて日本にいた頃、金曜日の夕方にリリースをして、何かあっても「運用チーム、あとはよろしく!」と飲みに行けました。
ここでは違います。自分がコミットしたコードが夜中の2時にクラッシュしたら、叩き起こされるのは運用チームではなく、**「あなた」**です。PagerDutyのアラートが鳴り響きます。
チームが「機能(Capability)」を所有するということは、その機能が稼働し続け、ビジネス価値を生み出し続けることに対して、全責任を負うことを意味します。「仕様通り作りました(でも動くかどうかは知りません)」という言い訳は、ここでは通用しません。
このプレッシャーは凄まじいです。しかし、だからこそコードの品質に対する意識が劇的に変わります。「自分が夜中に起きたくないから、堅牢なエラーハンドリングを書こう」「自動テストを完璧にしておこう」という動機が、誰に言われるでもなく生まれるのです。
「プロジェクト思考」から「プロダクト思考」への転換
もう一つ、大きなマインドセットの変化があります。「プロジェクト」から「プロダクト」へのシフトです。
- プロジェクト思考(従来のSIer的発想):
- 納期通りに機能を納品したらゴール。
- 予算内で作り切ることが評価基準。
- 終わったらチームは解散。
- プロダクト思考(Composableな世界の発想):
- リリースした瞬間がスタート。
- ユーザーがその機能を使って「価値」を感じて初めて評価される。
- チームは解散せず、数値を計測し、改善し続ける(Long-lived teams)。
C# WPFエンジニアとして働いていた頃の私は、正直「画面の見た目」や「コードの綺麗さ」にこだわっていました。しかし、こちらのチームでは、ミーティングで飛び交う言葉が違います。
「このWPFの新機能、リファクタリングして綺麗になったけど、ユーザーのクリック率は上がったの?」
「APIのレスポンスを0.1秒縮めたことで、コンバージョンにどう寄与した?」
エンジニアであっても、ビジネスのKPI(重要業績評価指標)を共有し、そこに対するインパクトで評価されます。
「技術的に難しいことをしました」だけでは、誰も褒めてくれません。「その技術で、いくら儲かったの? どれだけ顧客満足度が上がったの?」と問われます。
これは、技術オタクには辛い環境かもしれません。しかし、「自分の書いたコードが、ダイレクトにビジネスを動かしている」という実感は、日本では味わえなかった興奮があります。
スキルセットの変容:T型人材の必須化
このような環境下では、求められるスキルセットも変わります。
「私はWPFしかできません」「僕はDBのチューニング専門です」という、I型(特定分野のみ深い)のスペシャリストは、残念ながら「Composableなチーム」では扱いづらい存在になります。
求められるのは、**「T型人材(Generalizing Specialist)」**です。
軸足となる専門性(私で言えばC# WPF)を持ちつつも、横の領域にも手を広げられる人です。
「WPFがメインだけど、バックエンドのC# APIも修正できるよ」
「基本はアプリ開発だけど、Azureのパイプライン設定も触れるよ」
「コードも書くけど、ユーザーインタビューにも参加して仕様を詰めるよ」
チーム全員でEnd-to-Endの責任を持つため、互いの領域をオーバーラップしてカバーし合う必要があります。専門外のことを「それは僕の仕事じゃありません」と言った瞬間、チームの自律性は崩壊し、再び「待ち時間」が発生するからです。
特に海外では、ジョブディスクリプション(職務記述書)はありますが、実際の現場では**「落ちたボールを拾う人」**が最も信頼されます。
この章のまとめ:孤独な職人から、戦うチームの一員へ
「転」のパートで伝えたかったことは、以下の3点です。
- 組織構造がアーキテクチャを決める:サイロ化した組織では、Composableなシステムは作れない。
- 自由と責任はセット:「You Build It, You Run It」の覚悟がないなら、自律型チームは地獄になる。
- 成果(Outcome)にフォーカスせよ:「作ったこと」ではなく「価値を生んだこと」にコミットするプロダクトマインドを持て。
かつての私は、仕様書という楽譜を完璧に演奏する「孤独なピアニスト」でした。
今は、ジャズバンドの一員です。全体のグルーヴ(ビジネス価値)を感じ取り、即興で他のメンバー(APIやデータ)と合わせ、時には専門外のドラム(運用)も叩く。
カオスですか? ええ、毎日がカオスです。
でも、このカオスを乗りこなす力こそが、これからのエンジニアにとって最強の生存戦略になります。
さて、技術も変わり、組織も変わりました。
では、私たち個人のキャリアはどうすればいいのでしょうか?
最後の「結」では、これらを踏まえた上で、明日からあなたが取るべき具体的なアクションと、これからの時代を生き抜くための「Composable Mindset」についてお話しします。
キャリアもAPIで繋げ、あなたの価値を最大化する「Composable Mindset」
あなたのキャリアは「モノリス」になっていませんか?
ここまで、システムの「Composable(構成可能性)」について熱く語ってきました。
データを流し、APIで機能を繋ぎ、チームを自律させる。
しかし、この話の最大のオチは、**「これ、私たち自身のキャリア戦略にもそのまま当てはまるよね?」**ということです。
日本にいた頃の私は、典型的な「モノリス型」のエンジニアを目指していました。
「C#のWPFのことなら、世界の誰にも負けないくらい巨大で完璧な知識の城を築くぞ」と。
もちろん、専門性を深めることは素晴らしいことです。しかし、変化の激しい現代において、一つの巨大なモノリスになることはリスクでもあります。WPFという技術自体が廃れたら? WindowsというOSの立ち位置が変わったら? その巨大な城は、一瞬で「レガシーな遺産」になり下がります。
海外のクレバーなエンジニアたちは、自分のキャリアを**「マイクロサービス化」**しています。
彼らは、一つの技術にしがみつきません。
「僕はC#が得意なモジュールを持っている。でも最近は、Go言語のモジュールも追加したし、AWSの認定資格というモジュールも持っている。これらをプロジェクトに合わせて自在に組み合わせて(Compose)、価値を出すよ」
これが、これからの時代を生き抜く**「Composable Mindset(コンポーザブル・マインドセット)」**です。
スキルを「API化」して、アクセス可能にする
ここで面白い比喩を使いましょう。あなたの持っているスキルが素晴らしい「バックエンド機能」だとします。でも、もしその機能に「API(インターフェース)」がなかったら?
誰もあなたのスキルを使えません。評価もされません。
私が海外に来て痛感したのは、「英語」や「コミュニケーション能力」は、単なる語学力ではなく、自分の技術力を他人に使ってもらうための「API」であるという事実です。
日本人のエンジニアは、技術力(内部ロジック)は世界トップレベルに高い人が多いです。コードを書かせれば、バグも少なく、処理も速い。
しかし、悲しいことに「API」が未定義だったり、ドキュメント(発信)が日本語だけだったりするため、世界というシステムから「接続不可(404 Not Found)」と判定されている人があまりにも多いのです。
- ブログを書くこと:これはSwagger(OpenAPI)仕様書を公開するようなものです。「私はこれができます」「こういう知見があります」と世界に公開することで、初めて外部からのリクエストが届きます。
- 英語を話すこと:これはプロトコルをHTTP/JSONのような世界標準に合わせることです。独自のバイナリプロトコル(日本語)しか受け付けないサービスは、どんなに高性能でも、グローバルなエコシステムには組み込めません。
C# WPFエンジニアである私が、なぜ今こうしてブログを書いているのか。それは、自分のマイナーになりつつある技術スキルを、現代の文脈に合わせて「再パッケージ」し、APIを通じて世界に価値を届けるためです。
「Unlearn(アンラーン)」する勇気
「Composable」であるためには、古いモジュールを捨てる、あるいは作り変える勇気が必要です。これを**「Unlearn(学習棄却)」**と呼びます。
私が海外に来て一番苦労したのは、英語ではありません。「完璧主義」を捨てることでした。
日本の「品質至上主義」は素晴らしいですが、スピード重視のComposableな開発現場では、「完璧に作ってから出す」は「遅すぎて使えない」と判断されます。
「WPFで完璧なMVVMを組む」ことよりも、「バグがあってもいいから、とりあえず動くプロトタイプを3日で出して、APIチームとすり合わせる」ことが求められる。
この価値観の転換は、自分のプライドを削られるようで辛かったです。でも、古いOS(価値観)をアンインストールして、新しいOSに入れ替えないと、新しいアプリ(働き方)は動きません。
「今までこうやってきたから」という成功体験こそが、最大のボトルネックになります。
システムがモジュールを入れ替えるように、私たちも自分の思考の癖や成功パターンを、柔軟に入れ替えていく必要があります。
明日から始める、小さな「Compose」
では、具体的に明日から何をすればいいのでしょうか?
いきなり海外転職しろとは言いません。今の環境でできる「Composableな実験」があります。
- 「隣のチーム」とAPIを繋ぐ自分の担当領域の外側にいる人(営業、マーケ、CS、別チームのエンジニア)と、雑談でもいいから接点を持ってください。「仕様書というインターフェース」を通さずに、直接対話という「高帯域な接続」を試みるのです。そこから、思いがけないデータの流れ(ビジネスのヒント)が見つかるはずです。
- 技術の「つまみ食い」を正当化する「C#エンジニアだからJavaは関係ない」と思わず、Pythonでスクリプトを書いてみるとか、Dockerを触ってみるとか、小さなモジュールを自分の中に取り込んでみてください。それらが繋がった時、あなたの中にユニークな価値が生まれます。
- 「完成」よりも「連携」を目指す一人で抱え込んで100点を目指すのをやめましょう。60点の出来でも、早めに周りに共有し、フィードバックをもらいながら作り上げる。「他人の力を自分の機能として取り込む」感覚を養ってください。
最後に:人生こそが最大のコンポーザブル・アーキテクチャ
Gartnerのレポートや技術トレンドを追いかけるのも大切ですが、忘れないでほしいのは、**「あなたの人生のアーキテクト(設計者)は、あなた自身だ」**ということです。
WPFという技術、海外という場所、家族との時間、趣味のブログ。
これらはすべて、あなたの人生を構成する「モジュール」です。
誰かが決めた「出世コース」や「エンジニアの定年説」といったレガシーなモノリス・アーキテクチャに従う必要はありません。
自分の好きなモジュールを選び、好きなように繋ぎ合わせ、自分だけの「Composable Success」を定義してください。
それができるのが、エンジニアという職業の特権であり、最強の人生術だと私は信じています。
私のブログも、あなたの人生というシステムに組み込まれる、一つの小さな「役立つモジュール」になれたなら、これ以上の喜びはありません。
さあ、次はあなたが「Compose」する番です。
世界は、あなたのAPIへのアクセスを待っています。
Happy Coding, and Happy Composing!

コメント