マッチングアプリのチャットをAIに採点してもらえるクソアプリを作りました

この記事はクソアプリ Advent Calendar 2022 #2 の 12/20の記事です。

マッチングアプリのチャットをAIに採点してもらえるクソアプリを作りました

以前、「ツイッタラーであるお前たちのあだ名をOpenAIに決めてもらえる「君のあだ名は」を作りました」という記事を書きました。

bannzai.hatenadiary.jp

この時にNext.jsでの開発やVercelでのデプロイが楽だな。なんかもう一個なんでも良いからクソアプリを作りたいな。と思い捻り出したクソになります。

それの紹介記事になります。

どんなの

こんなの

maccha-ai.vercel.app

使い方はとっても簡単。マッチングアプリで初めてマッチした人に対してのメッセージを入力し、「採点する」ボタンを押すだけです。私の決め台詞は0点でした。

感想

OpenAIを使ったクソアプリをもう一個くらい作りたい気持ちと改めてVercelのdeploy楽すぎワロタ。プロダクトは焼き回し感がありますがクソアプリを出して便秘解消したので気分は良いです

まとめ

Pub Repoにソースコード置いてあります。マッチングアプリでは0点と言われましたが

スターください 🌟

github.com

おしまい\(^o^)/

ツイッタラーであるお前たちのあだ名をOpenAIに決めてもらえる「君のあだ名は」を作りました

この記事はクソアプリ Advent Calendar 2022 No.3 13日目の記事です。なんかクソアプリを作ってたらクソアプリができてしまったので、アドカレの過去の枠が空いていたので埋めます

イッタラーであるお前たちのあだ名をOpenAIに決めてもらえる「君のあだ名は」とは

君のあだ名は。というクソアプリです。

https://kiminoadanaha.vercel.app/

サービス概要としては、Twitterログインして、直近のツイートをいくつか取ってきて、OpenAIに「こんな発言をしているツイッタラーのあだ名を決めてくれ」という呪文を投げてレスポンスを表示するものになっています。

画像のようにAIにあだ名を決めてもらっています。いらすとやにぴったりなイラストがあってビビりました

なぜ作ろうとしたのか

クソアプリを作るのに理由なんてねえ!

開発秘話

NextJSを使用してVercelにホスティングしているのですが驚くほど簡単に、そして勢いだけで完結してしまった普段モバイルアプリ開発をしている身からすると感動でした。開発時間は3,4時間くらい。そして最後にEnvironment Variablesの設定をtypoして溶かした時間が約3時間くらいでした。ありがとうございます。

OpenAIについて

巷で噂のOpenAIのAPIを使用しています。その中でもtext completionという機能を使用しています。 https://beta.openai.com/docs/guides/completion/introduction

こいつに投げると例えば不完全な文章を補完してくれたりするので、その機能を利用してあだ名を決定しています。詳しくはソースコードも公開しているので見てみてください。そしてスターください

github.com

まとめ

クソアプリ最高!クソアプリマンとして生きていきます!

スターください 🌟

github.com

おしまい\(^o^)/

ツイッタラーであるお前たちのあだ名をOpenAIに決めてもらえる「君のあだ名は」を作りました

この記事はクソアプリ Advent Calendar 2022 No.3 13日目の記事です。なんかクソアプリを作ってたらクソアプリができてしまったので、アドカレの過去の枠が空いていたので埋めます

イッタラーであるお前たちのあだ名をOpenAIに決めてもらえる「君のあだ名は」とは

サービス概要としては、Twitterログインして、直近のツイートをいくつか取ってきて、OpenAIに「こんな発言をしているツイッタラーのあだ名を決めてくれ」という呪文を投げてレスポンスを表示するものになっています。

画像のようにAIにあだ名を決めてもらっています。いらすとやにぴったりなイラストがあってビビりました

なぜ作ろうとしたのか

クソアプリを作るのに理由なんてねえ!

開発秘話

NextJSを使用してVercelにホスティングしているのですが驚くほど簡単に、そして勢いだけで完結してしまった普段モバイルアプリ開発をしている身からすると感動でした。開発時間は3,4時間くらい。そして最後にEnvironment Variablesの設定をtypoして溶かした時間が約3時間くらいでした。ありがとうございます。

OpenAIについて

