自己評価と次回への改善点

イテレーション1が完了した。ここではイテレーション1に関する総評と改善点についてまとめる。

総評


 本件ではイテレーション1は全体の土台を作るという意味合いが強い。そのためある程度時間がかかることは仕方がない。しかし、あまりに時間がかかりすぎたというのが素直な感想である。当然知識がないことも問題である。しかし、学習目標と完成目標の競合を上手く自分の中で処理できなかったことが最も大きな要因であると思う。学習した点とイテレーション1の成果物についてそれぞれ言及する。

 学習できた点については、Railsだけでなくhttpなど基礎的なところである。手元の本やWebの情報である程度知識がえれたと感じている。特にBasic認証を通じてリクエストヘッダなどのhttpに関するところをについて、詳しく調べるきっかけができた。理解が一部追いついていないところはあるが初心者にとっては十分な内容かもしれない。この点は他の知識を取り入れることで解決することもあるので焦らないことが重要だと考えている。

 成果物に関しては、時間がかかった割に最終的な機能は大したことがないというのが結論である。内容的には以下の要素が詰まっている。

  1. Basic認証(ログインおよびログアウト←ログアウトは動作が不安定)
  2. ActionText(Railsコンポーネント)
  3. ActionCable(Railsコンポーネント)
  4. Docker

細かい点を上げれば色々あるがおおよそ上記の4つの要素が主なところだろう。そのためなれている人からすると大した内容ではない。初心者なりに頑張った点を挙げるとすれば以下である。

  1. Ubuntuベースイメージから開発環境を整えるDockerfile&docker-compose.ymlを作ったこと。
  2. ActionTextとActionCableを組み合わせてちょっとリッチなテキストでひとり言をできるようにしたこと。
  3. Basic認証だが一応ログアウトできる(できないときもある)ようにしたこと。

しかし、全体的に動作が不安定である。例えば、以下の通りである。

  1. テキストを送信するためにshift+Enterを押しても送信されないことがある。(リロードすると動く)
  2. ログアウトが不安定、マイページに戻れてしまう(今の所マイページまでは戻れてしまう)
  3. Chromeの場合ユーザを作成しようとしてもデータが送信されないことがある(もう一度押すと送信される)
  4. ログアウト画面にあるリンクをクリックしても遷移しないことがある。

極短期間で作ったのであれば致し方ないが、学習と実験込みではあれ約1ヶ月ほどかかっている。それにしては完成度が低いと感じた。

しかし、初心者でそれなりのものを作ることはできたと感じている。その理由は以下の通りである。

  1. ER図や画面遷移図、アクティビティ図など開発を効果的に進められるように設計をしたこと
  2. 開発の目的、方向性などを道筋を立てて報告するドキュメントの製作(このサイト)をしたこと

これらがなくとも開発本体を進めることはできる。とくに一人で開発する上ではほとんど不要である。しかし複数人で開発することを考えてこれらを初期の段階から重視していた。設計が最適ではない点は悪いかもしれないが、これから少しずつ改善していきたい。

全体をまとめると、初心者なりにそれなりのものを作ることができた。しかし、時間がかかった割に完成度が低いというのが結論である。
早く作れるようになるには相応の経験が必要なので今後の課題である。

次回への改善点


 時間の都合で一部断念した箇所が一部ある。例えば以下の点である。

  1. 挙動が不安定である点
  2. リファクタリング
  3. ビューの作り込み

 1つ目に関しては、テスト上では問題はないが、実際にブラウザから操作すると変になる点である。この点は経験不足ゆえか対応しきれていない。またブラウザによって動作が若干異なるとなれば問題がどこにあるか特定することが難しい。
 2つ目は単純に時間が足りない点もあったが、おそらく私のrubyの知識の問題だろう。プロを目指す人のためのRuby入門でリファクタリングを読んだが、前後でコードが全く違う。リファクタリング後のコードは非常に短く保守性に優れたものになっていた。しかしそれを書くための知識というよりはRubyの仕様の理解が足りていない。
 3つ目はサーバの機能の作り込みを優先した結果である。ビューよりもサーバサイドの作り込みの難易度が高いと感じていたため本件はサーバサイドの作り込みを優先していた。しかし、完成してからみるとあまりに簡素過ぎて若干悲しい。

 上記を受けて改善するべきは以下のとおりであると思う。

  1. ブラウザごとの特徴を知る
  2. Rubyの仕様を意識してコードを書く
  3. 土台はできたのでもう少しビューを作り込んでいく

上記の点を意識して次のイテレーション2に取り組んでいきたい。

これにて、イテレーション1は完了とする。