本文へ移動
cutty.dev
All posts

cutty.devのテクノロジースタック:意図的な選択

cutty.devの裏側にある技術スタックとその理由。宣伝抜きで:安定した地味な技術スタック、EU内でのホスティング、そして一人の開発者が維持可能なアーキテクチャに組み込まれたプライバシー保護。

「私の技術スタック」に関する記事の多くは、最新トレンドへの自慢の羅列です。この記事はそれとは異なります——cutty.dev の選択の背後にある哲学についてです。流行ではなく退屈で安定したものを、アメリカではなくヨーロッパを、プライバシーをデフォルトとし、かつ一人の人間が維持できるほどシンプルなものを選びます。

フレームワーク:Astro(サーバーサイドレンダリング)

cutty.dev はサーバーサイドレンダリングされるAstroアプリケーションです。すべてのリクエストはサーバーを経由し、ページが動的に構築され、完成したHTMLで応答します。

理由: 重いインフラなしでサーバーサイドレンダリングを実現し、フレームワークに多数の言語が内蔵されており、オーバーヘッドのない高速性を得たかったからです。Astroはそれらをすべて提供し、コードも可読性を保ちます。ソロプロジェクトでは、その可読性はどんな流行りの機能よりも価値があります。

データベース:SQLite

1つのデータベース、1つのファイル。さらにTypeScriptに優しいクエリレイヤーにより、データ構造の変更がプロダクション環境でのエラーではなく、コード上で即座に検出されます。

理由: cutty.dev は主に「読み取り中心」のアプリケーションです。リンクをクリックするたびにデータが読み取られ、カウントが増加します。SQLite はこれを非常に優れたパフォーマンスで処理でき、1日あたりのトラフィックが非常に多くても問題ありません。バックアップは単に1つのファイルをコピーするだけで済み、レプリケーションのための複雑な手順や難解なスクリプトは不要です。ここで求められている単純さは、品質への妥協ではありません。それは「可動部が少ないほど、故障する要素も少なくなる」という意識的な選択なのです。

ホスティング:EU内のサーバー

  • EU内の専用サーバー
  • 独自のTLS証明書
  • 自動HTTPS対応のリバースプロキシ
  • コンテナ化されたアプリケーション

なぜか: これは、cutty.devがデータをどのように扱うかの基盤です。データの場所に対する完全な制御(EUの顧客およびGDPRにとって重要)、単一のベンダーへの依存からの解放、大手クラウドプラットフォームが提供する米国への自動レプリケーションの回避、トラフィックに依存した請求ではなく予測可能なコスト。便利な西洋のプラットフォームはより迅速なスタートを提供するでしょうが、それはユーザーのデータが物理的にどこに保存されるかという代償を伴います。

翻訳:ローカルAIモデル

cutty.dev は 25 の言語に対応しており、翻訳は当社の独自インフラ上で実行されるローカルのオープンソース AI モデルによって行われます。

理由: インターフェースのテキストは一切外部に送信されず、外部のAIプロバイダーにもデータが送られません。これにより、1回の翻訳あたりのコストはゼロで、品質を完全に制御できます。必要に応じていつでも更新可能です。機械翻訳には常に人間の確認が必要ですが、すべての言語がこのレビュープロセスを経ています。自前で処理することで、プライバシーが価格表上のオプションではなく、アーキテクチャの基本的な特性となります。

CSS: ユーティリティファースト(Tailwind)

一つのスタイルシステム、CSS-in-JSなし、個別のスタイルファイルなし。すべてテンプレート内で直接記述。

理由: イテレーションの速度。クラスの命名に時間を費やす必要がなく、未使用のスタイルも最終的なページには反映されません。システム自体が一貫したデザインを強制します。一人の開発者にとって、余計なことに費やさない分の1分1秒が重要です。

導入:コンテナ

コンテナ化されたアプリケーション(Docker)、反復可能でポータブルな方法でデプロイされます。

理由: ローカル環境と本番環境が同じであるため、「自分の環境では動いた」という問題が発生せず、必要に応じて半時間で全体を別のサーバーに移行できる柔軟性があります。移植性は独立の一形態です。

これが私に教えてくれたこと

  • 退屈な技術スタックが勝つ。 Astro、SQLite、Tailwind、コンテナ——すべて成熟しており、文書も充実し、安定しています。予期せぬ瞬間に何も壊れません。
  • EUでのホスティングは本番環境に対応済み。 「真剣に取り組むには米国の巨大クラウドに行かなければならない」というのは、まさに神話です。
  • ローカルAIは現実的。 良い翻訳を得るために、外部APIにデータを渡す必要はありません。
  • 1人でチームが作ったような製品に見えるものをリリースできる。 時間は金銭よりも高価な資源なので、ここでの選択はすべて時間を守るためのものでした。

ライブで見る。技術的なアプローチに関する質問は、hello@cutty.dev まで。当日中に対応します。