巷で噂のOpenAIのAPIを使用しています。その中でもtext completionという機能を使用しています。 https://beta.openai.com/docs/guides/completion/introduction

こいつに投げると例えば不完全な文章を補完してくれたりするので、その機能を利用してあだ名を決定しています。詳しくはソースコードも公開しているので見てみてください。そしてスターください

github.com

まとめ

クソアプリ最高!クソアプリマンとして生きていきます!

スターください 🌟

github.com

おしまい\(^o^)/

🧸🧸🧸 Figma から SwiftUI のコードを生成するツールを作りました 🧸🧸🧸

Figma => SwiftUI

Figma から SwiftUI のコードを生成するツール、Sigma を作りました。Swift愛好会のイベントで年末に発表しました。

ただ、プラグインとしてリリースする作業をすっかり忘れていました。

そして、プラグインの審査を通して先日無事にリリースされました 🎉

www.figma.comhttps://www.figma.com/community/plugin/1055606842094169320/Sigma

スターください

どんなの

こんなの

www.youtube.com

カニズム

ドキュメントでも軽く触れてますが改めて

FigmaのPluginではデザインファイル上でレイヤーをPluginのAPI経由で取得できます。その中から選択中のステータスも取得でき、Sigmaでは選択されたレイヤーから子供のレイヤーを見て、種類や構造ごとにSwiftUIのViewにマッピングする処理が書かれています。

ただ自由レイアウトで置かれたものを解析してそれらをSwiftUIの VStackHStack に割り当てる。といった処理は現実的ではないので、Figma の Auto Layout を設定しているプロジェクトで使用できます。

www.youtube.com

どう便利になるか

まず、Figma の Auto Layout について軽く触れます。FigmaのAuto Layoutは言ならばSwiftUIの VStackHStack と同じように垂直・水平方向に要素を並べるためのフレームです。Jetpack ComposeやFlutterだとColumnやRowになります。なので、昨今のUIフレームワークにとっては、Figma の Auto Layout でデザインされているものは理論上コードで表現することが可能です。逆に言うと実現が困難なものをデザインのプロセスで気づくことができます。

チーム開発だとエンジニアはデザインのレイアウトの意図を汲み取りやすく、実装されたものとデザインの乖離が防げて確認等の後からのコストが下がることも期待できます。

Sigmaはそこから一歩踏み込んだツールとして捉えることができます。つまり、実装が実現可能になっているのならコード生成できるだろう。と言う意図です。

レイアウト(配置)について中心に触れましたが、もちろんTextであればフォントサイズやテキストカラー、ドロップシャドウや角丸といったものもサポートされています。

従来のXibでやっていたようなビルド無しでのレイアウト確認ができるような価値に似た価値もあると思います。デザインをビルド無しでプレビューしつつ、実際に動くもの(SwiftUIのコード)ができてたら最高だな。って考えています。

苦労したところ

良さそうなところばかり書きましたが悩んでいる部分も。実際はデザインツール上での表現と実際のコードの表現ではギャップがありその点が悩みの種ですね。目的が違うので当たり前なのですが。

例えば FigmaのTextはデザインツール上に矩形として表示領域が確保されていますが、これに背景色やボーダーをつけたりはできません。コード上で Text.background(color) と表現するのが一般的なものであっても、デザインツール上では何かしらTextを包む枠を用意して、その枠に対して背景色をつけることになります(私がFigmaのこと知らないだけかも)。これはコード生成時に Text.background(color) とはできないのでもやっとポイントですね。

他の例では Grid 表示は VStack と HStack の組み合わせと区別できなかったりします。なので Sigma ではレイヤーの名前をスペシャルな処理を行うためのマーカーとして利用するアプローチをとっています。詳しくはドキュメントも見てみてください。

アプローチの仕方やサポートの範囲は変わる可能性がありますが、今はレイヤーについている名前から該当する処理をしているものもあるのでSigmaを使う場合は一度ドキュメントも見てみてください

サポートされているもの

ドキュメントに随時更新中: Supported Component

現時点でサポートされているSwiftUIのコンポーネントは下の通りです

  • VStack
  • HStack
  • LazyVGrid
  • LazyHGrid
  • Image(systemName:)
  • AsyncImage
  • Text
  • TextField
  • Button
  • Divider
  • Spacer
  • ScrollView
  • List

参考

