Ha:phazardly

プログラミングとか同人活動しながら2億くらい稼ごうとガンバr

#定時報告 2018/09 3週目

状況

仕事

月 〜 金 10:00 - 19:00

IOS-02#15

Mugride iOS版リリースされました

Mugride - Note Taking App

Mugride - Note Taking App

  • keisuke tanaka
  • 仕事効率化
  • 無料

Android

play.google.com

ひとまずこれで完了。

質問はSupport,またはDiscordから受け付けてます

mugride.niwaha.co

discord.gg

進捗 : ■■■■■■■■■■

今後やること#2

2つやりたいことがあるので、並行で進める。

1. 作曲

先週も触れたけど、謎の作曲浴が湧いたので、曲久しぶりに作ってみる。

良ければボーカル入れてbandcampにでも売ります。

ゴール

  • E.P.販売

2.アプリ

結局もう一つアプリ作ることにしました。

理由は2つ

  1. 今後のアプリ実装のために共通化を勧めてたので、前より効率良くできるはず

  2. 今回Flutterで作りましたが、その知識を忘れないように、かつ知識を深めたい

というわけで、今後はこんな感じで。

ゴール

進捗 : ■■■■■■■■■■

長期タスク

タスク 内容 ゴール
IOS-02(運用) Mugride(運用) なし
IOS-03 内容未定 v1.0.0リリース
作曲 E.P.を作成する 販売

NOTE

同人活動 #9

一言

今週から心機一転またがんばります

#定時報告 2018/09 2週目

状況

仕事

月 〜 金 10:00 - 19:00

IOS-02#14

Mugride Android版リリースされました

play.google.com

iOS版も申請しましたので、通過・公開待ちです。

今後

追加したい機能もありますし、不具合もあると思うので、随時対応。

進捗 : ■■■■■■■■■■

今後やること

IOS-02はクリティカルなバグ以外は一旦おいておこうかと思ってます。

少し気持ち的に疲れました...

アプリ制作もいい案があれば作りたいですが、今の所何も浮かばない。

開発ならWebでちょこちょこ案があるので、次はWebになるかなー?

今は開発より作曲欲がやばいので、E.P.でも販売しようかと思ってます。

長期タスク

NOTE

同人活動 #9

一言

リリースできて、本当にホッとした反面、何が起こるかわからない恐怖があります...

#定時報告 2018/09 1週目

状況

仕事

月 〜 金 10:00 - 19:00

IOS-02#13

以下近日リリース予定のアプリ

mugride.niwaha.co

予約トップ10というサービスに登録してみました。

yoyaku-top10.jp

リリース状況

8月末リリース予定でしたが、先週の料金体系変更とbugfixが長引いてしまったので、今週に申請予定で進めています。

Crashlytics+Firebaseでのクラッシュレポートは便利ですね。

GithubにIssueの自動追加できます。けどこれが結構面倒で、類似エラーの判定が微妙で同じ原因のエラーがたくさんできてしまうんだな。

進捗 : ■■■■■■■□□□

長期タスク

NOTE

同人活動 #9

一言

近くに二郎系のラーメン屋があって、結構好きなんですが、もう3ヶ月行ってないです。

行きたいー

#定時報告 2018/08 4週目

はじめに

8月あっという間でしたね。それはもう怖いくらいに

状況

仕事

月 おやすみ 月 〜 金 10:00 - 19:00

IOS-02#12

以下近日リリース予定のアプリ

mugride.niwaha.co

予約トップ10というサービスに登録してみました。

yoyaku-top10.jp

少しずつですが、はやくも予約登録してくださった方が...ありがたし。

料金体系

そういえば、料金体系について触れていなかったので書きます

プラン 料金 概要
FREE ¥ 0 - バナー広告/機能制限
PRO ¥ 800 - 広告なし/機能制限なし

よくある料金体系ですね。

本当は有料のみの予定でしたが、広告収益がどの程度あるのかも見てみたかったので、これにしました。

実装

Navigator.popをフックに処理したいなー、と思ったのですが、情報がなくいろいろ模索した結果、

disposeでやれるということに気づいた。

Stateful Widget Lifecycle | Flutter By Example

disposeはStateが削除されるときに呼ばれるメソッドです。

  @override
  void dispose() {
    // do something.

    super.dispose();
  }

