個人開発が滞りがちなので小さいアプリを作った話

思い立ってFlutterで簡単なアプリを作ってみました。 はてなブックマークの状態を閲覧する(監視する)アプリです。

github.com

開発経緯

ここのところを振り返って考えてみたところ、個人でアプリを作れていませんでした。作っても小さなライブラリっぽいもの程度。 本業の中でKotlinによるAndroidアプリ開発はそこそこやっているので、KotlinではなくSwiftやFlutterで作らねば、とも。

そんなわけで11月頭に「3ヶ月間で3つ(なんでもいいから)アプリを作る」ことを目標にしました。 今回は1つ目のFlutterアプリになります。

やったこと

開発要件

この半年ほどの挫折の原因を考えてみると、大抵が「ログイン処理」でした。 Googleアカウントによるログインにしたい、けれどGoogleログインにするためにはアプリ開発者の情報を……匿名アカウントで代用……匿名アカウントからメールアドレスへの昇格が……めんどい……みたいな感じで取りやめてしまうことがしばしば。 このため「ログイン処理」が不要であることを第1の条件に、合わせて今時っぽく公開されているAPIを利用したアプリにすることを第2の条件にして開発することに。

そんな中、はてなブックマークドキュメントを眺めていたところ「はてなブックマークエントリー情報取得API」がに気づきました。

developer.hatena.ne.jp

developer.hatena.ne.jp

これなら「ログイン不要」でユーザーに任意のURLを入力してもらうことで「はてなブックマーク情報取得API」のデータを表示できます。 合わせて、ユーザーの入力したURLをローカルDBに保存するなど、ネイティブアプリらしいリッチさも多少取り込めそうでした。 そんなわけで、「URLを入力するとはてなブックマーク情報を表示する」アプリの開発を行った次第です。

機能紹介

  • URL入力によりはてなブックマークエントリー情報(lite版)を取得
    • 取得した情報内のScreenShotをキャッシュしながら読み込み
      • (ただ、どの画像をとってもno_imageのような……?)
  • 入力されたURLは端末内DBに保存
    • Android/iOS共に対応するようSQLiteによる簡易な実装に
    • アクセスした日時によるソート
    • Swipeによる削除

学び

  • AndroidのRoomでSQLiteの書き方を覚えたので割とDBはなんとかなる
  • BLoCやProviderによるロジック記述の概要を掴んだ
    • まともに作り終えていたのがWebViewCheckerだけだったので……
  • BLoCによりSteamBuilderを使ってあらかたをStatelessWidgetで組めることを実感
  • 休日とか寝る前とかに書くならやっぱりFlutter
  • BitriseでAndroidのリリースステップ書くのはやっぱり簡単

スクリプトはこちらの relase でaabを作成するところまで対応しました。

---
workflows:
  release:
    steps:
    - activate-ssh-key:
        run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
    - git-clone: {}
    - flutter-installer:
        inputs:
        - is_update: 'false'
    - flutter-build:
        inputs:
        - project_location: "$BITRISE_FLUTTER_PROJECT_LOCATION"
        - android_output_type: appbundle
        - android_output_pattern: "*build/app/outputs/bundle/*/*.aab"
        - platform: android
    - sign-apk:
        inputs:
        - android_app: "$BITRISE_AAB_PATH"
    - deploy-to-bitrise-io:
        inputs:
        - deploy_path: "$BITRISE_SIGNED_AAB_PATH"

今後

機能的にAppleの審査に通るわけもなく、またAndroidでリリースしても利用者いないと思うので(ブラウザで十分……)今回の開発は「Bitrise上でリリースステップが回せる」状態になったここで完了としようと思っています。

作成したアプリアイコンはそこそこよくできたんじゃないかな、と気に入っているのでどこかで使うかもしれません。。。

f:id:D_R_1009:20191116213842p:plain
作るのに30分ぐらいかけたアプリアイコン

次はもうちょっと機能のあるものを作ってみようと思います! アプリ開発者がんばっていくぞ!