React で同じようなものを作っている方もいるので興味ある方はこちらも覗くと面白いかもですね。SigmaでもFigma Plugin の UI部分(Copy to Clipboardの部分)も公開されているソースコードを大いに参考させていただきました。ソースコード公開されているの最高にありがたいですね。

作ろう!自分だけの Figma コード生成機✨

今後

iOSだとNavigationBarやTabBarもそのうち何かしらのアプローチを考えてサポートを行いたいなあ。と思っています。あと SwiftUIなのでmacOSやiPadOSのアプリでも使えると思っています(未確認)

完璧にコード生成できるものを目指すと言うよりは Sigma 単体ではデザインファイルから見た目を生成して、そこから編集して開発速度を上げる用途が良いと考えています。

元々は個人のアプリ開発Figmaでデザイン作ると同時にデザインについて確認する。そこからコード生成してアプリの開発速度を上げる。がモチベーションだったりするのでこれからアプリいっぱい作っていきたいですね。上述したようにFigmaのAuto Layoutとして開発の効率化したいチーム開発者の方も使う上でマッチしていると思います。あとデザイナーの方でiOSアプリ開発したいという声も届いているのでそう言う方にも良いかもしれないですね

最後に

Figmaプラグインページです

www.figma.com

f:id:bannzai:20220110213020p:plain
溢れ出る公式感

GitHubリポジトリです

github.com

Sigma良いじゃん。Figma Plugin作りたいから参考になる。と思ったそこのあなた

スターください 🌟

あ、あとプラグインページの方にもいいねください

おしまい\(^o^)/

2021年の振り返り

この記事は エンジニアと人生アドベントカレンダー2021 の25日目の記事です

振り返り

去年に引き続き振り返りを書いていきます

エンジニアとしての活動やプライベートの一部を覗き見ながら、2021年のbannzaiの人生に何が起きたのかをみていきましょう。ソースはTwitter

お仕事

4月に無職になり

5月のGW明けからAppify Technologies で働き始めました

後述しますが子供が産まれるのもあり9~11月はお休みでしたのでまだ半年も稼働はしてないのですが周りのレベルの高さにあたふたしながら楽しんでやっています。SwiftUI x GraphQLという構成でアプリを書いています。SwiftUIもGraphQLもいいぞ

あと久しぶりにGolangとReactも仕事で書いています。何もかも忘れているし時代も進んでいるので初心者に毛が生えた程度なのですが楽しいです。

家、変わりました

昨年の振り返り記事に書いてありますが、家を失くしました。辛い。3,4ヶ月の月日を経て家を手に入れました。嬉しい。そして、半年で家を変えて鹿児島に居住地を移しました。いえい。このアクションの理由も出産が絡んでいます

引っ越した翌日に全国的なニュースになるほどの豪雨に見舞われたり、1週間足らずで クローズドなコミュニティの洗礼を受けたりしましたが元気に過ごしています。

こっちはスーパーで買った刺身がとにかく美味い。寿司屋の寿司も美味い。食べ物がうまい。後久しぶりの車の運転も楽しいですね。テスラ欲しい

パパになりました

9月からパパになりました。ブログにも書いてあるのでそちらも見てください

bannzai.hatenadiary.jp

パートナーが最近育児漫画をよく描いているのでそちらにもちょいちょい私が登場しているのでbannzaiのパパ生活が気になる方はウォッチするのも面白いかもしれないですね。 https://twitter.com/hockamneco

もう本当に我が子かわいい。これにつきますね。パートナーの家族にも助けられながら仕事とも両立できています。

個人開発

Pilll

Pilllというアプリを共同で開発して、Flutterに書き直したものを今年の初めに出しました

bannzai.hatenadiary.jp

正確には覚えてないのですが、7/20くらいにトライアル付きで課金機能を出してマネタイズを始めたようです

今日(12/25)ま大体350人課金してくれていますね。やったね f:id:bannzai:20211225165810p:plain

少し前ですがAppStoreのレビューも2000件超えつつ4.6以上をキープしているのでとてもすごいですね。誘ってくれたohsさんには本当に感謝してます。貴重な体験が今できていると感じています

スターも200スターいただきました。まだの方は スターください

また個別にPilllを開発・運用した感想等をまとめた記事も別の機会に書こうと思います

クソ 素晴らしいアプリ

