インストールGitのような複雑なシステムは使い方が難しい。ある程度使い方を知っている場合でも、あまり一般的でない機能を使うのは難しい。以下のような場合はどういうコマンドを使えばいいだろうか?ひとつ前のバージョンのREADME.mdからの変更を見たいREADME.mdは3日前からどう変わった?package.jsonにcoffeeという名前が入ったのはいつ?ここ1週間ぐらい変更されてないファイルは?最近大量に修正したファイルはどれだっけ?最初の例について考えてみる。このコマンドを起動しても何も出力されない。ひとつ前のバージョンのREADME.mdからの変更を見ることができる。これはなかなか面倒な話である。diffといったコマンドの存在と動作を知っていなければならない。このような簡単な仕事でもコピペのような面倒な操作が必要なのは嫌である。編集があったコミットのIDをリストすることができる。README.mdのようなコマンドで実行できることになる。($(...)というのはbashの記法で、コマンド実行結果を文字列として扱うものである。--というのは、その後に続く文字列がオプションではなくてファイル名等だということを示すもの。README.mdのように書くこともできる。そのたびにいろんなGit機能を調べたり思い出したりしなければならないのだろうか。Gitコマンドに翻訳する方法が欲しい。いった要望に対して最近は人工知能的に解決しようとするアプローチが人気かもしれない。違った表現を許したり内容を変えたりすることは簡単ではない。大阪弁で質問できる日が来るとは思えない。単純な予測/補完/誤り修正機能などを使った方が良いだろう。それを調べた後で「README.md」のような名前を指定してコマンドを起動する必要がある。いった二度手間も減らしたいものである。セット」と入力しても時間をセットする方法は出てこないし、ヘルプを自分で追加することはできない。時間を4時にセットするためには自分で「4時」という値を指定してから「時間のセット」機能を実行しなければならない。マニュアルやヘルプを書くのは面倒なものである。面倒すぎるし齟齬も起きやすいだろう。誰でも情報を足したり修正したりできたら嬉しいだろう。GitHelpのアプローチGitHelpは、以下のような方針で上のような課題をすべて解決しようというものである。ユーザが「4」「時間」などと指定すると「時刻を4時にセットする」のようなものを提案して実行可能にする多少の誤入力を許すこの結果、やりたいことの一部を漠然と言えばすぐ実行できるようになるのが理想である。カーソルで選択すると実行される。生活の中ではこういった言い換えをいつも行なっているかもしれない。いう翻訳が行なわれていることになる。いう「翻訳」は少ない方が良いのは確かだろう。「マチキャラ」を消すという操作が必要だった。お前はMSのイルカか。消す」とか「消す」とかで消せるべきだろう。ようなエントリをユーザが足すこともできるだろう。いうわけでGitは単なる適用例であり、広い範囲で使いたいと思っている。みたいなコード候補を生成する文芸的プログラミング。