概要
どんなサービスか
- 学習の進捗を記録するサービスです。
- 調整さんみたいなテーブルビューで学習の記録や共有ができます。
- 名前の由来は以下の通りです。
榎(えのき)という樹木は、江戸時代、幕府によって一里ごとに植えられました。 旅人が木陰で休憩したり、距離を把握できるようにするためです。 Enoki Logは、榎が茂る一里塚のようなWEBアプリを目指して開発されました。 ユーザーが日々の学習を記録して、一歩ずつ前進するお手伝いをします。
どうやって使うのか
- 登録
- Enokilogにアクセス。
- メールアドレスとパスワードでユーザー登録。
- 作成
- 新しい学習記録を作成。
- タイトルや利用教材などを記入⇒作成完了ボタン。
- 学習終了日に向けてマイルストーンを記入。
- 更新
- 実際の進捗を○×△で記入。
- 順調な理由・駄目な理由はメモ欄に記入して可視化。
- 必要なら周囲の人にページを共有して、アドバイスを貰う。
なぜ作ったのか
- 資格試験の勉強時にこういうサービスが欲しかったからです。
- というのは半分言い訳で、とりあえず何か作りたかった、というのが本音です。
どうやって作ったのか
以下の手順を踏みました。
- 企画:ペルソナ、課題、解決策
- 開発:要件定義、設計、製造、テスト
- リリース:インフラ整備、資材配置
システム構成は以下の通りです。
企画
- リーンキャンバスのProblem/Solution Fit関連箇所を書きました。
- 具体的にはCustomer、Problem、Solution(競合分析を含む)です。
- 最終的なSolutionは上記の通りなので省略します。
Customer:どんなペルソナを想定しているか
- 都内の大手IT広告会社に勤務する1〜3年目の社会人男性。
- 応用情報などの資格取得を会社から要請されている。
- 時間的余裕はなく、最小の教材で、1日30〜60分だけ集中学習している。
- 体力・気力への負担も大きいので、できれば半月〜1ヶ月で仕上げたい。
Problem:どんな課題を抱えているのか
- 勉強できない日が続くと漠然とした不安感に囚われて悪循環に陥る。
- 不安感を払拭するため、どこまで達成して、残りがどれくらいのなのか見立てたい。
- 要するに、学習の進捗を管理したい。場合によっては周囲に相談したい。
Solution:既存の解決策では駄目なのか
- 手帳:できればデジタルツールが望ましい。
- Excel:開きたくない。ブラウザベースが望ましい。
- 学習サイト:多くが機能多寡。モチベーション維持の特殊機能はいらない。
- しっかり分析したわけではないので、なんだかんだ既存の方がしっかりしているだろうなとは思います。
開発
- いわゆる開発五工程をベースにしました。
要件定義
- 業務要件:企画段階である程度固まっているつもりでした。
- 機能要件:そんな細かく考えるのも大変なので設計しながら考えました。
- 非機能要件:なにも考えてなかったです。これから改善します。
- 全体的にもっとしっかりやれば良かったと反省しています。
設計
- 画面仕様:ノートにワイヤーフレームを書きながら考えました。
- 先にカスタマージャーニーマップを作るべきでした。動線がひどいので。
- DB設計:画面仕様を元に、ノートにER図を書きながら考えました。
- クラス設計:Rails Tutorialを元に脳内補完。
- 大枠だけでも書くべきでした。けっこう汚くなったので。
- インフラ設計は最低限の構成にすることだけ決めていました。
製造・テスト
Rails Tutorialを復習しながらコーディングしていきました。
途中から独自路線を突っ走りました。
- 認証・認可・フレンドリーフォワードを仕様に合わせる
- 調べながらちょっとした実装を頑張る
- 開始日〜終了日の間のオブジェクトを自動生成
- ランダムURLの生成と遷移
- ネスト構造のモデルに対応するフォームの表示
路線変更タイミングでテストコード改修が漏れてしまいました。
- ブラウザでの手動テスト頼りになってしまった
- 今後の運用面で辛くなるので、改善したいです
デザインは割と適当です
リリース
サーバ
契約関係
初期設定
-
- さくらの設定画面でサブドメインを設定
ミドルウェア
-
- インストールして起動
- アプリケーション用ユーザを作成して権限付与
- Rails側でdatabase.ymlを修正
Passenger
- passengerと依存ライブラリをインストール
- passenger-install-apache2-moduleを実行
- confファイルでPassengerモジュールを読み込ませる
- 独自のHTTPヘッダを取り消すよう設定
- 動作チューニング用の設定
- PassengerFriendlyErrorPagesをOFFに設定
- これはリリース後に気付いて焦った
Apache設定
サーバ証明書の設定
思ったこと
- 進め方とか
- 帰宅後や休日にコツコツ作るのは精神的に結構大変でした。その分、友人や先輩に見せて「やりきったこと」を評価いただいたときには、本当に嬉しかったです。
- 経験不足で事前に見通せない部分が多く、結果として何度も手戻りました。もっと小さく試すよう心掛けたいです。
- プロダクト面とか