1週間でWebサービスを作るイベント web1week (2020-09-07 - 2020-09-13)
(https://crieit.net/boards/web1week-202009)
の作業進捗記録
朝スタート時点でこれだけはやっちゃいたい残タスクは
でした。
ここまで書いてこなったけど、今回、出だしてこんな文書を作ってやってました。
Achievementalist MVP、要件、 やるやらリスト
特に下のほうにある簡易的にユーザーストーリーベースのやるやらリストは本当に作っておいて良かった。普段の業務でももちろん有効ですが、特にハッカソンみたいな短期戦に強い。
まずはクエリに当たってみたらN+1でてるし、フィルタできてないしだった。
タグの実装にはRailsの有名タグライブラリの act as taggabled on を使っているけど、こいつを使うのは実は業務でRails使うようになる前以来で久しぶり。
実際みてみたらガツガツN+1でてる。昔はそういうことあまり良くわかってなかったし、それで使ってたの怖いな…
このへんは思ってたより時間かからなかった。
次に説明の追加。
実はここがいちばん大変だったかも。
機能追加ではないので正解が見えないし、割とアイデアと見せ方に寄る。たぶんすごくちゃんとするなら画像素材も必要。
とか思いながら考えながらなんとかまずこれでいいと思うレベルまで。
そして本番環境。
既にStaging環境は作ってたのでほぼ同じ感じなので動くところまでは あまり詰まらず。(それでも環境ごとの設定値でちょっとつまった)
一番大変だったのは独自ドメインまわり。
今回、サブドメインなしのルートドメインに割りあてる想定だったんだけど、
ということだった。全然知らなかったのでできる方法をあると思って探したので時間が溶けた。
ダメだと分かって CloudFlare にDNSをさせてCloudFlare 側にエイリアスを設定する方法でいこうと決意。
ただ、このDNSの変更とか設定ってどれぐらい時間かかるか読めない。たいていはそこまでかからないけれどそれでも最長で48時間とかかかる。そうなると間に合わない・・・
結果的には思いのほか早く適用されて現在
リアルライフ実績解除 / Achievementalist
で動作しています。良かった。
本当はタグのやつとかもやりたかったし、まだまだ細かいところも修正が必要だしですが、ひとまず使えるレベルになったのでなんとか時間内にリリースに漕ぎつけました。
ちゃんと終わらせたぞ!っという経験はデカいし気持ちいいですね。
提出記事はこちらに書いてあります。
経緯とか思いとかふりかえりしています。
本当はリリース後も今日中は修正、追加開発とかしようと思っていましたが、ここ自分の時間はほとんど開発につっこんで来たので、今日ぐらいはお酒のみながらゲームでもしようと思います。
リアルライフ実績解除 / Achievementalist
はこれからもサービス継続していく所存です。
チャオチャオ。
がんばって作業したらMVPに対してはなんとかなりそうな兆しが見えてきた。
Staging環境では良好に動作している。
もしこれを見た人で試してみたい方がいらっしゃったら是非試してフィードバックいただけますと嬉しいです
Achievementalist リアルライフ実績解除(staging)
(本番公開したので非公開にしました)
育児と家事の合間をぬってなんとか作業できてよかった。
今日やれたことは
OGPは予想どおりだったので特に問題なく。
画像アップロードも途中ちょっと詰まったものの思ったより簡単にいけた。今回はcloudinaryをチョイス。
スタイルの修正がやっぱり時間かかった。スクラッチで書いたほうが速いと思いつつ、融通の効かないtailwindのgridをあきらめ、flexで書きなおし。
残タスクはあるもののひとまずMVPと定めたあたりはなんとかなりそう。実はまだやれてない説明とか案内まわりがいちばんやっかいかもしれない。
最初にNotionでやること整理したのかなり良かった。
STGと同じだから大丈夫だと思うけど、本番もすんなり行くといいけどなあ。
昨日(day4)はまったくできなかった。
職場のハッカソンの作業最終日だったため遅くまで作業してて疲労困憊でした。
day5
とりあえず使いものになる最低限、俗に言うMVP目指してガリガリ。
Tailswindはここへ来て失敗だったかも、と思ってきた。
というのも細かい制御が効きにくい。
それは自分でスクラッチしろってことかもしれないけど、Tailwindと当たるのもイヤだし。
スタイルに凝りすぎるのは良くないけど、やはりファーストインプレッションはスタイルに左右されるので難しいところ。
とりあえずUXを損わない調整をしていきたい所存。
あとは実績がもてる情報を増やした。
ここでやっかいなのがラベル(タグ)。普通のユーザーはカンマ区切りとかしないし。JSで使いやすいように実装しなきゃいけない。
画像アップロードもどうするかちゃんとしないと。
機能的にはできるけどproduction環境でどこに置くかが問題だな。
ひとまず動くには動くので見てもらった。
やはり入力箇所は何入れたらいいかわからんですよね。
ここをツールチップなりチュートリアルなり案内しないと越えるべき壁が越えられない予感。
[やったこと]
一覧画面とトップ画面に最低限情報(やっつけ)
スクショはありません
最終日は説明と調整にかけるとしたら実質追加機能実装は明日が限界だな
今日はひとまずキモである、実績の解除(Todoで言うとDone)と
その際にTwitterにシェアできる機能の追加。
本当はモーダルで画面遷移なしの非同期的に処理したかったけど、工数かかるので今はやらない。時間が余れば。
こういうMVPにちゃんと絞って、やる/やらないの判断は大事。
初日にリスト作っておいて良かった。
実績解除時のとりあえず画像はダミーでもってきた。
画像アップロードに対応したいけど、アップロード先のストレージはまだ決まってない。間にあうか?
それと、最低限の情報(タイトルと説明)の登録だけだったので、その他の情報も追加できるように実装中。
思いのほかCSSの調整で時間つかった。細部はあとまわしにすればいいのについ凝ってしまうなあ。
逆にDatePickerとかTailwindにないからどうしようか。
日付入力の良い方法はなんかないものか。
とはいえ進捗悪くないです。
実は今、職場でも1週間使った社内ハッカソン中。
つまり仕事でもハッカソン、プライベートでもハッカソン状態。
今日はTailwind css導入して細かいところ修正しつつ、スタイル当ててた。
Tailswindはセマンティックじゃないので毛嫌いしていたけど、思想についてかかれたドキュメントを読んだら、あえてのアプローチだったので使ってみようと思った。
やってみたら、なるほど、これはいい。
僕みたいにスクラッチ派が楽につくっていくにはかなりいい。
なるのどこれがUtility first アプローチの世界かと合点がいったとともにすぐに使えた。
機能実装的にはまったく進んでないけど、いつかはスタイルやらなきゃいけないので、とりあえずいい感じになったのは楽しい。
進捗悪くないぞ。
[できたこと]
+ スタイルの整備
+ ログインまわりのハンドリングの整理
作るものは決めた(決めてた)し、
コンセプトやら、やるやらないを書き出してタスク整理。
お題に対してそれっぽい意味づけも完了。
お題「2」
- Play [to] change your real life, Change [to] play your real life.
- 人生をゲームをプレイするみたいに変えよう、ゲームをプレイするように人生を変えよう。
ということで
実績を設定して解除してTwitterでシェアするやつを作ります。
環境構築まわりも素振りしてたのでガシガシ作業。
と、思いきや、やはり認証、環境構築まわりで詰まる。
結果としては設定を一つ反映しわすれて、気づかずうんうん唸ってた。
まあそれもできたので、とりあえずStaging環境はOK。
デプロイファースト大事。
[できたこと]
とかが噛みあったので参加していく。
過去を考えると、お題を見てからアイデアを見つけるまでがかなりツライ。
なので、今回はちょっと邪道だとは思うものの、 大きく外れない限りは決めうちでテーマをこじつけていくスタイル。
アイデアが思い浮かばず時間がたりないとか、結局やらないとかは避けたいので、それよりはマシと自分に言い聞かして。
ただ一つのジャスティスとしては、お題発表までは本格的に作りはじめないこと。ここぐらいは守ろう。
逆にいえば、認証回りとかセットアップとかデプロイまわりとかは事前に素振りしておく。このあたりは予想よりも詰まることも多い上に時間をかなり消費してしまう。
期間中、機能開発に集中できるようにするために。
いや本当、素振り大事。