こんにちは、木崎 誠です。
やりたいことの一つであるアプリ開発について記録していきます。
使用する技術はFlutter、Firebaseです。
Android、iOS、Webすべてを一つの言語で開発できるFlutterと、
プログラミング不要で簡単にデータベースやホスティング(Webへの公開)が行えるFirebase。
一度リリースまでの流れを経験すれば、自分が欲しいと思ったちょっとしたアプリをどんどん作ることができそうだと思い、この構成にしました。
Udemyでの学習開始
プログラミングの独学ということで、まずは基本的な部分を学びながらも、動くものを作ってしまおうと考えました。
取り組んだのは動画教材プラットフォームのUdemyで販売されている以下の教材2つです。
![](https://gorosuke-free.com/wp-content/uploads/cocoon-resources/blog-card-cache/f8a9415432b31894db2262aa2ae21fc0.jpg)
![](https://gorosuke-free.com/wp-content/uploads/cocoon-resources/blog-card-cache/dd90c18612f23d6b42e85de64c5a1a05.jpg)
どちらも1時間ちょっとの動画時間で、てばやく動くものを作ることができました。
モバイルアプリではメモアプリを、WebアプリではTodoアプリとなります。
制作したもの
簡単ですがWebアプリの画面を動画に記録してみました。
非常にシンプルな作りですが、タスクの追加と編集と削除、完了と未完了の切り替えができます。
また、それらの変更はすべてリアルタイムでFirebaseに反映されています。
さらにFirebaseでホスティングを行っているため、実際にWebからアクセスすることができます。
ログイン機能などがなくセキュリティ面に不安があるため公開はできませんが…。
それでも動くものを早期に作ることができて満足です。
学習中に起きた問題や参考にしたサイト
Firebaseの導入がうまくいかなかったのか、Web画面でタスクを追加しようとしてもDBに反映されず、再起動すると既存タスクの読み込みもできなくなる現状がありました。
エラー内容は以下です。
Missing or insufficient permissions.
このエラーで検索したところ、以下の記事が発見できました。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9ZmlyZWJhc2UlRTMlODElQUUlRTMlODMlODElRTMlODMlQTUlRTMlODMlQkMlRTMlODMlODglRTMlODMlQUElRTMlODIlQTIlRTMlODMlQUIlRTMlODElQTclRTMlODAlODFFcnJvciUzQSUyME1pc3NpbmclMjBvciUyMGluc3VmZmljaWVudCUyMHBlcm1pc3Npb25zLiVFMyU4MSVBOCVFOCVBOCU4MCVFMyU4MiU4RiVFMyU4MiU4QyVFMyU4MSU5RiVFNiU5OSU4MiVFMyU4MSVBRSVFOCVBNyVBMyVFNiVCMSVCQSVFNiVCMyU5NSVFMyU4MyVBMSVFMyU4MyVBMiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZTBiMWJhYjdjOWQ3MTEyM2U4N2E3NjZkYWNjZjQ1MWM&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwaGlib2hpYm9vJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05ZmE3ZmFiNmZkOWM0Nzc0MjZhZjA4ZTY3OTIwY2I2Mw&blend-x=142&blend-y=491&blend-mode=normal&s=f8679a87b7a84636d0340e9f4093a4d5)
記事によると、Firebase FireStoreのルールが悪さしているかもしれないと…。
ルールの状況を確認したところ、拒否数がカウントされていました。
![](https://makoto-life.com/wp-content/uploads/2021/07/image-4-1024x346.png)
ひとまず読み書きができれば問題なし、セキュリティ度外視だったので、全部OKというルールに置き換えました。
![](https://makoto-life.com/wp-content/uploads/2021/07/image-5-1024x490.png)
結果、無事FireStoreの内容の読み書きができるようになりました!
作った感想と次の目標
本当にこれでアプリが作れるんだ、と思うほど手軽にできました。
これでAndroid、iOS、Webすべてにリリースできるのは本当にすごいですね…。
Apple Watchのような特有の機能を要するものに関しては、iOS専用のswiftという言語で開発する必要があるらしいのですが、組み合わせることもできるそうです。
まずはFlutterでできるところまでを開発していきたいと思います。
次の目標は、今回作成したWebのTodoアプリのモバイル版を開発し、Webとモバイルで同じデータベースを利用することです。
Firebaseの機能でユーザーログイン機能などは容易に導入できるので、上記目標が突破できれば作りたいアプリに近づけると思っています。
動画教材を見返しながら、モバイル版Todoアプリを開発していきます!
コメント