クソアプリアドベントカレンダー の企画でアプリを1つ作りました。こちらも是非ご覧ください

zenn.dev

が、諸事情によりTestFlightのpublinkがまだ公開できていません。というか公開しないかも

OSS

知っている方も多いと思うのですが普段はGitHubのスターを乞食するためにOSSを公開してスターを乞食することを生業としているのですが、年の瀬になるまでOSS作っていないことに気づきました。友人が主催の仲間内で集まってするハッカソンを機にOSSを作り始めました。そして、Swift愛好会で公開しました。まだ開発が必要ですが良い感じになりそうなので スターください (なんとかキャラブレを防ぐことができた)

内容はFigmaからSwiftUIのコードを生成してくれるFigmaのPluginです。

しかし、Pluginとして公開する準備等をすっかり忘れていたというドジっぷりを発揮しました。リリースまでもう少しお待ちください。スターは事前にください

このほかにもまだ作っていて途中のものがいくつかあるので来年公開したいですね。お楽しみに

まとめ

来年も

スターください 🌟

おしまい\(^o^)/

子供が生まれました

子供が生まれました

突然ですが子供が生まれました。

👶 < Hello, world

出産までの10ヶ月間

出産直前までを時系列に沿って人生を振り返ってみる

1月 パートナーの妊娠発覚

パパ、頑張るよ。まずは童心を思い出すよ

2月

Pilllリリースした。パパいっぱい君と遊びたいから働く時間減らせるように頑張るよ

bannzai.hatenadiary.jp

3月

こちを出迎える。パパな実は君より先に扶養する子が増えたんだ

4月

無職になる。パパな、無職で食って行こうと思うんだ

5月

Appifyで働き始める。パパな、やっぱり働くよ。無職で養うのまだ無理だと気付いたんだ

6月

エンジニアに話しかけていいタイミングをやる。パパな、バズり方覚えてそれでガッポガッポしてこうと思うんだ

7月

鹿児島に引越し。パパな、オリンピック開催前に一回東京から出た方が良いと思ったんだ。パートナーの実家近くに場所に行こう

8月

パパ誕生日。パパな、やっぱりスターを乞食するのやめられないんだ

9月

宣言的無職。パパな、今月パパになるんだ

9月...

👶 < おんぎゃあ. ⭐️ < うおおおおおおおおおおおおおおおお!

f:id:bannzai:20210926135001p:plain

ピックアップ

無職って言っていた9月~11月までは育休予定です。鹿児島に引っ越したのは、オリンピック東京で開催変わらずか。東京出ておくか。 彼女の実家近くで助け借りよ。っていうのが経緯でした。

立ち会い

コロナ禍で出産の立ち会いが多くの病院で禁じられていたのですが、(パートナーがめちゃくちゃ)交渉してくれて実現できました。実の所出産に立ち会うって感覚が最初知らなくてそれが良いことかどうかがわからなかったのですが、実際に立ち会ってみると言葉にできないくらいの感動がありました。特にこのご時世で立ち会えたのは本当に幸運なことだと思っています。思い出したらまた感動してきた執筆終わったらパートナーにもっとお礼言お。

リアル

さて、このセクションでは出産の想像と現実のギャップについていくつか書きます。私(妊婦側ではない)目線の話ではあるのでそこは注意してください。もちろん全て個人差があります。まず私が持っていた妊娠から出産までのイメージは下のような感じでした。

想像していた

  • つわりはあるし妊娠中期~後期は胃に優しい食生活とかを心がける必要がありそうだ
  • お腹が大きくなると動くのもつらそうだから俊敏にサポートしよう
  • 陣痛が来たらすぐに病院に運ぼう。そのまま立ち合いになったら出産は痛いだろうしさポートしよう。声をかけよう
  • 出産直後は彼女は体力が無いだろうけど「ほら産まれたよ。よかった 😭」って言い合おう

直面した現実

想像とのギャップを書く

つわりはあるし妊娠中期~後期は胃に優しい食生活とかを心がける必要がありそうだ

初期からめっちゃつわりもあるし、パートナーが偏食になり食べれる食糧を調達する必要がある。ほぼ毎日変わる時期もあったのでネットスーパー買いだめとかは無理

お腹が大きくなると動くのもつらそうだから俊敏にサポートしよう

