かごんま🌋 Advent Calendar 2020 の12日目の記事です。

この記事の内容は K-Ruby#25 で登壇した内容にいくつか補填を加えたものです。

結論

個人(小規模)でスマホアプリを作るなら、フレームワークはFlutterを利用し、コンテンツ管理には Spearly を使おう。

概要

Flutterを使うメリット

Flutterを使うメリットは以下の2つです

  1. クロスプラットフォームのフレームワークなので、iOSとAndroidの両OSに対応するための工数を削減することができる
  2. Firebaseとの相性がよく、サーバサイドの工数を削減することができる

なるべく最小限の工数でアプリをリリースする際に選択されるのがFlutterです。仮説検証のためになるべく早くリリースしたいだとか、予算の都合上あまり工数をかけられない場合に選択されるかと思います。

サービス運営上必要なコンテンツ

いくら最小限の機能でリリースするとはいえ、実際に人が使うサービスなので抑えるべきところは抑える必要があります。利用規約、プライバシーポリシー、FAQなどです。

提供するサービスによってはこれらがなくても問題ないかもしれませんが、そのようなケースは稀でしょう。

どうやってコンテンツを配信するか

コンテンツ配信の方法は主に以下の3種類があるかと思います。それぞれについて、メリットとデメリットを整理していきます。

  1. コンテンツをベタ書きする
  2. note等の外部サービスを使う
  3. 自前でサーバを立てて、WordPress等のCMSを用意する

コンテンツをベタ書きする

一番簡単な方法はアプリ側に直接ベタ書きすることではないでしょうか。これなら最も工数少なく配信することができます。

ただし、この方法には問題があります。

  1. コンテンツの中身の体裁をFlutter実装者が整える必要がある
  2. コンテンツの配信の頻度がアプリのアップデートに依存する

note等の外部サービスを使う

note等の外部サービスを使い、アプリ側ではそのリンクを参照するようにすれば、コンテンツ中身は担当者が記載するだけでよく、コンテンツ配信の頻度は任意のタイミングで行えます。

  1. コンテンツの中身のデザインが外部サービスに依存する

このデメリットが我慢できないならこの方法は使えません。

自前でサーバを立てて、WordPress等のCMSを利用する

自前でサーバを立てて、WordPress等のCMSを利用し、アプリ側ではそのリンクを参照するようにします。

コンテンツの中身やデザインは担当者が記載するだけでよく、コンテンツの配信頻度も任意のタイミングで行うことができます。

ただし、この場合には以下のような問題があります。

  1. コンテンツ配信のためだけに自前のサーバとWordPressを用意するには工数がかかる
  2. WordPressの方の保守・運用が必要になる

せっかくFlutter+Firebaseでサーバサイドの工数のコストが減らせたのに、これでは本末転倒です。

それでは、

  1. コンテンツ配信担当者が手軽に配信できる
  2. デザインも柔軟に設定できる
  3. サーバも不要

でコンテンツ管理をするにはどうすればよいでしょうか。

Spearly CMSによるコンテンツ管理

そのためのCMSがSpearlyです。SpearlyはFAST, STRONG, SLIMがコンセプトのHeadlessCMSになります(ちなみに鹿児島のスタートアップが開発・運用しています!)。Webサイトのマイクロサービス化を実現するためのCMSとなっています。

Spearlyの使い方はとても簡単です。

  1. Spearlyに登録
  2. 管理画面から、コンテンツを記載してデザイン(WordPressの管理画面のような感覚で操作できます)
  3. Spearly APIからコンテンツのHTMLを取得し、FlutterのWebviewまたはHTMLをparseして、コンテンツを表示する

このようにすることで、

  1. コンテンツ配信担当者が手軽に配信できる
  2. デザインも柔軟に設定できる
  3. サーバも不要

なコンテンツ管理が可能になります(iOS14でも問題なく動作)。Flutterへの導入もとても簡単です。非公式ですが、以下のpackageを使うことで簡単に導入ができます。

https://pub.dev/packages/spearly_flutter

ただし、まだdev版なので気になる点があればお気軽にIssueやPRください!

まとめ

各コンテンツ管理の方法とメリデメをまとめました。

コンテンツ管理 メリット デメリット
アプリにベタ書き ・一番工数がかからない ・コンテンツの中身の体裁をFlutter実装者が整える必要がある
コンテンツの配信の頻度がアプリのアップデートに依存する
note等の外部サービスを使う ・コンテンツの中身は担当者が管理すればよくなる
コンテンツ配信の頻度は任意のタイミングで行える
・コンテンツの中身のデザインが外部サービスに依存する
WordPress等のCMSを利用する ・コンテンツの中身やデザインも担当者がある程度自由に調整できる
・コンテンツの配信頻度は任意のタイミングで行える
・コンテンツ配信のためだけに自前のサーバとWordPressを用意するには工数がかかる
・WordPressサーバの保守・運用が必要になる
Spearlyを使う ・コンテンツの中身やデザインも担当者がある程度自由に調整できる
・コンテンツの配信頻度は任意のタイミングで行える
・サーバレスで運用ができる
・組み込みが大変(非公式packageで代替)

Flutter+Spearlyの組み合わせで、コンテンツもサーバレスで開発しちゃいましょう!

おまけ

登壇時に使ったスライドも追加しておきます!

spearly_flutterによる爆速開発のすゝめ (K-Ruby#25 登壇スライド)