Open1
tcl/tk/wishって何?git guiの裏側にある“知られざる世界”を覗いてみた

gitはチーム開発×業務で毎日使っていたのですが、深く追求する事がなかったため不意に意図しない状況に陥ると都度調べてなんとか解決してきました
調べてすぐ解決できる程度であればまだしも中には複雑で状況が把握できず困った状況に覚えがあったため改めてShell操作(CLI)と SourceTreeで操作(GUI)でそれぞれgitの理解を深めようとしている。といった経緯があります
その中で意識した事がない tcl、tk、wishというキーワードに出会いました
備忘録としてメモします
環境
pc:MacBook Pro(2019, Intel)
os:macos Sequoia 15.5
git:2.49.0
macOSで git gui や wish を使おうとして遭遇したエラー
(git gui実行時)
git: 'gui' is not a git command. See 'git --help'.
(wish実行時)
/usr/bin/wish: line 2: 7096 Killed: 9 ...
解決手順
Homebrew で git gui、tcl/tk をインストール
macOS に標準で入っている tcl/tk(特に wish)は古く、macOSのバージョンによってはうまく動作しません。そこで、Homebrew を使って最新の git guiとtcl/tk を導入します
(git gui)
$ brew install git-gui
(wish)
$ brew install tcl-tk
$ git gui
でツールが立ち上がります
wish ってそもそも何?
wish は「Windowing Shell」の略
tcl/tk で書かれたGUIスクリプトを実行するためのプログラムとの事
コマンドラインから wish を起動すると、% プロンプトが表示され、tclのコードを入力できます
$ wish
%
ここに GUI を作るコードを直接書き込めば、即座にウィンドウ表示されるという軽量な仕組み
tcl / tk / wish をざっくり解説
名称 | 概要 |
---|---|
tcl | Tool Command Language。柔軟かつ簡潔なスクリプト言語 |
tk | cl 用の GUI ツールキット。ボタンやウィンドウなどの部品を簡単に作れる |
wish | 「Windowing Shell」tcl + tk を組み合わせて GUI を実行するための実行環境 |
tclの作者は?
- 開発者:John Ousterhout(ジョン・オースターハウト)
- 背景:カリフォルニア大学バークレー校の教授で、tcl を1988年頃に開発
- 特徴:組み込み用途にもGUI用途にも使える柔軟性を重視した設計
実際に GUI ボタンを作ってみる
wish を起動して、以下のコードを貼ってみます:
$ button .submit -text "git" -command {
catch { exec git --version } results;
puts $results
}
pack .submit
クリックすると git --version が実行され、ターミナルに表示されます:
git version 2.49.0