memoirの開発ログ
後々振り返れるように、こちらのスクラップにまとめていく
GitHub
開発の動機
私の家庭では週1回振り返りの時間を設けていて、その時間では互いに今週あったことを会話で共有して議事録に残すことを習慣としています。 このプロジェクトでは、それらをより円滑に進められる仕組みを作りたいと思いアプリ開発を行っています。
振り返りで実際にやっていること
体制
- 頻度: 週1回(大体、日 or 月曜日に行っている )
- 参加者: 家族
やっていること
上記の時間帯になると、集まって同じテーブルにつき、お互いの今週の出来事について共有する。
喋った内容は以下のようにGoogle Keepにメモしておきます。
その後、家庭内での共有slackがあるので、そこに投稿して共有しています。
現状の問題点
現状の運用では以下の問題点がある
- 振り返りの時に、今週の出来事を思い出せない
- 振り返りで話した内容をメモ的に記載しているだけなので情報の抜けが発生する
- 季節終わりや年終わりなど、まとまった単位での振り返りをしたい時にテキスト情報のみだと情報のピックアップがしづらい(例えば良かった出来事のみピックアップしたいなど)
- 振り返りを開催する時間帯がブレる
上記の問題点を改善できるアプリ開発をしていく予定
開発の進め方
どんな画面が必要かのアイディアを出す
まず、自分の方で手書きでラフを作成
↑のラフからある程度形にするためにFigmaで仮デザインを作成
それと仮のデザインガイドラインを作成して、ここまでをまずデザイナーに共有しました。
正式なデザインに仕上げていく
上記のデザインを元にデザイナーの方で正式なデザインガイドラインを作成
配色の組み合わせは以下のサイトを使用して決めた。
上記のデザインガイドラインを元に正式な画面をデザインを作成して頂いた。
メイン画面は以下の通りになりました。
アイコンについてはデザイナーと相談してIcons8で統一することにしました。 (ライセンス的にはリンクを設置すればOKでした)
Figmaにテキストとカラーを設定
作業の最適化のため、デザインガイドラインで決めた内容をFigmaに予め登録しておく。
上記を元にデザインガイドラインの内容を全てFigmaのテキストとカラーの設定に追加します。
Figmaのカラーとテキストは全て上記の設定から指定するようにすることで、デザインがガイドラインから外れたデザインにならないようにしています。
実際にコーディング
上記まで完了したら、いよいよコーディング開始です。
現状は情報はモックで画面のみ作成中です。(ある程度進んだらbackend開発に取り掛かる予定)
memoirメモ
こんにちは、配偶者です。
そもそも「ふりかえり」は、なぜ必要だったのかをメモしておく。
わたしたちは付き合いが浅いまま生活を共にすることになった。
コミュニケーションを手探りしている途中だったので、共有一つするにもおっかなびっくりだった。
相手に嫌われるんじゃないか、非難されるんじゃないか。
でも正直に腹を割って話せる関係でありたかったし、よくないことはよくないと言い合いえるフェアな立場でありたかった。
堅苦しい空気ではなく、お茶やおやつをしながら、
DONEしたタスクを共有し、困ったことがあれば相談できる場を作ろうと思った。
それが週に一度の「ふりかえり」の始まりだった。
共有することは、主に4つに分類される。
- 今週DONEしたタスク(出来事)
- 今現在困っていること(問題の提起)
- 困ったことを解決するためのタスク作成(解決策の模索と実行)
- 未来の予定の確認(リマインド)
これらを積み重ねて3年経った今、わたしたちの議事録はタイムマシンのような輝きを放っている。
漫然とふりかえってみれば、アルバムのように思い出が蘇る。
タスク名で検索をすれば、いつ何をスタートさせたのかログが追える。
二人の人間の簡易データーベースが出来上がった。
この体験は、生活の中で実にうまく機能した。
先週何やったっけ?と思えば議事録を追えばいいし、忘れていたタスクがあればお互いに補い合った。相手の持っているタスクの総量がわかったので、家事も分担できた。
些細なことから大きなことまで分け合った。
時々感情的になることもあったが、DONEしたタスクという揺るがない事実が理論を補強した。
秘密にしておきたいことは秘密のままでいい。
でも、公開できる情報は多い方が相手への理解に繋がる。
「ふりかえり」とは、過去の確認であり、近い未来の把握だと思う。
何よりも「人間が何を思い何を成したか」の記録だ。
この体験を、memoirでより手軽に、かんたんに再現できればいいなと思って開発を進めている。
開発の報告
期間: 2021年3月2日-3月16日
実装内容
backendの作成
memoir-backendのリポジトリを作成してbackendを実装
使用技術
- Go言語
- GAE
- GraphQL
- 実装はgqlgenを使用
- Cloud Firestore
usersとitemsのGraphQLの実装
以下のGraphQLを作成
- Query
- user ユーザーを取得する
- item アイテムを取得する
- itemsByDate アイテムを日付で取得する
- Mutation
- createUser ユーザーを作成する
- createItem アイテムを作成する
graphql-code-generatorとapolloを実装
PR: graphql-code-generator + apolloを実装
- graphql-code-generatorを導入
- apolloを導入
itemsの作成/保存までAPIを接続
開発の報告
期間: 2021年3月17日-3月28日
実装内容
アイテムのCRUDを実装
PR:
- backend
- frontend
Androidでの動作チェック & 不具合修正
以下、修正内容
■モーダルサイズが小さい
AndroidとiOSだとディスプレイから%の指定が異なるので修正
■アイテム詳細の外側をタッチしても削除が起動する(不具合修正)
■ フォントの変更が効いていない
AndroidでstyleのfontWeightでboldを指定すると、フォントが適用されてなかったので修正
■ アイコンの選択の背景が丸になっていない
AndroidだとbackgroundColorとborderRadiusを別のstyleに分けると反映されないみたいなので、同じstyleで宣言するように修正
■ 日付変更の初期位置のスクロールがスムーズに動いていない
初期表示に日付選択位置をスクロールさせていたが、Androidでスムーズに動作していなかったので、
配列の開始位置を今日にしてloopさせるように修正
次の開発予定
今回の開発でアイテムCRUD部分とログイン前の動作が行えるようになり、データの登録は行える状態になったので、一旦実際にアプリをテスト運用をしていこうと思います。
なので、テスト運用中は機能開発では無く、以下の運用に必要な機能や、自動化、テストコードなど中心に対応していく予定です。
アプリ
- Jestでテストコード実装
- GitHub Actionでtest、tsc実装
- GitHub Actionsでexpo publishを実装
- Codecovでカバレッジを出力するように実装
- @graphql-eslint/eslint-pluginを導入
backend
デザイン修正
実働するモックアップがさわれたので、実際に使ってみた。
入力画面を改善するために、以下のデザイン修正を行った。
大きな変更はカテゴリの再編成と、
今まで意味を持っていなかった見出しの色に役割を持たせたこと。
- 赤: 生活 : 生活全般、飲食、健康
- 青: 趣味・娯楽: 趣味関連、外出、鑑賞
- 黄色: 仕事: お金、買った、特別なこと
アイコンの色も上記のカラーに合わせて統一感を出した。
開発の報告
期間: 2021年3月29日-4月10日
この期間では機能の開発は行わず、以下の対応を行った。
- テストコード作成やデプロイの自動化などのシステム土台の強化
- 実際にテスト稼働してみてのフィードバックを対応
実装内容
moqを使用してGo言語のテストコードを作成
PR: https://github.com/wheatandcat/memoir-backend/pull/14
GitHub ActionsでGAEにデプロイできるようにする
PR: https://github.com/wheatandcat/memoir-backend/pull/16
- GitHub ActionsでGAEにデプロイできるように修正
Jestでテストコード実装
PR: https://github.com/wheatandcat/memoir/pull/43
GitHub Actionsでexpo publishを実装
PR: https://github.com/wheatandcat/memoir/pull/35
- expo-github-actionを使用して実装
- mainブランチがpushされる毎にexpoアプリがデプロイされるように実装
アイコンの画像を最新のデザインに変更
PR: https://github.com/wheatandcat/memoir/pull/44
- アイコンの画像を最新のデザインに変更
以下はアプリを実際に使用して挙がったフィードバックからの対応
ホーム画面でスワイプすると前後の日付に移動
PR: https://github.com/wheatandcat/memoir/pull/36
- 前後の日付移動がスワイプでき出来るように修正
- スワイプにはreact-native-swipe-gesturesを使用して実装
キーボード開いている状態でアイコンにタッチできるように修正
PR: https://github.com/wheatandcat/memoir/pull/37
- キーボード開いていてもアイコンが選べるように修正
-
ScrollViewに
keyboardShouldPersistTaps="always"
を設定すれば背面をタッチしてもキーボードが閉じなくなる
ホーム画面のスワイプとカルーセルの動作をチューニング
PR: https://github.com/wheatandcat/memoir/pull/39
- Andoridだとスワイプの移動や日付選択のカルーセルの反応が遅いというフィードバックを受けたので対応
- 修正的には以下を対応
-
react-native-snap-carouselに
removeClippedSubviews
を追加 -
ScrollViewに
rremoveClippedSubviews
を追加
-
react-native-snap-carouselに
開発の報告
期間: 2021年4月11日-4月25日
実装内容
Expo sdk 41にバージョンアップ
PR: https://github.com/wheatandcat/memoir/pull/51/files
- Expo SDK 41がリリースされたのでバージョンアップ
- 大きな影響は無かったので、
expo upgrade
コマンド実行のみで完了
期間を指定してタスクを取得するGraphQLを実装
PR:
- https://github.com/wheatandcat/memoir-backend/pull/19
- https://github.com/wheatandcat/memoir-backend/pull/20 (ページング処理に不具合があったので修正)
memoirするの画面を実装
PR: https://github.com/wheatandcat/memoir/pull/49
- memoirするの画面を実装
- 1週間前〜今日までアイテムを取得
- インフィニティスクロールでページングを実装
タスクが無い時の表示を追加
- タスクが無い時の表示を追加
- アイコンはランダムで表示
開発の報告
期間: 2021年4月26日-5月9日
実装内容
Firebaseログインを実装
PR: https://github.com/wheatandcat/memoir/pull/57
- ソーシャルログインを実装
- 保守にコストがかかるので実装は最小限でAndroidはGoogle ログイン、iOSは Sign in with Appleのみサポート
- 詳しい実装は以下の記事で記載
ログイン後のアカウント作成API + Firebase Auth実装
PR: https://github.com/wheatandcat/memoir-backend/pull/23
- 認証ユーザーを作成する: createAuthUser を作成
- Firebase AuthenticationのMiddlewareを実装
- 以下のエラーハンドリングを実装
- 認証済みの状態で、認証前の認証方法をした場合は エラー
- 存在しないトークンで認証した場合はエラー
- 正しいトークンの場合は以下のようにデータ取得が可能
memoirするを最新のデザインに更新する
PR: https://github.com/wheatandcat/memoir/pull/59
- memoirするの画面を新デザインで更新
hygenでコンポーネント作成をテンプレート化
PR: https://github.com/wheatandcat/memoir/pull/61
- hygen をコンポーネント作成をテンプレート化
- 以下のコマンドを実装
## 新規画面作成
$ yarn hygen page new
## コンポーネント作成
$ yarn hygen component new
## テストコード追加
$ yarn hygen test new
開発の報告
期間: 2021年5月10日-5月25日
実装内容
【backend】user.nameを更新/取得するGraphQLを作成
PR: https://github.com/wheatandcat/memoir-backend/pull/25
- updateUser: ユーザー情報を更新するGraphQLを実装
表示名の表示/変更を実装
PR: https://github.com/wheatandcat/memoir/pull/66
- マイページに表示名が表示
- プロフィール編集から表示名を変更できる
【backend】user.imageの更新/取得追加
PR: https://github.com/wheatandcat/memoir-backend/pull/27
- プロフィール画像の保存でusers.imageを追加
プロフィール画像アップロード機能実装
PR: https://github.com/wheatandcat/memoir/pull/68
- プロフィール変更画面から画像アップロード機能を実装
- 画像選択/カメラはexpo-image-pickerを使用
- 画像のresizeはexpo-image-manipulatorを使用
- アップロードはFirebase Storageを使用
- 詳しくは、こちらで解説
開発の報告
期間: 2021年5月26日-6月15日
実装内容
招待コードの更新/取得のAPIを実装
PR: https://github.com/wheatandcat/memoir-backend/pull/30
- 以下のQueryを追加
- invite : 招待コードを取得する
- inviteByCode : 招待コードからユーザーを取得する
- 以下のMutationを追加
- createInvite : 招待コード作成する
- updateInvite : 招待コード更新する
招待コードの表示/更新のUIを実装
PR: https://github.com/wheatandcat/memoir/pull/74
- 招待コードの表示 作成 / 更新を実装
- 招待コードの入力UI実装
共有の申請をリクエスト/取得のAPIを実装
PR: https://github.com/wheatandcat/memoir-backend/pull/34
- 以下のQueryを追加
- relationshipRequests: 招待の申請リクエストを取得する
- 以下のMutationを追加
- newRelationshipRequest: 招待をリクエストする
招待リクエストの送信 / 通知 / 一覧表示のUIを実装
PR: https://github.com/wheatandcat/memoir/pull/78
- 招待を送信 → 受信 → 一覧表示実装
共有の承認/拒否 + 共有メンバーの表示/解除のAPIを実装
PR: https://github.com/wheatandcat/memoir-backend/pull/40
- 以下のQueryを追加
- relationships : 共有ユーザーを取得する
- 以下のMutationを追加
- acceptRelationshipRequest : 招待リクエストを承諾する
- ngRelationshipRequest : 招待リクエストを拒否する
- deleteRelationship : 共有メンバーを解除する
共有の承認/拒否 + 共有メンバーの表示/解除のUIを実装
PR: https://github.com/wheatandcat/memoir/pull/80
- 共有の承認/拒否 + 共有メンバーの表示/解除を実装
開発の報告
期間: 2021年6月16日-7月3日
実装内容
memoirするにユーザー情報の表示を追加
PR: https://github.com/wheatandcat/memoir/pull/81
- memoirするの画面にユーザー情報(アイコンと表示名)を追加
共有申請前の確認、共有メンバーになりましたの画面を作成
PR: https://github.com/wheatandcat/memoir/pull/83
- 共有申請前の確認の表示を追加
- 共有メンバーになりましたの表示を追加
【backend】: Push通知のトークン保存を実装
PR: https://github.com/wheatandcat/memoir-backend/pull/51
以下のGraphQL
- Mutation
- createPushToken: Push通知のトークンを作成する
【アプリ】: Push通知のトークン保存を実装
PR: https://github.com/wheatandcat/memoir/pull/85
Push通知を実装
PR:
- 【backend】https://github.com/wheatandcat/memoir-backend/pull/53/files
- 【notification】https://github.com/wheatandcat/memoir-notification
- GAEからCloud Tasksにタスクを作成
- Cloud TasksからはCloud Functionを実行してPush通リを送信(コード)
- Push通知はexpo-notificationsを使用
- 詳細は、こちらの記事を参照
開発の報告
期間: 2021年7月4日-7月17日
実装内容
振り返り日時の設定の機能を追加
PR: https://github.com/wheatandcat/memoir/pull/89
- 振り返り日時の設定画面を追加
- expo-notificationsでローカルPush通知を実装
- 詳しい実装は、こちらで記事にしました
Expo SDK 42アップデート
PR: https://github.com/wheatandcat/memoir/pull/93
- Expo SDK 42にアップデート
Deep Linkで画面遷移できるように修正
PR: https://github.com/wheatandcat/memoir/issues/90
- 以下にドキュメントに沿ってDeep Linkを実装
- Push通知のパラメータから画面遷移できるように修正
- 詳しい実装は、こちらで記事にしました
使われていないexportを検知
PR: https://github.com/wheatandcat/memoir/pull/96
- ts-unused-exportsを使用して使われていないexportをチェックするように修正
- GitHub Actions上でチェックして使用していないexportが存在した場合はエラーにするように変更
- 詳しい実装は、こちらで記事にしました
開発の報告
期間: 2021年7月18日-8月1日
実装内容
Top画面の実装
PR: https://github.com/wheatandcat/memoir/pull/97
- ログイン前の画面を実装
- 以下の3パターンの遷移を実装
- ログインせずにユーザー作成
- ログインしてユーザー作成
- ログインのみ
【backend】ExistAuthUserを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/59
- QueryにExistAuthUser(認証済みのユーザーが存在する判定)を実装
- Top画面から認証済みユーザー作成時に、既にユーザーデータが存在する場合はユーザー作成をしない動作の実装に使用
【backend】CreateAuthUserにIsNewUserフラグを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/60
- Top画面でSMSログインから、そのままアプリ開始を実装するためにAPIを改修
- MutationのCreateAuthUser(認証済みユーザー作成)のvariablesにIsNewUserを追加
- IsNewUser = trueの場合は、authUserの作成と共に通常のユーザーデータも作成する
チュートリアル画面の実装
PR: https://github.com/wheatandcat/memoir/pull/98
- チュートリアル画面を実装
- チュートリアルのスクロールは以下の記事を参考に作成
- 詳細の実装は、こちらで記事にしました
ささやかなデザインの修正。
「memoirする」出力結果画面で、ユーザーごとの表示/非表示ができると
とても便利だと思ったので作りました。
開発の報告
期間: 2021年8月2日-8月19日
実装内容
memoirを共有する機能を実装
PR: https://github.com/wheatandcat/memoir/pull/102
- memoirするの共有機能を実装
- 画像はreact-native-view-shotを使用
- 画像シェアはexpo-sharingを使用
- 詳細の実装は、こちらで記事にしました
Visual Regression Testingを実装
開発の報告
期間: 2021年8月20日-9月7日
実装内容
ログインしていない時の挙動を修正 & バグ修正
PR: https://github.com/wheatandcat/memoir/pull/112
- ログインしていない時でもmemoirするの画面を開けるように修正
- ログインしていない時もプロフィール編集出来るように修正
メンテナンス機能を実装
PR: https://github.com/wheatandcat/memoir/pull/113
- メンテナンス機能を実装
- Firestoreの設定でメンテナンスをON/OFFできる
- Firebase Remote Config も検討したが、現状Expoでは使用できなかったのでFirestoreを使用
強制アップデート機能を実装
PR: https://github.com/wheatandcat/memoir/pull/114
- 強制アップデート機能を実装
- 指定バージョン以下のアプリを使用している場合にストアに誘導する
memoirするの画面にフィルター機能を追加
PR: https://github.com/wheatandcat/memoir/pull/116
- memoirする画面にユーザーのフィルター機能を追加
- 共有する機能にもユーザーのフィルターを反映する機能を追加
開発の報告
期間: 2021年9月8日-9月25日
実装内容
【アプリ】Sentry導入
PR: https://github.com/wheatandcat/memoir/pull/119
- Sentryを導入
- Breadcrumbsに画面情報を保持
- setUserでユーザーIDを設定
- GraphQLのエラーハンドリングは、こちらを参考に実装
【backend】Sentry導入
PR1: https://github.com/wheatandcat/memoir-backend/pull/69
PR2: https://github.com/wheatandcat/memoir-backend/pull/71
- sentry-goを導入
- SetUserを設定
- Breadcrumbsを設定
- Goでスタックトレースを使いたかったのでpkg/errors導入
- 詳しい内容は、こちらで記事にしています
React Navigation v6にバージョンアップ
開発の報告
期間: 2021年9月26日-10月16日
実装内容
【notification】GitHub Actionsからreview/production環境デプロイできるようにする
PR: https://github.com/wheatandcat/memoir-notification/pull/3
- Push通知用のCloud Functionsのデプロイを自動化
- mainブランチにマージされた時にGitHub Actionsからreview環境にデプロイが実行される
- tagをpushするとGitHub Actionsからproduction環境にデプロイされる
【backend】GitHub Actionsからreview/production環境デプロイできるようにする
PR: https://github.com/wheatandcat/memoir-notification/pull/3
- Push通知用のCloud Functionsのデプロイを自動化
- mainブランチにマージされた時にGitHub Actionsからreview環境にデプロイが実行される
- tagをpushするとGitHub Actionsからproduction環境にデプロイされる
- 環境毎の設定はGitHubのSecretsに設定して切り替えている
【アプリ】production環境用のアプリを作成する
PR: https://github.com/wheatandcat/memoir/pull/126
- 本番アプリのビルド用のコマンドを追加
-
$ yarn ios:build $ yarn android:build
-
- 本番用の設定を追加
- expo buildのコマンドにrelease-channelを追加
- 設定しないとビルド時に配信中のreview環境のビルドが上書きされてしまう
- 本番用のfirebaseの設定を追加
- GitHub Actionsでビルドも考えたが、余りメリットが無さそうだったので一旦先送りした
- freeのプランだとexpoのbuildは同時に実行できないので
- 実装自体は以下で出来そう
ロゴデザインにまつわるいくつかのこと
かわいく人懐っこいアプリになってきたので、
ロゴとアイコンもその雰囲気に寄せていきます。
こちらが最初に出した案。
丸みのあるフォントを選んだものの、
いまいちオリジナリティに欠けるという話になりました。
そこで、mの字を少しアレンジ。
より丸く、スムーズに。
mの文字をアイコンにするのが良かろう、ということでアプリアイコンも用意。
次はLPに取り掛かります。
LPに関するいくつかのこと
今日はmemoirのLPのラフを作っていきます。
どんなことを考えてデザインと設計をするかの思考メモです。
デザインをする前に
ランディングページを作る前に、いくつか準備しておくべきことがあります。
事前調査として、dribbleで検索してイメージを膨らませることです。
マークアップしてもらうとき、こんな動きにしたいと参考事例があった方が断然わかりやすいので、事例を示すことは本当に大事。
最近のデザインは
- 商品の写真がイケてる
- フラットデザインのグラフィック
- 動画、gifアニメで何かしらの動きがある
など視覚的な要素で攻める傾向にあるようです。
確かにちょっと流行は取り入れてみたい。
加えて、app関連は下記のようなレイアウトが多いな〜という印象でした。

