まず、Haskellの開発環境を構築する必要があります。
すでにHaskellの環境を構築されている方、Linuxとか分かっている人は適宜、読み替えてください。要点はstackとspacemacs環境と、gtk2.0を入れている形になります(※1)。
環境は以下のとおりです。
対象OS:windows 10
エディタ:Spacemacs(emacs)
GUIまわり:Gtk2.0
プログラミング言語のインストールとか今までしたことない、という人は動画を見ながら、インストールをするのをお勧めします。特にPathの辺りはHaskell等に限らず、プログラミング関連のインストールではよく引っかかるところです(動画だと、自分もGtkで引っかかっています、、動画の左下の時計を見ると面白いかもしれません)。途中途中に出てくるインターネットのサイトやHaskellのプログラムとして下の文字での説明の各HPを使っていますので、わからない場合はこれらを見てください。
1.Haskell(Stack)のインストール
公式ページ(https://www.haskell.org/)
stack Installer (https://docs.haskellstack.org/en/stable/install_and_upgrade/#windows)
上のstackのインストーラをダウンロードして、実行することでHaskell自体のインストールは完了します。
2.Spacemacsのインストール
次にspacemacsです。
2.1 emacsのインストール
まず、emacsをインストールします。
ここ(http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-26/)にある、これ(http://emacs-26.2-x86_64.zip)をダウンロードして、適当な位置で展開(解凍)します。おすすめは、ここ (C:\Users\Yourname) です。Yournameはご自身の環境によって異なります。
そのあと、一度emacsを起動します。場所は上のおすすめ場所に入れていれば、(C:\Users\Yourname\emacs\bin\emacs.exe)にあります。emacsはタスクバーにピン止めしておくとよいです。
2.2 spacemacsのインストール
次にspacemacsをインストールします。
ここ(http://spacemacs.org/)からダウンロードしてください。
圧縮ファイルの中身を、先ほど一度emacsを起動した際に出てきた、”.emacs.d”というフォルダの中に展開(解凍)します(場所は”C:\Users\Yourname\AppData\Roaming”)(隠しファイルが見えない人は、エクスプローラの「表示」タブから見えるようにしておきます)。
emacsを再度立ち上げてください。エディットスタイルなどを問われますが、このサイトでは、vim -> spacemacs -> helmという順番に設定したとして進めます。
2.3 Haskell Layerのインストール
次に、Haskellのシンタクスハイライト等の便利ツール(Haskell Layer)を入れていきます。公式は以下のページのとおりです(https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Blang/haskell).よくわかる人は、この公式ページの指示に従って入れてください。よくわからない人は、このファイル(https://polymony.net/wp-content/uploads/2019/06/poppy2.zip)をダウンロードして、 圧縮ファイルの中にある.spacemacsというファイルを(C:\Users\Yourname\AppData\Roaming) に入れて、emacsを再起動すれば終了です。
【追記】 20200123現在、interoがバグっている模様です。以下のファイルを.emacs.d/elpa/にある、interoディレクトリと差し替えてみてください。https://polymony.net/wp-content/uploads/2020/01/intero-20191103.1239.zip
3. Gtkのインストール
次にGtk2を入れていきます。以下のGtkの公式(https://www.gtk.org/download/windows.php)の通りに、msys2(https://www.msys2.org/)をまずインストールします。次に上記ページのコマンドをmsys2のターミナルから打ちます。
pacman -S mingw-w64-x86_64-gtk
2
pacman -S mingw-w64-x86_64-glade
pacman -S -q –noconfirm mingw64/mingw-w64-x86_64-pkg-config mingw64/mingw-w64-x86_64-gobject-introspection mingw64/mingw-w64-x86_64-gtksourceview3
これでgtk2がインストールされました。次にパスを通しておきます。システムの環境変数に、以下の三つの定義をしてください。
PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%
PKG_CONFIG_PATH=C:\msys64\mingw64\lib\pkgconfig
XDG_DATA_DIRS=C:\msys64\mingw64\share
最後に、簡単なプログラムで、Gtkの動作を確認します。この圧縮ファイルhttps://polymony.net/wp-content/uploads/2019/06/poppy2.zipの中身のpoppy2というフォルダを C:\Users\Yourname\ にコピーしてください。Yournameというのは、皆さんの環境の名前と合わせてください。
コマンドプロンプトで、
cd poppy2
stack build
と打ち込んで、
最後にstack exec poppy2-exe
と打ち込んで、空のウィンドウが立ち上がれば成功です。
★うまくいかない場合の一つの解決策:
Spacemacsを起動した際に、エラーが出るとの連絡を受けました。Haskell Platform (https://www.haskell.org/platform/)を入れると解消しましたので、うまくいかない人はそちらも検討ください。
次回以降は、プログラミングを具体的に始めます。動画で説明します。プログラミング教育的には、途中で書いたり消したり、試行錯誤している様子や、出来上がっていく過程が大事だと思います。慣れている人は時間がかかるので、あれかも知れませんが、温かい目で見てもらえたらと思います(※2)。また、教育目的もありますので、極力標準で用意されている関数だけで構成していく予定です(※3)。Spacemacsはvimのキーバインドで動画説明します。慣れていない人向けに、最初のうちは、操作もちょいちょい説明しますのでこの辺りもテンポが悪いですがご容赦ください。
(※1)最終的には、タブレットPC(Windows 10)でPDFを読むことになるので、今回の過程(Windows10での環境構築)は必ず必要になってきます。
(※2)次回以降でプログラミングを説明する際には、Ubuntu16.04の環境で説明していきます。Windowsでも問題なく開発できているので安心してください。もし、色々ハマってしまった場合(特にGtkのインストールが危険)で、タブレットPCへの移植は今は考えず、取りあえずHaskellで何か憶えたい、という人は、Ubuntuで環境構築するのをおすすめします。Haskellもそうですが、プログラミングを本格的にやるのであれば、Linux環境を持っておいたほうがいいです。
(※3)自分で書いていろいろ試行錯誤するのが面白いです。ただし、品質や速度の問題を考えると、既成のライブラリを使うのが正解というのが現状です。しかし、それだと自分のレベルが上がった感がないので、個人的には楽しくないです。Agdaあたりの定理証明系が成熟して、自分の書いた関数を状況に応じて最適かつ品質が保証された関数に自動で置き換えてくれる、そういう感じになっていけば、自分でプログラムを自由に書くのと、品質、速度問題が両方解決して楽しくなると思っています。