『ふつうのHaskellプログラミング』サポート――LazyLinesの入手とインストール

$Id: lazylines.html,v 1.1 2006/05/24 09:08:18 aamine Exp $

このページでは『ふつうの Haskell プログラミング』 で解説したウェブアプリケーション、 LazyLines の入手とインストールについて説明します。

Windows での入手とインストール

まず以下のリンクから LazyLines のパッケージを入手してください。

このパッケージは zip アーカイブなので、適宜、ツールを用いて解凍してください。 LazyLines のソースコードと、それをコンパイルしたバイナリの両方が入っています。

パッケージを解凍すると lazylines というフォルダが出てきます。 その中の、server.exe をダブルクリックして実行してください。 以下のような黒いウィンドウ (コマンドプロンプト) が出てきます。

続いて、server.exe を起動したのと同じマシンのウェブブラウザで、 アドレスバーに http://localhost:10081 と打ち込んでください。 これで LazyLines にアクセスできるはずです。

好きなだけ LazyLines を使ってみたら、最後に server.exe を終了しておきます。 server.exe を終了するには、 さきほど開いたコマンドプロンプトで Ctrl-C を押してください。 ウィンドウが閉じたら server.exe は正常に終了したということです。

Linux での入手とインストール

まず以下のリンクから LazyLines のパッケージを入手してください。

このパッケージには LazyLines のソースコードだけが入っています。 コンパイルするために GHC が必要なので、 書籍の記述にしたがって GHC をインストールしておいてください。

パッケージをダウンロードしたら、 以下のようにコマンドを打って解凍します。

$ tar zxf lazylines-linux-x86.tar.gz

パッケージを解凍したら、 解凍してできたディレクトリに移動して make all を実行します。

$ cd lazylines
$ make all

コンパイルが問題なく終わったら、動作させてみましょう。 パッケージには簡易 HTTP サーバのバイナリが同梱してあるので、 簡単にテストできます。lazylines/server を実行してください。 すると次のように出力されて HTTP サーバが起動します。

$ ./server
*****************************************************
           Type Ctrl-C to stop server
*****************************************************
[2006-05-24 17:16:06] INFO  WEBrick 1.3.1
[2006-05-24 17:16:06] INFO  ruby 1.9.0 (2006-05-24) [i686-linux]
[2006-05-24 17:16:06] DEBUG TCPServer.new(127.0.0.1, 10081)
[2006-05-24 17:16:06] DEBUG WEBrick::HTTPServlet::FileHandler is mounted on /.
[2006-05-24 17:16:06] INFO  WEBrick::HTTPServer#start: pid=5863 port=10081

HTTP サーバが起動したら、同じマシンのウェブブラウザから、 アドレス http://localhost:10081/ にアクセスします。 ここまでの処理がうまくいっていれば LazyLines が動作しているはずです。

好きなだけ LazyLines を使ってみたら、 最後に簡易 HTTP サーバを終了しておきましょう。 ./server を実行した端末で Ctrl-C を打ち込めば簡易 HTTP サーバが終了します。

127.0.0.1 - - [24/May/2006:17:23:49 JST] "GET / HTTP/1.0" 200 893
[2006-05-24 17:23:49] DEBUG close: 127.0.0.1:41426
[2006-05-24 17:23:52] DEBUG close TCPSocket(127.0.0.1, 10081)
^C
[2006-05-24 17:23:52] INFO  going to shutdown ...
[2006-05-24 17:23:52] INFO  WEBrick::HTTPServer#start done.
$

トラブルシューティング

Q. パッケージに同梱されている HTTP サーバ (server.exe, server) が起動しない

何かエラーメッセージが出ているなら、 とりあえずそれを読んで考えてみてください。 Windows では、コマンドプロンプトをスタートメニューから起動して、 そのコマンドプロンプトで server.exe を起動すればエラーメッセージが読めると思います。

なお、コンピュータに Ruby の処理系がインストールされている場合には、 Ruby を使っても同じサーバを起動できます。 コマンドプロンプトやシェルから ruby server.rb を実行してみてください。

Ruby をインストールするなら、Windows では ActiveScriptRuby をお勧めします。インストーラがついているので簡単にインストールできます (パスの設定だけは必要)。 Linux では GHC と同じように yum や apt を使うだけです。

Q. HTTP サーバは起動したが、ウェブブラウザからアクセスできない

まず、打ち込んだアドレスが正しいか確認してください。 アドレスは http://localhost:10081 です。 また、必ず HTTP サーバを起動したのと同じマシンから接続してください。 デフォルト設定だと他のマシンからはアクセスできないようになっています。

Q. LazyLines は動いているようだが、トップページしか見られない

LazyLines は、内部で入出力エラーが起きたときに トップページを表示するようになっています。 ですから、トップページしか表示されない場合は 内部で何らかのエラーが起きていると考えられます。 ソースコード LazyLines.hs で定義されている wikiSession 関数にある catch を外してしまえば エラーが起きたときにプログラム全体がエラーで終了するようになります (wikiSession 関数に catch の適用は 3 つありますが、外すのは最初の 1 つだけにしてください)。 試してみてください。

Q. LazyLinesがコンパイルできない

まず GHC 6.2 以降をちゃんとインストールしてください。 インストールできたと思ったら、ghc --version を打って動作するか確認してください。 次に Hello, World のような小さいプログラムをコンパイルしてみてください。 どこまでうまくいくか確認して、問題を切り分けましょう。