かなりシンプルなので、少しでもミスをすると世界観が台無しになってしまう。
トレンドを押さえた上で、memoirのLPについて考えていきます!
memoirの雰囲気を固める
わたしたちはmemoirのことを「毎日見ていても飽きない、人懐っこいapp」として育ててきました。
なので、堅苦しい話はなし。角のない、遊びがあるデザインを取り入れたいと思います。
フラットデザインのイラストにトライしてみましょう!(詳細は次回)
なお、カラー設計は既に完了しているので踏襲します。
一番伝えたいことは何か
ここはキャッチコピーにもつながる大切な部分、コンセプトです。
memoirがユーザーにできること、それは「日常を記録して振り返りを促す」こと。
よりわかりやすい表現はないか?何度も考えて文言を練っていきます。
これを伝えたい!と思ったら、まずポストイットに書き出して壁にペタペタ貼っていきます。
ある程度アイデアが出尽くしたら、今度はポストイットを整理・精査していきます。
その中から推してるmemoirの機能を3つ選びました。
・リマインダー機能
・ユーザー共有
・画像書き出し
(もしかしたら変更するかも!)
できるだけわかりやすい文章で内容を書き添えます。
キャッチコピーを考えてみる
なんでもない日常、蓄積していく時間、そういうものを可視化したくてmemoirを作り始めました。
なのでユーザーには思い出のアルバムを毎日作っていくような体験をしてほしいです。
「毎日を特別なものに」
「記録して見直す」
「あたりまえを、見直そう」
「日々を集めて、ふりかえる」
さらにメインコンセプトを英語にして考えてみる。
Write everything, and review it
が適切か。
これを日本語にすると
「なんでも書いて、見直そう」が近いかな。
まだまだ悩ましいけれど、
「日々を集めて、ふりかえる」一旦これを仮キャッチコピーとします。
内容が固まってきたところでざっくりラフを作ってみる。
あらっ、長すぎず短すぎず、いいんじゃないでしょうか。
次回はイメージを決定づける、メインビジュアルに挑戦していきます。
メインビジュアルを考える
前回はLPのラフを作りました。
今日はメインビジュアルについて考えていきます。
本来であればappのスクリーンショットで攻めるのがLPの定石なのですが、
生まれたばかりのmemoirです、せっかくなので雰囲気を大切にしていきましょう。
あらためて、memoirを考える
第一印象ってとても大事です。
このページに飛んできてくれた人に、どんな印象を抱いてほしいかを考えます。
それから、memoirのデザインを振り返って…。
線が少なくて、シンプル。でも美しいものがいいな…。
欲は尽きません。
フラットでシンプル、柔らかい印象を受けるイラストをいくつか探してみます。

