{-# title: Bunny 導入ガイド(0.9.0版) -}
# Bunny 導入ガイド(0.9.0版)

## 動作環境

[Bunny](Bunny) は GHC (Haskell Platform) が動作する Windows (MINGW)または Linux 上で動作可能です。ビルドするためには Haskell Platform に含まれるもの以外に、以下のツール・ライブラリをあらかじめインストールしておく必要があります。

- ツール
  - GNU Make
  - Hlint
  - Alex
  - Happy
- ライブラリ
  - ansi-wl-pprint
  - optparse-applicative

Bunny を利用して Android アプリを作成するには、[Android Studio](https://developer.android.com/studio?hl=ja) / [Android SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools?hl=ja) が必要です。
Android Studio をインストールしたら、少なくともひとつ Android Studio プロジェクトを作成しておく必要があります。これは、Bunny が $<verb>{local.properties} ファイルを必要とするためです。

Platform Tools をインストールしたら、パスを通しておいてください。

javac, java にもパスが通っている必要があります。これは、Android Studio に同梱されているものを用いるようにした方が確実です。
Linux の場合には、$<verb>{$INSTALL_DIR/android-studio/jre/bin} に、
Windows の場合には
$<verb>{/c/Program Files/Android/Android Studio/jre/bin} 
にパスを通しておくことになります。

パスが通っていることの確認例を以下に示します。具体的なパスは環境毎に異なります。

確認例(Linux の場合):

$$<pre>{
$ which javac
/home/<user name>/android-studio/jre/bin/javac

$ which java
/home/<user name>/android-studio/jre/bin/java

$ which adb
/home/<user name>/Android/Sdk/platform-tools/adb
$$}

確認例(Windows (MINGW) の場合):

$$<pre>{
$ which javac
/c/Program Files/Android/Android Studio/jre/bin/javac

$ which java
/c/Program Files/Android/Android Studio/jre/bin/java

$ which adb
/c/Users/<user name>/android/platform-tools/adb
$$}

作者の手元では、Linux, Windows それぞれ以下の環境で動作を確認済です。

- Windows 10
 - MINGW64_NT-10.0
 - Haskell Platform 8.2.2
 - Gnu make 3.81
 - Android Studio 4.4.1 / Android SDK Platform tools r30.0.5
- Linux
 - Ubuntu 20.04.1 LTS
 - Haskell Platform 2014.2.0.0.debian8 (apt install haskell-platform したもの)
 - Gnu make 4.2.1
 - Android Studio 4.0.2

## コンパイル

ソースファイルを展開したら、compiler ディレクトリに移動し make してください。

$$<pre>{
$ cd compile
$ make
$$}

コンパイルが成功したら、簡単な Haskell プログラムを Bunny でコンパイルして動作確認します。

$$<pre>{
$ bin/bunny testrun sample/Hello.hs
$$}

その後に以下のように表示されたら動作確認は成功です。

$$<pre>{
Hello, World!
$$}

動作確認ができたら、install.sh をつかってインストールします。
そのまえに、環境に応じた local.properties ファイルを用意する必要があります。
$<verb>{~/AndroidStudioProjects/} など、既存の Android Studio プロジェクトが格納されたディレクトリから、適当なプロジェクトの local.property ファイルをコピーして用います$<fn>{もし Android Studio をインストールした直後でプロジェクトがひとつも存在しない場合は、Android Studio を起動して、なんでもいいのでひとつ新しいプロジェクトを作っておいてください。}。
(以下では MyFirstApp プロジェクトからコピーしていますが、適切なプロジェクト名に読み替えてください。)

$$<pre>{
cp ~/AndroidStudioProjects/MyFirstApp/local.properties AndroidProjectPrototype/
$$}

その後、install.sh スクリプトを用いてインストールします。

$$<pre>{
$ ./install.sh
$$}

デフォルトでは、$HOME/bunny/0.9.0 の下にインストールされます。
$HOME 以外の場所にインストールしたい場合には、install.sh の引数としてパスを与えます。

インストールできたら、$HOME/bunny/0.9.0/bin (または、インストール場所を指定した場合にはそれに応じたパス)を PATH に加えてください。

正常にパスを通せたら、$<verb>{bunny --version} と打ってみてください。
以下のように表示されるはずです。

$$<pre>{
$ bunny --version
Bunny - A Haskell compiler for android, version 0.9.0 (Basecamp)
$$}

## 使い方

以下のように $<verb>{android} のサブコマンドで $<verb>{bunny} を実行すると、
Haskell プログラムをコンパイルしたうえで、そのコンパイル結果を含む
Android プロジェクトが作成されます:

$$<pre>{
bunny android <source-file>
$$}

Android プロジェクトができてたら、そのディレクトリに移動し、
$<verb>{./gradlew} (または $<verb>{./gradlew.bat} (Windows の場合)} 
を用いて Android アプリケーションをビルドすることができます。

$$<pre>{
bunny android sample/Hello.hs
cd ~/BunnyProjects/Hello
./gradlew assembleDebug
$$}