1. Gitのコンセプトモデルがどうたらの論文
What's Wrong with Git? A Conceptual Design AnalysisというGitのコンセプトモデルが複雑だから、それを分析してやばそうな点を抜き出して、簡単にしたバージョンを作りましたという論文を読んだ。ACM Digital Libraryでダウンロードせずとも、論文は公開されている。(PDF)
ここでいうコンセプトモデルというのは、メンタルモデルとでも言うんだろうか、ユーザーが想定するシステムの像みたいなもの。ユーザーはシステムに対して「このシステムはこういうことを行う」みたいな「自分の中のシステムの動作予想」みたいなのを持ってるはずで、それが多分コンセプトモデルと呼ばれるもの。
この論文はこのコンセプトモデルが微妙に一貫性の無い動きをしたり、コーナーケースでユーザーの予想を裏切る動作を行うことで、ユーザーの満足度が下がるので、それを改善したいという目的のケーススタディとなっている。Gitのファイル操作に関するコンセプトモデルをうちたてて、そこから発生する想定ダメケースを紹介する。そして、それらを解消するべく、コンセプトモデルをシンプルにして、ユーザーが動作を予想しやすいモデルに変更し、それに基づいたGitのラッパーをつくった、という流れ。
この論文を読んだのはGitのより詳細な動作モデルについて書いてるかなぁと思って読んだのだけど、モデリング部分については分析したやつも、改善案として出された奴も、ちょっとがっかりした。読んでみると分析したのは一部分だけで、しかもコンセプトモデルが自分の思ったやつよりも高レイヤっぽかった。自分はコンセプトモデルというよりかは、データ構造とその操作についてのモデルが欲しかったのかもしれない。分析されていたGitのファイル辺りのモデルは、確かに難しいかなぁと思ったけど、出てきたシンプルなモデルも、それはそれでOversimplifyされている感じがした。まぁ、正直Gitのコンセプトモデルの改善案は割と自分にはどうでも良いことではある。(あまり困ってないから)
あと、Daniel Jackson先生のところの研究なんだからAlloyでモデリングしたんだろうけど、それ公開してくれればいいのに。GitのラッパーのGitlessは公開されている。がっかりはしたけど、コマンドライン引数の一貫性とか、一つ一つのサブコマンドのResponsibilityの重複とかが問題として触れられていて、そこら辺は確かに問題かもしれないと思ったので、その問題点を提起されたという点では収穫があった。
追記: Related Workをはじめとする各種参考文献は非常に参考になる匂いがした。