線を生かすか、フラットに塗りだけで表現するか悩みます。
どんなイラスト素材が必要か考える
イラストを描くのは結構大変です。
やっぱり描き直し!こっちにも必要だった!
なんてことにならないように、どんなイラストが必要なのか考えます。
うんうん悩みながらLPのラフに、段落ごとに必要そうなビジュアル素材を当てはめていきます。
あれっ!?意外と数がないぞ!?
時には紙とえんぴつを
何かのデザインをするとき、わたしは紙と鉛筆をよく使います。
デジタルは一発で正解を出せないとモヤモヤしますが、
アナログはいろんな寄り道をして正解に辿り着く感じがします。
手をたくさん動かすからでしょうか?ふしぎ。
描いてるうちにだんだん思考が整理されていって、
より具体的なイメージにつながります。
こんなことはどうかな?とチャレンジをしてみたり、
新たなチャレンジの可能性を見つけたり、

たくさん描くうちに、しっくりくるイメージが掴めます。

この小さな端っこのらくがきが良さそうです!
インターネットの画像検索で、
・卓上カレンダー
・木製脚立
などの参考画像を用意します。
カレンダー部分と人、道具部分を分けて描きます。
それをAdobe illustratorに持っていきまして

ざっくりトレースしつつ、パーツを作っていきます。
合体させながら調整します。
メインビジュアルのイメージが固まりました!
恐ろしいことにここまでは下書きです。
次回はブラッシュアップとカラー調整をしていきます。
続・メインビジュアルを考える
あれからこねくりまわして、ここまでやってきました。
自画自賛ですが、なかなかかわいいのではないでしょうか!

