初心者がMonacaでiPhoneのアプリを作ってみた

## 注意
- 本記事は「いのべこ 夏休みアドベントカレンダー 2021」の9日目の記事です。記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません。

## はじめに
私はスマホアプリの開発経験がなく、以前から何かスマホ上で動くようなアプリを開発してみたいと思っていました。
しかし、iPhoneで使用できるアプリを作るにはMacが必要で、Windowsしか持っていない私が軽い気持ちでやってみるにはハードルが高く、なかなかチャレンジする機会がありませんでした。
今回アドベントカレンダーに記事を載せるにあたってWindowsでiPhoneアプリを作る方法を調べたところ、Monacaという開発プラットフォームでクロスプラットフォームアプリを開発することができる（つまりiPhoneで動くアプリが作れる！）ということが分かったのでやってみよう！というのがこの記事の内容です。
初心者のチャレンジ記事ですので、温かい目で見ていただけるとうれしいです。

## 今回の目標
- Monacaを使ってアプリを作り、iPhoneで動作確認をする
- アプリからiPhoneのカメラ機能を使用できるようにする

## Monacaってなに？
- Monacaは日本発のクロスプラットフォームアプリ開発プラットフォームです。クラウド上に開発環境を用意してくれるので環境構築が必要ありません。

## Monacaにログインする
- まずは[Monaca](https://ja.monaca.io/)の会員登録をします。Githubアカウントが使用できるので、今回はそれで登録しました。
- 続いてMonacaの利用プランを選択します。14日間使用できる無料プランもあります。
- 登録の完了後にログインするとMonacaのダッシュボードが表示されます。

## Monacaで開発をする
- 以下は写真アプリを開発する手順です
- まず、Monacaのダッシュボードから「新しいプロジェクトを作る」を選択します

![tempsnip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/eb656d30-2796-de12-dd5f-26b14f9621c3.png)

- 次に、テンプレートの種類から最小限のテンプレートを選択します
![tempsnip5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/874f873e-5f16-5bca-1002-ff313cecd9ed.png)

- このとき、フレームワーク テンプレートを選択するとreact.jsやvue.jsで開発することもできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/57046ae8-b834-92cc-132e-5c0b3b7f16c5.png)

- プロジェクト名と説明を入力して「作成」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/852dc61b-f165-e689-d513-7faf1f624a7b.png)

- ダッシュボードに新規プロジェクトが作成されます
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/14b03f8f-7e07-ee56-ae7a-1d7b29ed54e1.png)

- プロジェクトを選択して、「クラウドIDEで開く」を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/fcde8ddb-eb3f-75df-2cb1-633193d0c5c1.png)

- 以下のような画面が表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/09dbd0d4-dd7d-6a3c-f977-bdec6860bef7.png)

- 今回は写真を撮りたいため、カメラ操作プラグインをインストールします。設定→Monaca IDE→Cordovaプラグインの管理から、カメラ操作プラグインを有効にします
![tempsnip4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/a704ebc9-c7be-5e1e-e314-e1d00cdadbe2.png)

- iOSはプライバシーに関連するデータにアクセスする場合は、info.plistに使用の説明を設定することが必須です。そのため、config.xmlのedit-configタグにユーザーのカメラや写真アプリにアクセスする理由を記述します

```xml
<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge">
    <string>テスト用に写真を使用します</string>
</edit-config>

<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge">
    <string>テスト用にライブラリを使用します</string>
</edit-config>

<edit-config target="NSPhotoLibraryAddUsageDescription" file="*-Info.plist" mode="merge">
    <string>テスト用に写真を保存します</string>
</edit-config>
```

- [Monacaの公式ドキュメント](https://docs.monaca.io/ja/reference/)を参考に、以下のように動くアプリを作りました
   - Photoボタンを押すと写真が撮影される
   - 写真の撮影後、写真を使用ボタンが押下されると画面に表示される

- いい感じにCSSをいじります。今回はコンポーネントの追加から、Onsen UI(Monaca Version)バージョン2.10.10を追加しています

## 動作確認

- 開発が終わったら実際にiPhone上で動作確認をします。iPhoneに[Monaca Debugger](https://ja.monaca.io/debugger.html)をインストールします。
- 導入方法は[Monaca公式ガイド](https://docs.monaca.io/ja/products_guide/debugger/installation/debugger_ios/)を参考にしました。
- 確認ツールの方にもPCで登録したメールアドレスとパスワードでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/746a975b-b19e-5986-1f56-67e86783f874.png)

- Monaca.ioプロジェクトに表示されている、先ほど作成したアプリを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/370617c7-616a-32dd-14fb-76ac9a1e50d8.png)

- アプリが表示されました。
![202108081.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/d6d744d1-e4d4-5300-873f-b56818cf5b86.jpeg)
- Photoボタンを押して写真が撮れるか確認します。
![IMG_5409.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/1c536726-dd8e-f73d-b513-08a69f4b8600.jpeg)
- カメラ機能が立ち上がり、写真を撮影できました。ちなみに写真は昨年のいのべこアドベントカレンダーの表紙です。
![IMG_5411.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537367/7a6f6470-d25d-d35a-1d7e-fb09beea3add.jpeg)

- ということで、アプリが完成しました！今回は使っていませんが画面右下にある操作メニューからは、スクリーンショットやログの確認ができるようです。
- アプリを作っていると、表示された写真に落書きをする機能や写真を保存する機能など追加機能の開発をしたくなりますが、目標は達成できたので今回はここで**完成**とします！

## さいごに
- Monacaは操作が直感的なので初心者でも割とさくさくできます。今回のアプリくらいの簡単なものであれば、2~3時間くらいで完成しました。
- iPhoneアプリはMacを使ってSwiftを勉強した状態でないと開発できないと思っていましたが、今回WindowsでMonacaを使い、HTMLとjavascriptでアプリを作ることができました。これでスマホアプリ開発をちょっと試してみたい人にはチャレンジのハードルが下がったのではないでしょうか。
- とはいえMacを使ったSwiftでのアプリ開発もやってみたいので、いつかMacのPCを買ったら挑戦してみたいです。