つわりでふらついているし初期から想像以上に動く。お腹が大きくなると立ち上がるのも常に全力なので補助は必要。寝たきりサポートくらいの勢い

陣痛が来たらすぐに病院に運ぼう。そのまま立ち合いになったら出産は痛いだろうしさポートしよう。声をかけよう

想像の補足から。陣痛が来たらまもなく分娩室(赤ちゃんを産むところ)に入って気張るのだろう。それが通常ルート。とか思っていましたが体験したものは違いました。

まず、陣痛の練習みたいな前駆陣痛という現象が起きます。これは陣痛よりも弱い痛みでお腹が痛くなります。区別がつけば良いのですが痛みの度合いや痛みの間隔などの肌感に近い判断材料しかありません。その肌感も初出産時には違いがわかるわけないので常に緊張しています。彼女の場合は前駆陣痛が2日間くらいあってから夜中に本陣痛が発生しました。ここで私たちは外さずに病院に行けましたが隣で見ていても「常に痛そう」って感じだったのでよく病院行くタイミング外さなかったな。と思っています。反面、痛さが違うので外さなかったという見方もできますが、病院に向かっている途中お互いに半信半疑ではあったとは思っているので簡単ではないです。

さて本陣痛だったと発覚してからなのですがすぐに産まれるわけではありません。彼女がその場で入院が決定し出産までは病院にいることになります。そしてこの時間は一概に何時間という指標があるわけでもなくまちまちです。彼女の場合は10時間の闘いの末に出産になりました。人によっては陣痛は「内側からハンマーで殴られるような」激痛らしいのでその状態で数時間はやばそうですね。

彼女の入院中はコロナ禍で一緒にいることができないので自宅待機していたのですが、「そろそろ産まれるから来て」と病院から電話があり院内に入りました。待機室に案内されそこで待っていたのですが時折「ぎゃあああああああああ」という声が聞こえてきました。その時は「もう一人いるのか。難産かな。痛そう」と本心で自分達ごとに思っていませんでした。実際その断末魔のような叫びは私の彼女の声で、後に安産と言われたのに、出産時の激しい痛みに耐えようとしている声でした。分娩室に入りそのことを認識すると脳が一瞬フラッシュしました。意識が朦朧としている彼女。血だらけの部屋。彼女の体制が変わらないようにつけられている拘束具。定期的に起こる断末魔の叫び。

いやいやここ拷問部屋の間違いやろ。と思いました。

のちに私が泣きそうな顔だと聞きましたがサポートどころではありません。むしろ看護師さんにサポートされていました。 というかサポートの余地がない。。。まじで手を握っているだけだった。。。

出産直後は彼女は体力が無いだろうけど「ほら産まれたよ。よかった 😭」って言い合おう

なんだかんだ言って出産は終えました。疲れたとは違いますが私も40年分くらいの人生を過ごした気分でした。生まれたら終わりというわけではなく例えば出血をしていたら止血等を先生たちが並行して行っております。全然「産まれたよ。よかった 😭」と手放しに言える雰囲気ではありません。先生は言ってたけど。今度は母体に対してあれこれしています。私はあわあわしています。

とはいえ時間にしてはそれまでの衝撃の連続と比べると短い時間でした。そのあとは彼女とも喋ることはできました。できたのですが、「俺だったら気絶しているし喋る元気とかないな」って状態だったのでよく喋れたな。と思っています

コロナ禍

今回体験した出産事情は史上稀な環境だったと言えるのではないでしょうか。世界中でパンデミックが起きている中での出産です。通常だったらこうする。これができる。と言った期待も持てない状態でした。立ち会いの例もそうですが気分転換の選択肢の少なさも挙げられます。妊婦は基本的に薬等は使えないし免疫力も弱くなっています。感染力が高いウイルスとは特に相性が悪いです。通常の外食もできないし、私が運んでくる可能性もあるのでこの期間は出社含めての対人の場面を最小限に過ごすようにしていました。

必要であれば一部の人には言いましたが、この期間対面の予定全部断っていたのは ↑ の理由です。

あとからやればよかったと思ったこと

散々悲惨なシーンを書きましたが、やはり人生で思い出の場面だったことには変わりません。あとから何とも言えん感動も込み上げてきました。当事者からするといきなりその場面に遭遇すると何も余裕はありませんが、「悲惨さも含めて動画撮っておけばよかった」と思っています。同じような人がいるようなら動画をとりあえず回しておくことをお勧めします。

