合同会社zoome(ズーム)のフィード
https://zenn.dev/p/zoome
主にFlutter(Dart)を用いてアプリを開発している会社です。
フィード
【個人開発者向け】iOSアプリを4年間で5万本インストールした話
1
合同会社zoome(ズーム)のフィード
2020年〜2023年の4年間に日本で出たiOSアプリのほとんど全部(ゲーム、日本語に非対応のものを除く)、計5万1350本をインストールし終えました。一台のiPhoneに全部入れるのは無理なので、バックアップを取って後からインストール可能にしてあります。(アプリ名が見えると怒られそうなのでモザイク入り)また、集計したついでに各フレームワークの使用割合をリポジトリーにまとめてあります。中にあるapps.jsonというファイルにインストールしたアプリのAppIDを並べてあるので、毎年せっせとインストールしたんだなーというのが雰囲気で伝わると幸いです。https://github...
3日前
個人開発者でも商標申請した方が良い理由
合同会社zoome(ズーム)のフィード
個人で開発したサービスが軌道に乗り始め、長い苦労がようやく報われた…😭そんな時こそ商標登録がおすすめです。!本記事は商標登録の利点と注意点を大まかにお知らせすることが目的です。情報も執筆時点のものです。正確な情報や最新の制度については特許庁のサイトや書籍、専門家へのご相談でお確かめください。 商標登録の利点 同名や類似名称サービスの登場を防げるサービスが成功し始めると二匹目のドジョウ狙いや、あわよくば勘違いしてダウンロードしてもらおうと誤認されやすい見た目と名前にしたサービスが現れることがあります。Youtubeや Google Play、App Store のよう...
16日前
事前予約でアプリをリリースしたら初日で人気アプリになった話
合同会社zoome(ズーム)のフィード
先月「ずんだもんボイス・ムービーメーカー」というアプリを公開しました。https://apps.apple.com/app/id6479183761https://play.google.com/store/apps/details?id=social.zunda.maker弊社としては初めてアプリストアの事前予約機能を利用しました。これはアプリの公開前でもストアに「事前予約ページ」を作ることが出来、事前予約をしていただくとアプリの公開後に自動ダウンロードされるようになる機能です。今回、色々と知見を得られたので記事としてまとめていきます。※「ずんだもん」はSSS合同会社の商標...
4ヶ月前
【Flutter】Signals x Riverpod x MVVM という新しい設計手法を考えてみた (ヘルパー編)
合同会社zoome(ズーム)のフィード
前回作ったSignalsとRiverpodによるMVVMをもう少し改良します。https://zenn.dev/zoome/articles/268adc7ca2f594 ヘルパーとは前編では Flutter Hooks のsetStateの代わりにSignalsのsignalを使うと、Widgetを分割しやすくなったりロジックをViewModelに移せるようになったりして便利という話をしました。ただ、設計にこだわりのある方なら、ボタンをタップした時に実行するvm.counter.value += 1が微妙だな…と感じるかと思います。これはRiverpod3.0からSta...
4ヶ月前
【Flutter】Signals x Riverpod x MVVM という新しい設計手法を考えてみた
合同会社zoome(ズーム)のフィード
Hooks vs Signals ではない最近は「Flutter Hooks かSignalsか」という話をちらほら見聞きしますが、実際に触ってみた限りでは違うように思います。というのも Flutter Hooks とSignalsは役割が異なるためです。Flutter HooksWidgetを書く際の重複を減らし、コードを短くするためのパッケージSignalsRiverpodの書き方をシンプルにし、画面更新を減らす機能を充実させたような状態管理パッケージただしRiverpodのようにアプリ全体の状態管理をするのは不向き大まかに書くとこのような感じです。全く違いますよ...
4ヶ月前
【Flutter, Dart】状態管理パッケージ「Signals」の紹介
合同会社zoome(ズーム)のフィード
signalsという状態管理パッケージが面白い仕様だったのでご紹介します。!本記事は signals 5.4.0 に基づいて書いていますSignals.dartsignalsはReactの軽量版であるPreactのSignalsに準拠しています。 Signalint型の値を状態管理したい場合、Flutter Hooks だと以下の書き方になります。Flutter Hooks の場合// StatelessWidgetやStatefulWidgetのbuildメソッド内に書くfinal counter = useState(0);// Textウィジットで表示...
5ヶ月前
【Dart】case 文の理解を深める
合同会社zoome(ズーム)のフィード
今回はif-caseやswitch-case文について書いていきます。!本記事は Dart 3.4.4 で検証しています。 case文の基本if-caseもswitch-caseも、case以降に書かれた条件と合致した場合に処理を行います。var text = "cat";// 以下の処理はどれも同じ動作をするif(text == "cat") { /* 何か処理 */ }if(text case "cat") { /* 何か処理 */ }switch (text) { case "cat": /* 何か処理 */ break;}ca...
5ヶ月前
【Flutter】Riverpodが扱えるミニマムなBLoCパターンの構築
合同会社zoome(ズーム)のフィード
弊社ではMVP (Minimum Viable Product) によるFlutterアプリの開発をしております。MVPは極力リリースまでの期間を短くし、その後も頻繁に仕様変更をする必要があります。しかし、一般的な開発手法であるRiverpodでのMVVMだと「ModelとViewの混在化」が起こりがちで、リファクタリングに苦労することが良くありました。そこで、Viewの複雑化を防ぐためのデザインパターンであるBLoCを用いつつ、Riverpodの利便性をなるべく損なわない手法を考案し、少しずつ改良を重ねてまいりました。 BLoCパターンとは!既にBLoCパターンをご存知の...
6ヶ月前
AITuber向けのLLM(RobinHood、KUJIRA、Ninja-v1、Vecteus-v1)&GPT-4oを徹底比較!
合同会社zoome(ズーム)のフィード
家庭用グラボでも高品質なMistral系LLMが作れるようになったそうで、ここ2週間ほどの間に素晴らしいローカルLLMが続々登場しました。弊社はAITuber事業(aituber.net)を営んでいるので、AITuberのセリフ出力に適したローカルLLMに目がありません!ということで、7Bで動作する4種(RobinHood、KUJIRA、Ninja-v1、Vecteus)で、あえてキャラ設定をほとんど付けずにセリフ出力させた場合の出力結果を比較してみました[1]。また、ちょうど昨日GPT-4oが発表されたということで、GPT-4oとClaude3 Opusによる出力も比較していま...
8ヶ月前
【Flutter Web】基本的なOGPとSEO対策
合同会社zoome(ズーム)のフィード
OGPなどのmetaタグの設定OGPやdescriptionを始めとしたmetaタグが設定できるパッケージはいくつかありますが(これとか)、OGPが有効なSNSの多くはWebAssemblyに対応していないので上手く機能しません。なので、index.htmlにmetaタグを直接記述する必要があります。Flutter Web 上のページ毎に異なるmetaタグを設定したい場合は、index.htmlのmetaタグをページに合わせて変える必要があります。方法は多岐に渡りますが、Flutterとは離れる内容なので大まかな一例を書きます。Cloudflare Workers などの...
10ヶ月前
【Flutter】PackageInfoをPackageInfo.of(context)で呼べるようにする
合同会社zoome(ズーム)のフィード
MediaQuery.of(context)と同じようにpackage_info_plusをPackageInfo.of(context)で呼び出せるようにする方法です。!同じ要領でdevice_info_plusをDeviceInfo.of(context)、battery_plusをBattery.of(context)で呼べるようにも出来ます PackageInfoWidgetの作成import 'package:flutter/material.dart';import 'package:package_info_plus/package_info_plus.d...
10ヶ月前
【Dart】Null Safety な書き方チートシート
合同会社zoome(ズーム)のフィード
Dartの公式に Null Safety の解説ページ は当然あるのですが、Dartの経験者向けの内容ですし、一覧で確認できる記事があっても良いのではと思い書きます。!本記事は Dart 3.4.4 で検証しています。 nullを許容する変数の書き方nullが入る可能性のある変数を定義する時は?を付けます。String? str = null;int? integer = null;// ? 付きの変数に何も初期値を入れない場合、自動でnullが入る// なので以下の書き方は上と同じ意味String? str;int? integer;?を付けないとnull...
2年前
2021年の開発の参考になるFlutter製アプリ
合同会社zoome(ズーム)のフィード
2021年に公開された1803本のFlutter製アプリを調査しました。その中で、UIやデザイン、設計において開発の参考になりそうな、個人的に素晴らしいと感じたアプリをご紹介します。アプリ内に使用しているOSSライセンスの一覧があり、Flutter製であることが公表されているものだけを掲載しています。また、順番に意味はありません。※ 許可を得ずに勝手に紹介しておりますので、問題がございましたらご連絡ください。 機能の多いUI きょうの献立https://apps.apple.com/jp/app/id1576492917https://play.google.com/...
2年前
2020年の開発の参考になるFlutter製アプリ
合同会社zoome(ズーム)のフィード
2020年に公開された1054本のFlutter製アプリを調査しました。その中で、UIやデザイン、設計において開発の参考になりそうな、個人的に素晴らしいと感じたアプリをご紹介します。アプリ内に使用しているOSSライセンスの一覧があり、Flutter製であることが公表されているものだけを掲載しています。また、順番に意味はありません。※ 許可を得ずに勝手に紹介しておりますので、問題がございましたらご連絡ください。!この記事は2021年にnoteに書いたものを再掲しています Google製 Google Onehttps://apps.apple.com/jp/app/...
2年前
【Flutter】日本語と英語の混じったTextに下線を引くとがたがたになる問題の対処法
合同会社zoome(ズーム)のフィード
以下のTextを表示すると、機種によっては日本語と英語で下線がずれて表示されてしまいます。const Text( 'あAいIうUえEおO', style: TextStyle( fontSize: 40, decoration: TextDecoration.underline ),),Flutterのソースコードを読んでみたところ、フォントを指定していない場合、AndroidではRoboto、iOSでは.SF UI Textを設定していました[1]。なので、iOSで試しに「ヒラギノ角ゴ」を指定してみると、正しく下線が引かれるようになりました。co...
2年前