しかしいざFigmaにはめこんでみると…。

あれ〜!?パッとしない!!
ちょっと埋もれてしまいました。
観察してわかった改善点は…
・肌の色と背景が近すぎる
・カレンダーの台紙と黄色の明度が近すぎる
・金属部分にメリハリがないのでなんだかわからない
・影の色が浮いちゃう
改善しました

先ほど挙げた問題点を全部見直してみました。
#思い切ってキャッチコピーも変える
メインビジュアルができて、伝えたいことが明確になりました。
どんどんアイデアが湧いてきます。
もっとmemoirの目的をはっきりと、直感的に伝えましょう。

バッチリです!
イラストのイメージ、レギュレーションが定まったので、
あとはこの作業を繰り返して他の部分のイラストも作っていきます。
開発の報告
期間: 2021年10月17日-11月6日
実装内容
【backend】moqの作成をgo generateに変更する
PR: https://github.com/wheatandcat/memoir-backend/pull/76
- moq の書き方go generateから生成する用に修正
- コマンド系をMakefileにまとめた
【backend】air導入
PR①: https://github.com/wheatandcat/memoir-backend/pull/78
PR②: https://github.com/wheatandcat/memoir-backend/pull/79
【backend】ローカル開発用にスタックトレースを出力する
PR①: https://github.com/wheatandcat/memoir-backend/pull/80
PR②: https://github.com/wheatandcat/memoir-backend/pull/81
- ローカル開発時にエラーになった場合にスタックトレースを表示
- 必要なスタックトレース情報以外はフィルタリングする
■ stack trace:
github.com/wheatandcat/memoir-backend/repository.(*ItemRepository).GetItemUserMultipleInPeriod
/Users/iinoyouhei/go/src/github.com/wheatandcat/memoir-backend/repository/item.go:171
github.com/wheatandcat/memoir-backend/graph.(*Graph).GetItemsInPeriod
/Users/iinoyouhei/go/src/github.com/wheatandcat/memoir-backend/graph/item.go:142
github.com/wheatandcat/memoir-backend/graph.(*queryResolver).ItemsInPeriod
/Users/iinoyouhei/go/src/github.com/wheatandcat/memoir-backend/graph/schema.resolvers.go:263
- 詳しい修正内容は以下で記事にしました
octocov導入
PR: https://github.com/wheatandcat/memoir-backend/pull/84
- octocovを導入
- PRにテストカバレッジを表示
scenarigo導入
PR: https://github.com/wheatandcat/memoir-backend/pull/87
- E2Eテストツールとしてscenarigoを実装
- ローカルにFirestoreのエミュレータを立てて、接続して実行
- ユーザー作成/取得、アイテム作成/取得のE2Eを実装
- GitHub ActionsでE2Eを実行できるように実装
- 詳しい修正内容は以下で記事にしました
アプリをアイコン& タイトルロゴの修正
PR1: https://github.com/wheatandcat/memoir/pull/128
PR2: https://github.com/wheatandcat/memoir/pull/133
- アプリアイコン、通知アイコンを設定
- タイトルログの新デザインに置き換え
Expo SDK 43にアップデート
PR: https://github.com/wheatandcat/memoir/pull/132
- Expo SDK 43にバージョンアップ
iOSで共有画像を作成時に真っ白な画像になってしまう不具合を修正
PR: https://github.com/wheatandcat/memoir/pull/134
- 不具合の原因はiOSの仕様 + react-native-view-shotの作りの関係でで8200pxを超えるスクリーンショットを取ると真っ白な画像になってしまう
- なので、iOSのみスクリーンショットを分割して作成、以下のAPIで画像を結合してダウンロードして共有する実装に変更
開発の報告
期間: 2021年11月7日-12月2日
実装内容
LPサイトの作成
GitHub: https://github.com/wheatandcat/memoir-lp
- Next.js + Tailwind CSSで作成
- デプロイはVercelを使用
- URL: https://memoir-lp.vercel.app/
memoirのスライドを作成
GitHub: https://github.com/wheatandcat/memoir-slide-01
- 登壇する機会があったのでスライド作成
- Slidevで作成
- URL: https://vigilant-hamilton-f30a56.netlify.app/1
- Speaker Deck: https://speakerdeck.com/wheatandcat/zhen-rifan-riapuriwozuo-tutemitahua
- 詳しい修正内容は以下で記事にしました
開発の報告
期間: 2021年12月3日-1月5日
実装内容
開発ドキュメントを作成
リポジトリ: https://github.com/wheatandcat/memoir-handbook/pulls?q=is%3Apr+is%3Aclosed
開発の報告
期間: 2022年1月6日-1月24日
実装内容
go 1.16にアップデート
PR: https://github.com/wheatandcat/memoir-backend/pull/92
- GAE/Goが1.16までサポートしたのでアップデート
golangci-lintを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/95
- golangci-lintを導入
- gosec等でエラーになっている箇所を修正
- GitHub ActionsでPRをチェックするように修正
達成したタスクを検索する機能のGraphQLを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/96
- 達成したタスクを検索する機能の機能を追加
- 以下のQueryのitemsInPeriodに以下を検索できる機能を追加
- like
- dislike
- categoryID
Expo SDK 44にバージョンアップ
PR: https://github.com/wheatandcat/memoir/pull/142
- Expo SDK 44にバージョンアップ
- バージョンアップ情報は以下を参照
開発の報告
期間: 2021年1月24日-2月11日
実装内容
達成したタスクを検索する機能のドキュメント追加
PR: https://github.com/wheatandcat/memoir-handbook/issues/18
- 達成したタスクを検索する機能のドキュメントを追加
達成したタスクを検索する機能
PR: https://github.com/wheatandcat/memoir/issues/141
- 達成したタスクを検索する機能のアプリ実装
Handbookに編集履歴画面を作成
PR: https://github.com/wheatandcat/memoir-handbook/issues/17
- 編集履歴画面を追加
- 編集履歴はzxを使用してgit logから自動生成するように実装
- 詳しい修正内容は以下で記事にしました
Handbookに開発手順のガイド & ポリシー画面を追加
PR: https://github.com/wheatandcat/memoir-handbook/pull/28
- 以下のページを追加
- 詳しい修正内容は以下で記事にしました
お問い合わせの送信内容をスプレットシートに保存
PR: https://github.com/wheatandcat/memoir-lp/pull/2
- LPサイトのお問い合わせのフォーム作成
- frontendのバリデーションはformikとyupを使用
- お問い合わせの内容はスプレットシートに書き込みAPIを作成
- APIはCloud Functionsで作成
- スプレットシートは google.golang.org/api/sheets/v4を使用
- APIのバリデーションはozzo-validationを使用
開発の報告
期間: 2022年1月25日-3月8日
実装内容
APIにバリデーションを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/99
- GraphQLのMutationにバリデーションが無かったので追加
- ozzo-validationを使用してmutationにバリデーションを追加
- 以下のように、gqlgenで自動生成されたtypeに、そのまま設定できるので相性良い感じ
エラーにextensionsを設定する
PR: https://github.com/wheatandcat/memoir-backend/pull/100
- GraphQLのエラーハンドリングでextensionsを追加
- エラーコードを返すように修正
【アプリ】GraphQLのextensionsでエラーハンドリングを追加
PR: https://github.com/wheatandcat/memoir/pull/148
- GraphQLは全てhttp statusが200で返ってきてしまい違いもメッセージのみなのでハンドリングし辛い
- なので、extensionsにエラーコードを追加してアプリ側のハンドリングできるように修正
LPのレイアウト修正
PR: https://github.com/wheatandcat/memoir-lp/pull/6
- 以下のサイトのレイアウトを修正
- 残りはイラスト追加のみの予定
LPに利用規約とプライバシー・ポリシー画面を追加
PR: https://github.com/wheatandcat/memoir-lp/pull/8
- LPに利用規約とプライバシー・ポリシー画面を追加
アプリに利用規約とプライバシー・ポリシー画面を追加
PR: https://github.com/wheatandcat/memoir/pull/150
- 利用規約とプライパシー・ポリシーの画面を追加
開発の報告
期間: 2022年3月9日-4月4日
実装内容
Androidの本番アプリでログインできない & 問い合わせ画面を作成
PR: https://github.com/wheatandcat/memoir/pull/152
以下の不具合を解消 & 機能追加
- Androidの本番アプリでログインできない
- app.jsonのschemeが一致しないとGoogleログインでアプリでcallbackを受け取れない
- https://github.com/expo/expo/issues/12044#issuecomment-1028055005
- ログイン→ログアウト→ログインに失敗する
- ログアウト時にapolloキャッシュを削除してなかったので、キャッシュが返ってきてハンドリングできていなかった
- 参考: 4. レスポンスとは関係ないデータを更新処理
- 問い合わせ画面を追加
- 本番アプリでユーザーIDを確認できる手段として問い合わせ画面を実装
Androidの本番アプリでカメラが使用できない & AndoridでPush通知を受け取れない
PR: https://github.com/wheatandcat/memoir/pull/156
- Androidの権限が足りなかったので追加
- AndroidのPush通知のapi-keyの設定が足りなかったので修正
Androidのフィードバック返信のstyleを修正
PR: https://github.com/wheatandcat/memoir/pull/159
- Androidのみ問い合わせ画面のstyleが崩れていたので修正
Androidの招待入力の表示を修正
PR: https://github.com/wheatandcat/memoir/pull/160
- 招待コード入力のAndroidのkeyboardTypeを変更
本番の共有機能の挙動を修正する
PR: https://github.com/wheatandcat/memoir/pull/163
- Androidのダークモードで共有画像の背景が黒色になっていたので修正
Firebaseの設定のデプロイをGitHub Actionsで行なう
PR: https://github.com/wheatandcat/memoir-tools/pull/12
- 本番環境でFirebaseの設定反映漏れが合ったのでGitHub Actionsでデプロイを自動化
- デプロイにはfirebase-action を使用
開発の報告
期間: 2022年4月5日-5月3日
実装内容
Storeのスクリーンショット作成
PR: https://github.com/wheatandcat/memoir/issues/166
ライセンス情報の表示を追加
PR: https://github.com/wheatandcat/memoir/pull/175
- 使用しているパッケージからライセンスを表示するように修正
本番アプリを検証する
PR: https://github.com/wheatandcat/memoir/issues/151
- リリースに向けて本番環境でシナリオテストを実施
- シナリオテストの管理にはQaseを使用
- 発覚した不具合をissueにして対応
- 詳しい内容は以下で記事にしました
TextInputでAutoFocusを設定しているのにキーボードが表示されていない
PR: https://github.com/wheatandcat/memoir/pull/167
- 原因的はreact-navigationの挙動
- 現状修正されてなかったので、setTimeoutでFocusさせるCustom Hooksを作成して解消
- 詳しい内容は以下で記事にしました
AuthのUserが重複して作成されてしまうので、Transactionを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/108
- ユーザー作成のAPIが重複実行されて不要なデータが作成される不具合の修正
- Firestoreのtransaction処理を追加して対応
ログイン時に表示名の設定が存在しない場合にデフォルトで設定
PR: https://github.com/wheatandcat/memoir-backend/pull/111
- 招待を実行時に表示名が存在しないとレイアウトがおかしくなる不具合の修正
- アカウント作成時にFirebaseのAuthに使用したメールアドレスの名前を自動で設定するように修正
その他の細かいバグを修正
■ PR
- https://github.com/wheatandcat/memoir/issues/171
- https://github.com/wheatandcat/memoir/issues/172
- https://github.com/wheatandcat/memoir/issues/183
- https://github.com/wheatandcat/memoir/issues/188
- https://github.com/wheatandcat/memoir/issues/190
- https://github.com/wheatandcat/memoir/issues/191
- https://github.com/wheatandcat/memoir/issues/192
開発の報告
期間: 2022年5月4日-5月15日
実装内容
アプリのリリース
- アプリのリリースに合わせて記事を投稿
- 2022年5月4日にリリース
トップ画面の文言を修正
PR: https://github.com/wheatandcat/memoir/pull/202
- フィードバックから対応
- トップ画面のtypoを修正
iPhoneSE2で共有ボタンが見切れる
PR: https://github.com/wheatandcat/memoir/pull/203
- フィードバックから対応
- iPhonSE2とiPhone8で共有ボタンのレイアウトが崩れているので修正
AndroidのPixel5aで閉じるボタンが見切れる
PR: https://github.com/wheatandcat/memoir/pull/205
- Pixel5aで閉じるボタンが見切れていたので修正
- ディスプレイのパンチホールの対応
アカウントを完全に削除する機能を実装
PR①: https://github.com/wheatandcat/memoir-backend/pull/113
PR②: https://github.com/wheatandcat/memoir/pull/208
YouTubeのvideoIDが不正です
- アカウント削除機能を実装
- 以下を削除
- Firestoreのデータ
- Firebase Authの情報
- プロフィール画像
今週のmemoirを確認するでページング後にユーザー選択をすると、日付がおかしくなる
PR: https://github.com/wheatandcat/memoir/pull/209
- フィードバックから対応
- 今週のmemoirを確認するでページング後にユーザー選択をすると、日付がおかしくなる不具合の修正
当日以外の日のタスクに存在しない場合の文言を修正
PR: https://github.com/wheatandcat/memoir/pull/210
- 当日以外の日のタスクに存在しない場合はこの日ののタスクは、まだありません
開発の報告
期間: 2022年5月16日-6月7日
実装内容
Expo SDK 45に更新 + EAS + Hermes
PR: https://github.com/wheatandcat/memoir/pull/212
- Expo SDK 45に更新
- EAS Buildを有効
- Hermesを有効
- EAS Build対応は以下で記事詳にしました
EAS Submitを実装
PR: https://github.com/wheatandcat/memoir/pull/215
- EAS Submitを実装
- 以下のコマンドでEAS Build→ストアアップロードまで行えるようになった
-
$ yarn store:upload
-
- 詳しい内容は以下で記事にしました
expo-app-loadingからexpo-splash-screenに移行
PR: https://github.com/wheatandcat/memoir/pull/217
- expo-app-loadingが非推奨になったのでexpo-splash-screenに移行
- コードは以下を参考に修正
Firebase SDK v9にバージョンアップ
PR: https://github.com/wheatandcat/memoir/pull/218
- Firebase SDK v9にバージョンアップ
- 以下のドキュメントを参考に移行
AndroidのGoogleアカウントのログインでループする
PR: https://github.com/wheatandcat/memoir/pull/219
- ログイン後から画面が切り替わるまでにアプリが操作可能なので途中で操作すると、うまくログインできなくなるので、ログイン操作後にログイン中の表示を追加
フィードバック送信後に送信成功の表示を追加 #220
PR: https://github.com/wheatandcat/memoir/pull/220
- フィードバック送信後の表示を追加
開発の報告
期間: 2022年6月8日-7月4日
実装内容
Cloud Runへ移行
PR: https://github.com/wheatandcat/memoir-backend/pull/117
- GAEからCloud Run
- Go 1.18にバージョンアップ
- GitHub ActionsとGCPをWorkload Identity 連携に変更
- 詳しい内容は以下で記事にしました
gcr-cleanerを導入
PR: https://github.com/wheatandcat/memoir-backend/pull/119
- gcr-cleanerを導入
- Clou Runの前リリース分のイメージを自動で削除するように修正
デバッグツール delveを試す
PR: https://github.com/wheatandcat/memoir-backend/pull/121
- デバッカーのdelveを導入
- 以下を参考にairにdelveの設定を追加
- VSCodeでデバック可能になった
- 詳しい内容は以下で記事にしました
zap導入 & 構造化したログを出力できるようにする
PR: https://github.com/wheatandcat/memoir-backend/pull/124
- Cloud Loggingで構造化したログを出力できるように修正
- zapを導入
- 以下を参考にRequestからTraceできるように修正
- https://dev.to/amammay/effective-go-on-cloud-run-structured-logging-56bd
- traceIDでRequestに紐づくログを取得可能に修正
- localとサーバー時でログの出力方式を変更できるように修正
開発の報告
期間: 2022年7月5日-8月7日
実装内容
gqlgen + opentelemetry-go + Cloud Traceでパフォーマンス測定
PR1: https://github.com/wheatandcat/memoir-backend/pull/127
PR2: https://github.com/wheatandcat/memoir-backend/pull/128
- Cloud Traceを導入してGraphQLのPerformanceを測れるように修正
- OpenTelemetryで実装
- トレースのハンドリングは以下を参考に実装
- 詳しい内容は以下で記事にしました
Cloud Profilerを試してみる
PR: https://github.com/wheatandcat/memoir-backend/pull/131
memoir v1.4.0のリリース
- リリース日: 2022年7月18日(月)
アプリのパフォーマンス測定を追加
PR: https://github.com/wheatandcat/memoir/pull/228
- React Profiler APIを使用してレンダリングの更新を取得して測定
- 想定よりも遅い場合は、警告を表示するように修正
日付のスクロールが削除される不具合の修正
PR: https://github.com/wheatandcat/memoir/pull/230
- react-native-snap-carouselのpropsを修正
日付のスワイプの挙動とアイテムをタッチ時のスクロールの挙動の修正
PR: https://github.com/wheatandcat/memoir/pull/232
- アイテム位置でスワイプできないのと、スワイプが誤反応するのを修正
- react-native-swipe-gesturesをやめて、react-native-gesture-handlerで実装
- 詳しい内容は以下で記事にしました
Expo SDK 46にバージョンアップ
PR: https://github.com/wheatandcat/memoir/pull/234
- Expo SDK 46にバージョンアップ
- React 18でFCから、childrenが削除されたので、コード側に追加
- その他、typeを修正
memoir v1.5.0のリリース
- リリース日: 2022年8月07日(日)
開発の報告
期間: 2022年8月8日-9月21日
実装内容
継続的にテストの情報を記録する
PR1: https://github.com/wheatandcat/memoir/pull/239
PR2: https://github.com/wheatandcat/memoir/pull/241
テストコードの追加
PR: https://github.com/wheatandcat/memoir/pull/244
- 継続的にカバレッジを計測できるようにしたので、テストコードを追加
typed-document-nodeへの移行
PR: typed-document-nodeへの移行
- mswでのインテグレーションテストの事前準備でtyped-documentを導入
mswを導入してGraphQLをモックしたテストコードを書く
PR1: https://github.com/wheatandcat/memoir/pull/249
PR2:https://github.com/wheatandcat/memoir/pull/251
- テストコードにmswを使用
- graphql-codegen-typescript-mock-dataを使用してmswのモックデータを生成
- テストコードにはtesting-library/react-nativeを使用
- mswでmutationのテストを追加
- アイテム更新のシナリオテストを実装
- 詳しい内容は以下で記事にしました
PR毎にCloud Runの環境を作れるようにする
PR: https://github.com/wheatandcat/memoir-backend/pull/134
- CIでブランチ毎にデプロイできるように修正
- PullRequestをCloseした際に、デプロイ側のCloud Runのtagも削除
- 詳しい内容は以下で記事にしました
backendも継続的にテストのカバレッジを記録するように修正
PR: https://github.com/wheatandcat/memoir-backend/pull/136
- backendカバレッジもダッシュボードに追加
zapのINFOログがstderrになっているので修正
PR: https://github.com/wheatandcat/memoir-backend/pull/138
- 以下の記事を参考に修正
- zapcore.NewTeeを使用して改修
ローカルPush通知が重複する不具合を解消
PR: https://github.com/wheatandcat/memoir/pull/254
- ローカルPush通知が重複する不具合を解消
- ホーム画面を開いた際に重複をチェック
- getAllScheduledNotificationsAsyncで既存のデータを取得して重複したデータが存在した場合は削除
- 設定時に重複しないように修正
- ホーム画面を開いた際に重複をチェック
日付を編集できるようにする
PR: https://github.com/wheatandcat/memoir/pull/256
- アイテムの日付を編集を出来るように修正
memoir v1.6.0のリリース
リリース日: 2022年9月21日(水)
開発の報告
期間: 2022年9月22日-1月23日
間で別のアプリ開発を行っていたので、久しぶりの更新
実装内容
Goテストを並列実行
PR: https://github.com/wheatandcat/memoir-backend/pull/144
- t.Parallelを追加してテストを並列実行するように修正
- 参考:
静的解析でCustomErrorでラップされていないで return を修正する
PR: https://github.com/wheatandcat/memoir-backend/pull/147
- 以下で作成した静的解析ツールを導入して修正
- CustomErrorでラップせずにエラーをreturnしている箇所を検出している箇所を修正
- 静的解析ツールの作成は以下で記事にしています
Go 1.19にバージョンアップ
PR: https://github.com/wheatandcat/memoir-backend/pull/149
- Go 1.19にバージョンアップ
goimportsにlocalのオプションを設定
PR: https://github.com/wheatandcat/memoir-backend/pull/151
- goimportsにlocalのオプションを設定
- 以下の記事を参考に各チェックを追加
-
make install
に初期インストールコマンドを追加
FirestoreのCountを使用してtotalCountを返す
PR: https://github.com/wheatandcat/memoir-backend/pull/153
- FirestoreにCountが実装されたので対応
- totalCountを返すように修正
バッチ書き込みをしている箇所のe2eのテストケースを追加
PR: https://github.com/wheatandcat/memoir-backend/pull/159
- バッチ書き込み→トランザクション更新に移行するので、その対処箇所のテストケースを追加
- 以下のe2eのテストケースを追加
- 招待から共有メンバーの認証まで
- アカウント削除
Firestore.BulkWriterからRunTransactionに移行
PR: https://github.com/wheatandcat/memoir-backend/pull/162
- 元々、1つの処理内でfirestoreに複数件の書き込みをしている箇所は、バッチ書き込みで同時に書き込み処理を実行していた
- Firestore SDKのv1.9.0からfirestore.WriteBatchが非推奨になって、firestore.BulkWriterへの移行が推奨になった
- ただ、firestore.BulkWriterは大量のドキュメントを書き込む処理に特化した機能になっており、現状の利用用途に合わなくなった
- なので、Firestore.BulkWriterからRunTransactionに移行
- 上記の詳しい移行の内容は以下で記事にしています
Expo SDK 47にアップデート
PR: https://github.com/wheatandcat/memoir/pull/269
- Expo SDK 47のバージョンアップ
今日に移動ボタンを追加
PR: https://github.com/wheatandcat/memoir/pull/271
- 今日 に移動するボタンを追加
アイテムを登録してからダイアログが閉じるまでに、登録ボタンを押すと二重にアイテムが登録されてしまう
PR: https://github.com/wheatandcat/memoir/pull/272
- バグ報告から対応
- アイテムの追加の終了のタイミングに合わせて、「入力」ボタンをすると重複して登録されてしまう不具合が合ったので修正
LPサイトにko-fiボタンを追加
PR: https://github.com/wheatandcat/memoir-lp/pull/21
- Ko-fiへのリンクを追加
- react-kofi-buttonを追加、SSRに対応していないので、その辺を諸々対応
- 詳しくは以下で記事にしいます