我が子

我が子可愛い。産まれた瞬間から可愛い。出産直後からまじ可愛い。指を握ってきます。嘘お。え、こんな可愛い生物いる?泣きます。嘘お。え、可愛い。嘘お。大きさは3,332gでした。あと1gでゾロ目なところも可愛い。髪の毛が思っていたよりも生えています。可愛い。手足の指が長い。可愛い。すごい。ほっぺが柔らかすぎる。すごい。パパが抱くと泣き止みます。これが尊いってやつか。指をチュパチュパしている。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。可愛い。

終わりに

書きたいことが山ほどあるのですが、すべてを文章にするのも大変なのでここら辺で筆を置きます。またオンラインでカジュアルにお話でもしましょう。最近身の回りがベビーラッシュなので落ち着いたらみんなでご飯でも行きたいですね。東京にもそのうち戻る予定なのでその時は誘ってください。

今日はスターは乞食しないお ( ^ ω ^ )。その代わり祝いの言葉待ってますね

おしまい \(^o^)/

個人開発のお話

個人開発のお話

こんにちは bannzai です。普段はちょっとしたツールやライブラリを作って営業力でスターをもらうことを生業としていますが今回はプライベートの時間で作っているアプリのお話と宣伝をしていきたいです

作っているアプリ

もともとohanamizukiさんが開発していたPilllというアプリを開発の方を引き継いで一緒に作っています。 Pilllについては下記のnoteを見てもらえたら概要や生まれた経緯が分かります。

note.com

簡単に言うとピルという薬の飲み忘れを防止するためにサポートするアプリになります。

引き継いで開発までの時系列をまとめると

  • ohanamizuki < Pilllに1万人以上ユーザーが付いてもっと良くしたいから開発の部分を引き継いで一緒にやってかない?
  • bannzai < よっしゃ
  • ohanamizuki < スケールさせたいしリプレイスしても良いくらいの気持ち
  • bannzai < よっしゃ
  • ohanamizuki < Androidもあったら良いよね
  • bannzai < よっしゃ

から始まりました。話自体はたしか2020年の6月くらいにもらいました。結果的にがっつりリプレイスもして2021/01/24にiOSアプリを、に少し時間を置いてAndroidのアプリもリリースすることができました 🎉 iOSについてはリプレイス後に一度計測もしたいし評価をリセットして出したのですが、執筆時の2021/5/01では1000件を超えるレビューと平均評価4.6が付けられていてとても嬉しいです。ユーザー数もちょうど2万人くらい(おそらくリプレイス後に+7kくらい)いて需要があることを体感しています

f:id:bannzai:20210429095542j:plain

以下に各プラットフォームのストアのリンクを該当ユーザーで使いたいという方はぜひ使用してみてください。あとスターください。Androidの方は最近出したばかりでもあるのでレビューもまだついていないのですがこちらの方も後述しますが現在はiOSと同じソースコードで動いているのでほぼiOSと体験は変わらないものとなっています。なのでアプリの内容としてはほぼ同一なものになっています。興味がある方は一度落として試してもらえたら嬉しいです。こちらもスターをもらえたら喜びます

AppStore Google Play Store

選定技術の変更

もともと純粋にSwiftのみで書かれていたiOSアプリだったのでそんなに癖はなかったのでそのまま使用しても良かったのですが、クライアントはFlutter、バックエンドはFirebase(系のサービスを中心に)を採用して開発をすることにしました。以下が決めるまでのその時の気持ちです

  • どうせならなにか馴染みのない技術を試したい
  • Androidも出したい気持ちがあった
  • DBがアプリ内のローカルのみだったので変更する必要があった
  • 通知もローカルからの発信/受信のみだったがバックエンド用意してリモートからも送りたいよね
  • 開発者は一人だからFirestore(スキーマレス)でも全く困らなさそう
  • アプリとしての複雑さやスケール具合はある程度天井が見えているからFrameworkやBaaSの普通にできる範囲で必要要件はカバーできそう
  • 例えば「Flutterでxは難しいけどyならすぐできる」と代案の提案等をしても通じやすい相手だし冒険しても良さそう

