mucadoo logo
  • ホーム
  • トピック
    • アーキテクチャ
    • 人生
  • 日本語
    • English英語
    • Françaisフランス語
    • Portuguêsポルトガル語
    • Italianoイタリア語
    • Españolスペイン語
    • 日本語

© Samuel Britto. 全著作権所有。

新規アーキテクチャ

アーキテクチャを自我より優先:11年後にバックエンド構築をやめた理由

業界で11年働いて学んだことは、最もコストがかかるのは購入できたはずのもの、あるいはこの場合は設定できたはずのものを構築することだということです。私たちはしばしば、すべてをゼロから構築することで技術的な深さを証明したいという衝動に駆られますが、長い間、これは私自身の自我のために支払った創造的な税金に過ぎませんでした。本当の挑戦は、実装の芸術に集中できるように、いつツールを使うべきかを知ることです。

1. レガシー:高い基準、脆弱なバックエンド

私のポートフォリオは常に誇りに思っているプロジェクトでしたが、最近まで、その技術的基盤はタイムカプセルのようでした。何年もの間、INIファイルからデータを解析するシンプルなPHPバックエンドですべてを管理していました。最終的には、フロントエンドがローカルのJSONファイルから直接生データを読み取る設定に移行しました。

フロントエンドは洗練されていましたが、ワークフローは持続不可能でした。タイプミスの修正やプロジェクトの更新のたびに、IDEを開き、ファイルを編集し、コミットをプッシュする必要がありました。デスクから離れているときに一文だけ更新したいと思ったときに、完全なデプロイサイクルなしではできないことに気づいたときの苛立ちを覚えています。2025年初頭、専門的な変化の時期だと決めました。コード行に触れることなく、どのデバイスからでもUIでコンテンツを管理できる、堅牢でアクセス可能なバックエンドが欲しかったのです。

2. 「Headless」の再発見

カスタム管理インターフェースをゼロから構築して車輪の再発明をしたくなかったので、市場ですでに利用可能なプロフェッショナルソリューションを探索し始めました。その探索は「Headless CMS」のコンセプトに直行しました。馴染みのない方のために説明すると、このアーキテクチャでは「ヘッド」(フロントエンド)がコンテンツリポジトリから完全に分離されており、データをAPI経由でどこにでも提供できます。私は実際にエンタープライズレベルでこのアーキテクチャを扱った経験がありましたが、独立市場がどれほど進化したかは知りませんでした。

Contentfulのような、SaaS分野の「業界の巨人」から始まる、膨大な選択肢をすぐに発見しました。これらのプラットフォームは強力ですが、成長するプロジェクトにとって時限爆弾のように感じられる、制限的な「レコードごとの課金」階層とAPI制限が付いてくることが多いのです。エンジニアとして、自分の成長がサブスクリプションの請求書によってペナルティを受けることは望みませんでした。私が望んだのはデータ主権でした—コードとデータベースを所有したかったのです。

3. セルフホスティング環境の評価

セルフホスティングのオプションに完全に切り替え、技術的な「純粋さ」と管理の容易さのバランスが取れたツールを探しました。現在のリーダーを監査しました:

  • Ghost: 公開には優れていますが、マルチエンティティのポートフォリオには硬直的すぎます。
  • Directus: データベースミラーリングの強力なツールですが、UIは流動的でクリエイティブな執筆体験には少し「エンジニア中心」すぎると感じました。
  • Payload CMS: 印象的なコードファーストのアプローチですが、ダッシュボードを見る前にすべてのフィールドをコードで定義する必要のない、より成熟したビジュアルビルダーが欲しかったのです。
architecture-over-ego-strapi-migration

4. なぜStrapi?完璧な中間地点

Strapiが際立っていた理由は、「すぐに使える」アプリケーションと高度にカスタマイズ可能なフレームワークの完璧な中間地点を表しているからです。電話から素早く更新する必要があるときに救世主となる、洗練された直感的なUIを提供しますが、決して「low-code」のバブルに閉じ込めることはありません。Node.js上に構築されているため、標準のCMSでは提供できないロジックが必要なときは、カスタムlifecycle hooksを書いたり、APIコントローラーを拡張したりする力がまだあります。

このバランスにより、過去に直面した摩擦なしにインフラストラクチャを拡張できました。エコシステムには、明確な勝者となる機能が満載されています:

  • 国際化 (i18n): 6つの言語でコンテンツを扱うことは大きなアーキテクチャ上のハードルですが、Strapiはロケールを第一級の市民として扱います。ローカライズされたSEOメタデータを管理し、クリーンなインターフェースで言語を切り替えることができます。
  • Content Type Builder: 複雑なスキーマを視覚的に設計でき、それが自動的にRESTおよびGraphQL APIを生成しました。
  • Dynamic Zones: これがゲームチェンジャーでした。コンテンツをモジュラーデータシステムに変換し、コードスニペット、ギャラリー、またはテキストブロックをレゴブロックのように積み重ねることができます。

このブログを立ち上げたとき、ゼロから始める必要はありませんでした。既存のStrapiモデルを拡張して両方のプロジェクトに対応させただけです。これにより、バックエンドは静的ファイルリーダーから、スケーラブルなマルチプロジェクトエンジンに変わりました。

結論

このブログは、他の開発者がエンジニアリングの効率性を重視するよう促すために作成しました。ゼロから構築することの「かっこよさ」に迷い込むのは簡単です。深い技術的コントロールと人間中心のインターフェースのバランスが取れた基盤を選ぶことは、はるかに困難で、そしてより報われることです。

基盤は整いました。Strapiが残りを処理します。今こそ、構築する時です。

共有

  • Facebook
  • Twitter
  • LinkedIn
  • WhatsApp
  • Reddit
  • Telegram
  • メール
  • 0 件の返信