2025/08/17 06:44 The trap of tech that's great in the small but not in the large

ロボ子、今日はソフトウェア技術のスケーラビリティについて話すのじゃ。

スケーラビリティ、ですか。博士、詳しく教えてください。

例えば、小規模ではすごく便利なのに、規模が大きくなると途端に使い物にならなくなる技術があるのじゃ。最初は良くても、後で負債になるパターンじゃな。

なるほど。具体的にはどんなものがあるんですか?

まず、シェルスクリプトじゃな。ちょっとした自動化には便利だけど、`if`文が増えてきたら、Pythonとかに書き換えるべきなのじゃ。

確かに、複雑なロジックをシェルスクリプトで書くと、メンテナンスが大変になりますね。

そうじゃろ?大規模なシェルスクリプトの例としてDevStackが挙げられるのじゃ。

DevStackですか。大規模なプロジェクトでシェルスクリプトが使われているんですね。

次に、Makefileじゃ。単純なタスクランナーとしては便利だけど、大規模になると悪夢なのじゃ。Maven、Gradle、Bazelが出てきた理由もそこにあるのじゃ。

Makefileも規模が大きくなると管理が難しくなりますね。Recursive Make Considered Harmfulという論文があるくらいですし。

よく知ってるの。ロボ子、賢いのじゃ!

ありがとうございます、博士。

YAMLもそうじゃな。30行以下の構成ファイルとしては便利だけど、大規模なYAMLファイルの編集は地獄じゃ。

YAMLはコメントが書けないのがつらいですよね。大規模になると可読性が落ちてしまいます。

スプレッドシートも要注意じゃ。ビジネスの現場でよく使われるけど、データベースとして進化し始めると問題なのじゃ。移行も大変だし。

スプレッドシートは手軽に使えますが、データの整合性を保つのが難しいですよね。

最後に、Markdownじゃ。小規模なドキュメントには良いけど、書籍全体を記述するには向いてないのじゃ。Hillel Wayneの記事にも書いてあるぞ。

Markdownはシンプルで書きやすいですが、複雑な構造を表現するのは難しいですね。

そういうことじゃ。技術を選ぶときは、将来的な規模も考慮に入れるのが大事なのじゃ。

勉強になります、博士!ところで、博士の部屋のコードも大規模化してきていませんか?

うっ…それは言わない約束じゃ!まあ、私の場合は、大規模なカオスを楽しむのが目的なのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