と、こんな具合でした。実質リプレイス前後含めて開発に半年程の期間で仕事の合間の時間を使って開発している程度ですが、上記の判断基準で選出した結果におそらく後悔は一度もして無く過ごせていると思います。同じように悩む方がいたら参考にしてください。とはいえ、やっぱり躓くところはあるので作りたいものに対して軽く検証はしておくと安心ですね。

その他細かいところでいうとPilllのFlutterのコードはGitHubに公開されています。利点としてはみなさんに スターがもらえる 事とGitHub ActionsやBitriseといったCIが広い範囲の無料枠の中で使えるのがとても嬉しいですね。ちなみにデメリットはbannzaiの綺麗じゃないコードが世の中の誰でも見ることができるところですね。謙遜とかじゃなくて「動いているからヨシ」だったり「あー、ここはもう過度に共通化しちゃえば良いや。オレ一人だし」みたいなコードが散見できる場所になっているので私の恥部を見たい人は覗いてください。

github.com

今使っているもの

使っている技術やツールについて改めてまとめます。bannzaiのことを知っている人たちは話のネタにでもしてください。

Flutter

pubspec を見れば分かるのですが主要なライブラリをざっくりと書きます。

freezed x riverpod x flutter_hooks は組み合わせで State Management で使用しています。楽にかけてとても良きですね。mockitoはUnitTestingの際によく使用します。Flutterはmockitoを使ったmockの準備やWidgetTestingが結構強力で「もうここ動作確認したくないや」ってときにテストを書くハードルが下がってとても良いです。

Firebase(and GCP)

使っているサービスをずらりと。これ以外にもあるかも

  • Analytics
  • Crashlytics
  • Cloud Firestore
  • Firebase Cloud Functions
  • Cloud Messaging
  • Firebase Auth
  • BigQuery

守備範囲が広く取れてFirebaseってやつは良いですね

CI

PRごとのテストはGitHub Actions, Deploy系はBitriseって分け方にしています。BitriseはCodemagicでも良いなと思ったのですが、OSSによるPricingの工面がサポートが連絡しないといけなかったのと、証明書等を預けておけてスクリプトが動けばどこでも良いな。って気持ちだったので慣れているBitriseにしました

Web Pages

FAQやリリースノートはWebで管理したほうが便利かつPilllではドキュメントはNotionを最近使用していました。なのでこういった静的に置くWebページもNotionで置いておけたら良い。かつNotionでもデザインをPilllらしくしていけたら良いよね。などの願望を叶えてくれるツールであるAnotionを使用しています。最近公開したばかりなのでコンテンツ等もまだ少ないのですがデザインがカスタマイズできてNotionで書いておけば気軽にホスティングできてとても良きです

Anotionで作ったPilllのページです pilll.anotion.so

楽しい?

ここまで読んで「と言いつつbannzaiは性別♂だから開発しててどうなの」って思う方がいるかもしれません(というか僕もどうなんだろうと思っていた)。最初はとりあえずohanamizukiさんと久しぶりに一緒に開発するのも楽しいし、やりたい技術を試したりできるのと理性で考えたときに市場規模が良い感じにニッチだけどそこそこ大きく、競合も少ないからそういう意味で可能性を感じて身を乗り出しました。それで実際やってみると機能開発等は二人で開発のコスパ含めて議論するのですが、課題自体は割と明確で(おそらくは)何の障害もなく使用者の気持ちになって良い提案ができていたり、その結果AppStoreでの評価や使用者数の数字が右肩上がりに出ているようにポジティブな評価が目に見えたり、意外だったのがアプリ内で用意している問い合わせ用のフォームから礼を言われることもしばしばあります。また、開発者が募るSlackで「最近こういうの作っているんですよ」っていうと意外とユーザーが身近に何人もいたりしてそういうこともありモチベーションは結構高いです。というわけで今楽しんで開発をしています。

まとめ

以上、最近こういう事もやっているよ活動報告でした。ユーザーの人は今後どんな機能追加するの。とか気になる人もいると思いますがそれは今後のお楽しみということで楽しみにしていてください。また機会があったら開発者向けのブログやらサービスを運用していての知見も記事にしていけたら良いなと思っています。

最後に一言だけ、GitHub,AppStore,Google Play Storeのアカウント持っている方へ。ぜひPilllのページまで行って

スターください 🌟

おしまい\(^o^)/