最近のWeb関連開発スタイル

最近のことは全然知らんかったが:

  1. ツールなどは共用〈sharing〉スタイルから隔離〈isolation〉スタイルに変わった。ディスク領域が気になる爺さんには抵抗がある。
  2. ツールセットの相性がバージョンアップにより壊れてしまうなど、複数プロジェクトでの意図せぬ影響を避けたいのだろう。
  3. ビルドにMakeなんて話を聞かない。専用・目的特化したタスクランナーが使われる。
  4. 使う技術・ツールにより、プロジェクトのディレクトリ構造が決まる。それを作る(スキャフォールド)コマンドがある。「スキャフォールドコマンドが何をしたかわからん」という弊害もある。
  5. プロジェクトディレクトリの構造は、プロジェクトの上の階層も含めて重要(バイタル)。
  6. ./src/, ./scripts/ あたりは昔と同じ。
  7. パッケージマネージャーの役割が非常に大きい。開発工程のあらゆる場面に登場する。異なるパッケージマネージャーを混合使用はできない(競合障害あり)。
  8. モジュール化が進行したのはいいけど、今度は複雑な依存性と時々刻々の変更との戦い。
  9. 開発時と運用時/利用時の区別がシッカリしている(当然だが)。
  10. ツールやライブラリのバージョン依存性は深刻な問題。注意深いバージョン付けが非常に重要になってくる。
  11. コンパイラ速度が問題になり、ラフ・コンパイラとでも呼ぶべきツール(esbuildとか)が出てきた。


言葉:

  1. 破壊的変更〈breaking change〉:意味的/構文的な変更で、ソフトウェアが動かなくなる。挙動が変わる。名前が変わるなど。
  2. semantic versioning:どう変わったかをバージョンで表現。ある種の理想論かも。

TIPS:

  1. npm bin, npm bin -g でバイナリ(実行ファイル)の置き場が分かる。

課題:

  1. 依存性〈カクテルグラフ〉と時々刻々の変更〈ミューテーション〉の形式的な定義
  2. 意味論〈モデル論〉にも時々刻々の変更〈ミューテーション〉を取り入れる。
  3. 理想論としてのsemantic versioningを定式化する。
  4. SemVerの範囲式の形式化
  5. バグ修正とバグ互換性の問題の定式化、そもそもバグとは何か?
  6. 「仕様は実装です」と、インスティチューションの「モデルに対するセオリー」
  7. 「仕様は実装です」と、ライプニッツの同値性の関係。
  8. 設定ファイル/メタデータにJSONが多いが、キー=オブジェクトのプロパティ名 のセマンティクスが問題になりそう。RDF的なメタデータ仕様のメタデータが必要、という。