iPhoneでもBrainf*ckを快適に書くためのアプリ2選

# 1. BrainHack

https://apps.apple.com/jp/app/brainhack/id959976921

App Storeから入手できる`Brainf*ck`のエディタ、インタプリタです。
複数ファイルの保存(画像中1-1)、`Brainf*ck`の実行(画像中1-2)、`.,+-<>[]`専用キーボード(画像中1-3)、10進数のASCIIコード表など`Brainf*ck`開発に必要な機能が一通り揃っています。

![スクリーンショット 2025-04-22 22.23.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885419/26a772b0-a0ee-4136-9076-cb615ad8ca6b.png)

特に、実行中にメモリの状態が分かる機能はデバッグがしやすくて助かります。
また、ついついド忘れしてしまうASCIIコード表があるのもありがたいです。

アプリ名が`f*ck`ではなく`Hack`となっているのは、[Appストアの審査ガイダンス](https://developer.apple.com/app-store/review/guidelines/)の下記の条項あたりに違反しないための命名なのでしょうか...
> 1.1 Objectionable Content
Apps should not include content that is offensive, insensitive, upsetting, intended to disgust, in exceptionally poor taste, or just plain creepy. 
(1.1 不快なコンテンツ
アプリは、攻撃的、無神経、動揺させる、嫌悪感を意図する、趣味が極めて悪い、または単に不気味なコンテンツを含んではなりません。)

# 2. azooKey

https://apps.apple.com/jp/app/azookey-%E8%87%AA%E7%94%B1%E8%87%AA%E5%9C%A8%E3%81%AA%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89/id1542709230

キーボードカスタムアプリです。
`Brainf*ck`に限らず、スマホでコーディングする際に一番フラストレーションを感じるカーソルの移動を快適に行うことができるのでお気に入りです。

![スクリーンショット 2025-04-22 22.59.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885419/c4d63502-e4d7-43de-ae27-3ee1e46ed665.png)

`拡張`>`カスタムタブの管理`>`スクロール式のカスタムタブを作る`からご自分にあったキーボードを作って快適にコーディングしましょう。
各キーには文字の他にアクションを割り当てることができ、`カーソルバーの切り替え`を選択すると**画像1-2**のように、カーソルバーを1文字づつずらせるボタンを表示することができます。

私は3行4列のキーボードで、

- 1行目に`カーソルバーの切り替え`、`半角スペース4つ`、`1文字削除`、`改行`
- 2行目に`[`、`]`、`<`、`>`
- 3行目に`.`、`,`、`+`、`-`

を配置しています。使用頻度が多い`<>+-`を右手側に配置しているのがこだわりポイントです。

azooKeyでは作成したキーボードをjsonファイルで共有できるので、上記の設定を使いたい方は下記のファイルをiCloudに保存して、iCloudから読み込むボタンで簡単にお使いいただけます。

```json
{"metadata":{"custard_version":"1.2","display_name":"BF"},"language":"none","interface":{"key_layout":{"row_count":4,"column_count":3,"type":"grid_scroll","direction":"vertical"},"key_style":"tenkey_style","keys":[{"specifier_type":"grid_scroll","key":{"longpress_actions":{"start":[],"repeat":[]},"variations":[],"press_actions":[{"text":"[","type":"input"}],"design":{"color":"normal","label":{"text":"["}}},"specifier":{"index":4},"key_type":"custom"},{"specifier":{"index":9},"key":{"longpress_actions":{"repeat":[],"start":[]},"variations":[],"press_actions":[{"type":"input","text":","}],"design":{"label":{"text":","},"color":"normal"}},"key_type":"custom","specifier_type":"grid_scroll"},{"key_type":"custom","key":{"press_actions":[{"text":".","type":"input"}],"variations":[],"design":{"label":{"text":"."},"color":"normal"},"longpress_actions":{"start":[],"repeat":[]}},"specifier_type":"grid_scroll","specifier":{"index":8}},{"key":{"press_actions":[{"type":"toggle_cursor_bar"}],"design":{"color":"normal","label":{"system_image":"circle.fill"}},"variations":[],"longpress_actions":{"repeat":[],"start":[]}},"specifier_type":"grid_scroll","key_type":"custom","specifier":{"index":0}},{"specifier_type":"grid_scroll","key":{"press_actions":[{"text":"<","type":"input"}],"variations":[],"longpress_actions":{"repeat":[],"start":[]},"design":{"label":{"text":"<"},"color":"normal"}},"key_type":"custom","specifier":{"index":6}},{"key":{"longpress_actions":{"start":[],"repeat":[{"count":1,"type":"delete"}]},"design":{"label":{"system_image":"delete.left"},"color":"special"},"press_actions":[{"type":"delete","count":1}],"variations":[]},"specifier_type":"grid_scroll","specifier":{"index":2},"key_type":"custom"},{"specifier_type":"grid_scroll","specifier":{"index":7},"key":{"press_actions":[{"type":"input","text":">"}],"longpress_actions":{"repeat":[],"start":[]},"design":{"label":{"text":">"},"color":"normal"},"variations":[]},"key_type":"custom"},{"key_type":"custom","specifier_type":"grid_scroll","specifier":{"index":5},"key":{"press_actions":[{"type":"input","text":"]"}],"longpress_actions":{"repeat":[],"start":[]},"variations":[],"design":{"label":{"text":"]"},"color":"normal"}}},{"key_type":"custom","specifier_type":"grid_scroll","key":{"longpress_actions":{"repeat":[],"start":[]},"press_actions":[{"type":"input","text":"+"}],"variations":[],"design":{"color":"normal","label":{"text":"+"}}},"specifier":{"index":10}},{"specifier_type":"grid_scroll","key":{"type":"enter"},"key_type":"system","specifier":{"index":3}},{"specifier":{"index":11},"key":{"longpress_actions":{"start":[],"repeat":[]},"design":{"color":"normal","label":{"text":"-"}},"press_actions":[{"type":"input","text":"-"}],"variations":[]},"key_type":"custom","specifier_type":"grid_scroll"},{"specifier":{"index":1},"specifier_type":"grid_scroll","key_type":"custom","key":{"press_actions":[{"text":"    ","type":"input"}],"longpress_actions":{"repeat":[],"start":[]},"variations":[],"design":{"label":{"text":"Space"},"color":"special"}}}]},"input_style":"direct","identifier":"BF"}
```