Haskellを勉強するための目標として、Gtk2Hsを始めました。ある程度サンプルがまとまったので、ここに公開します。
この章では、Gtk2Hsのインストール方法を紹介しています。
このチュートリアルは、Gtk2HsとGtk3Hsの両方をサポートしています。
Haskell で Gtk2 や Gtk3 GUIライブラリを使ってGUIアプリケーションを作れるフレームワークです。
Haskellで使えるGUIフレームワークは、ほかにも、wxHaskellをはじめ、いくつかあるみたいです。
wxHaskellについては wxHaskell GUI プログラミング で説明しています。
Gtk3Hsのインストールは、Windows 7, 8.1、macOS 9と10、および各種Linuxで成功しましたが、macOSにインストールするのは大変でした。Gtk2HSのインストールが簡単なUbuntuやMintだけで楽しむのも一つの方法だと思います。Windowsへのインストールは中程度の難度でした。
UbuntuやLinux MintなどのDebian系LinuxにGtk3Hsをインストールするには、ターミナルに次のように入力します。
sudo apt-get install libghc-gtk3-dev
このコマンドでHaskellもインストールされるので便利です。 なお、Ubuntu 14.04、Linux Mint 17 にはGtk3Hsはインストールできません。 Ubuntu 14.04やLinum Mint 17 には、次のコマンドで、Gtk2Hsをインストールします。
sudo apt-get install libghc-gtk-dev
このコマンドも、Haskellもインストールされます。
なお、同じコンピューターにGtk2HsとGtk3Hsの両方をインストールして使い分けすることはできますが、私の場合は、Mint 17にGtk2Hsを、Mint 18にGtk3Hsをインストールして使い分けました。
もし、一つのコンピューターに両方のバージョンをインストールした場合は、ソースファイルの冒頭で、どちらを使うかを指定します。しかしこのチュートリアルでは、そのコードは省略しています。
次のコマンドでFedora系Linuxにもインストールできますが、コンパイルしたアプリの表示がおかしかったりしますので、Fedora系Linuxでの使用はあまりお勧めしません。
sudo dnf install ghc-gtk3-devel
Ubuntu 18.04、Mint 19、Fedora 28では、コンパイルした実行ファイルをダブルクリックで実行できません。ターミナルから起動することはできます。Gtk2Hsだけでなく、ほかの処理系でコンパイルした実行ファイルも同じです。もしかしたら手動で実行権限を与えなければならなくなったのかもしれません。
Windowsへのインストールは、
の三段階になります。
次のリンクから HaskellPlatform8.0.2-a-full-...-setup.exeをダウンロードしてインストールしてください。「...」のところは、お使いのシステムに合わせて、「i386」か「x86_64」を選んでください。
なお、Haskell Platformの最新安定板は次のリンクからダウンロードできますが、現在のバージョン 8.4.3 には、Gtk2HS のインスールができません。
インストールが終了したら、コマンドプロンプトを起動して ghci と入力してください。 もし、コマンドプロンプトが最初から開いていたら、コマンドプロンプトを再起動してから ghci と入力してください。
ghci
GHCi, version 8.0.2: https://www.haskell.org/ghc/ :? for help
Prelude>
上記のように表示されたら、Haskell Platformは無事にインストールされています。
ghci(Haskellのインタープリタ)を終了するには :q と入力します。ghciのコマンドは : (コロン)で始まります。
Prelude> :q
Leaving GHCI.
32bit Windowsの場合は、下記リンクから 「gtk+-bundle_2.24.10-20120208_win32.zip」をダウンロードしてください。
Index of /Public/gnome/binaries/win32/gtk+/2.24
64bit Windowsの場合は、下記リンクから 「gtk+-bundle_2.22.1_20101229_win64.zip」をダウンロードしてください。
https://ftp.gnome.org/Public/gnome/binaries/win64/gtk+/2.22/
ダウンロードした ZIP ファイルを解凍してください。私の場合は C: 直下の gtk フォルダに解凍しました。そして解凍したフォルダの bin フォルダにパスを通してください。
コマンドプロンプトが開いていた場合は、コマンドプロンプトを再起動してください。そして、コマンドプロンプトに、次のように入力してサンプルアプリが起動したら、Gtk のインストールは成功しています。
gtk-demo
cabal update
cabal install gtk2hs-buildtools
cabal install gtk
インストールが終わりましたら、コマンドプロンプトを閉じるか、再起動してください。
上記で Windows へのインストールは完了しました。次のソースコードを記述して、お好きなところに UTF-8 で保存してください。ここでは、button.hs という名前にました。ファイルの拡張子は .hs になります。
import Graphics.UI.Gtk
main :: IO()
main = do
initGUI
window <- windowNew
set window [windowTitle := "ボタン"]
windowSetDefaultSize window 230 150
containerSetBorderWidth window 15
windowSetPosition window WinPosCenter
align <- alignmentNew 1 1 0 0
containerAdd window align
button <- buttonNewWithLabel "終了"
widgetSetSizeRequest button 100 30
containerAdd align button
on button buttonActivated $ do
mainQuit
widgetHide window
on window objectDestroy mainQuit
widgetShowAll window
mainGUI
コマンドプロントを起動して、button.hs を保存したディレクトリに移動してださい。そして ghci button.hsと入力してください。
ghci button.hs
GHCi, version 8.0.2: https://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( button.hs, interpreted )
Ok, modules loaded: Main.
*Main>
上記のように「Ok, modules loaded: Main.」と表示されれば読み込みに成功しています。
もし「Failed, modules loaded: none.」と表示された場合は、コードに間違いがあるか、ファイルタイプがUTF-8になっていないかなどの問題があります。読み込みが成功した場合はコマンドプロントに「main」と入力して実行します。
main
コマンドプロントに「ghc button.hs」と入力してコンパイルします。
ghc button.hs
[1 of 1] Compiling Main ( button.hs, button.o )
Linking button.exe ...
上記のように表示されればコンパイルは成功しています。
button.hs:9:31: error:
lexical error in string/character literal (UTF-8 decoding error)
上記のように表示されればどこかが間違っています。修正して、再度コンパイルします。
無事にコンパイルできた場合は、コマンドプロンプトで実行ファイル名を指定して起動します。.exe 拡張子はつける必要はありません (つけても問題ありません)。
button
コンバイルされた「button.exe」ファイルをダブルクリックしても起動できます。ただしコマンドプロンプトも開いてしまいます。今、コマンドプロンプトを開かずに起動する方法を探しています。
macOSへのインストールは macOS へのインストールをご覧ください。