とすればいいわけだ。

進捗 : ■■■■■■■□□□

長期タスク

NOTE

同人活動 #9

一言

最近作曲したい欲が上がってきたので、アプリが一段落したらやろう

#定時報告 2018/08 3週目

状況

仕事

月 おやすみ 月 〜 金 10:00 - 19:00

IOS-02#11

実装

以下近日リリース予定のアプリ

mugride.niwaha.co

今週もいい進捗だったんですが、残件見誤り申請できず。

クリティカルなバグを改修しつつ、残りの機能片付けます。

今回TabBar/TabBarViewでちょっとつまづきました。

タブ移動を一時的にできなくするようにしたかったのですが、

TabBarViewはphysicsが指定できるので、NeverScrollableScrollPhysicsで解決できます。

...
      body: TabBarView(
          physics: this.is_disabled ? NeverScrollableScrollPhysics() : null,
...

問題はTabBarで、ソース見た限りはできなさそうでしたが、なにかアプローチはないものかとSOで質問。

頂いた回答を参考に対応できました。

stackoverflow.com

以下コピペしましたが、

フラグ見てaddListener内でindexを強制0にすることでできるようにしました。

this._controller = TabController(vsync: this, length: 3)
  ..animation
      .addListener(() {
    if (this._isDisabled) {
        this._controller.index = 0;
    }
  });

ただ負荷的な意味ではTabBarを拡張するのがベストですね。

今回は見送ります。

進捗 : ■■■■■■■□□□

長期タスク

NOTE

同人活動 #9

一言

#定時報告 2018/08 2週目

はじめに

もう木曜ですが、今週末もブログ更新予定です。

状況

仕事

月 おやすみ 火 〜 金 10:00 - 19:00

IOS-02#10

実装

進捗だいぶいいです。

うまくいけば今週、遅くとも来週にはアプリ出せそうです。

mugride.niwaha.co

ヨロシクオネガイシマス。

今回学んだのは、

  • 設計(UI含む)と設計超大切
  • 何をどのタイミングで出すか(リリースノート)

の2つですね。

前者は実装の設計としては技術的にできるかどうか、 UIとしては全体のバランスやテーマの設計。

前回のアプリはこの両方を彼方にぶん投げて作っていたので、かなりカオスでした。

後者は結局アプリは日々更新していくものなので、

最低限必要な機能でリリースして、その後付け足していくでいいと思います。

出さないと始まりませんし、作りきって出しても、その機能がカスタマーにとってどの程度必要なのかわからないので、もしかしたらいらないと言われるかもしれません。

カスタマーのレビューに期待して、改善しつつ、徐々に機能盛り込んで良くしていこうかと思います。

進捗 : ■■■■■■■□□□

長期タスク

NOTE

同人活動 #9

一言

#定時報告 2018/08 1週目

状況

仕事

月 〜 金 10:00 - 19:00

IOS-02#9

実装

DB周りすすめてます。

現状FlutterでのDBはFirebasesqlite(sqflite)の2択になります。

今回はsqfliteです。

github.com

少々面倒ですが、今後別アプリに展開できるようにmigration機能repositoryアーキテクチャの導入を行っています。

こちらも前回のcamera同様不便さはあります(dartによるものかもしれませんが)。

  • 型変換

DateTIme型でエラーでるので、insert,updateはDateTime型をStringに変換する必要があります。

sqflite/sqflite.dart at master · tekartik/sqflite · GitHub

  • Map -> Model

これはライブラリで解決できるのかわからないのですが、クエリの結果はMap<String, dynamic>で返されるのでrepositoryでModelに変換するのですが、マッピングを定義しないといけないです。

    name = map.containsKey('name') ? result['name'] : null;
    icon = map.containsKey('icon') ? result['icon'] : null;

みたいに書いてます。

sqliteは日付をTEXTで持たせるので、日付の変換もここで行います。

ほか細々とありますが、割愛。

ただ、queryメソッドは便利です。SQL平文で書かなくていいので、大体はかなりスッキリかけます。

sqflite/sqflite.dart at master · tekartik/sqflite · GitHub

進捗 : ■■■■■□□□□□

長期タスク

NOTE

同人活動 #9

一言