こんにちは!アジャイル事業部の maimu です。
私はアジャイル事業部でエンジニアとして働き始めて3年目になります。1年目と比べてできることが増えてきたと感じることもあれば、開発を進める上でなかなか成長を実感できない課題もいくつかある状況でした。
- 機能開発をするにあたって自分が理解できている部分から先回りして手をつけてしまう
- 最終的なゴールが曖昧な状態で実装を始めてしまう
- 開発中に詰まった際に、具体的に分からない箇所を自分自身が把握できていない
などです。 これらの課題は1年目の頃からあったのですが、Ruby や Rails で開発をすることにある程度慣れてきた2年目からより強く実感するようになりました。当初は経験を積んでいけば自然と課題感も薄まるのではと思っていたのですが、どうやらそうではないということに2年目途中で気がつきました。
どうすればこの課題を解消していくことができるのか考えて、Ruby や Rails の基本を学び直してみたり、個人開発をやってみたり、良さそうに思ったことは色々試したのですが、課題は残ったままでした。
やはり時間がかかるものなのかーと思い始めていた矢先、手応えを感じた方法が「自分のためにシーケンス図を書く」でした。
分からないものは図も書けない
きっかけはプロジェクトの先輩から機能を開発する前にシーケンス図を書いてみようと言われたことでした。それまでの私はシーケンス図はドキュメントに添付されているのを見たりする程度で自分で一から書いたことはありませんでした。
マーメイド記法で初めて自分で書いたシーケンス図は関連するレイヤーが抜け落ちていて、処理の流れも曖昧になっていました。ですが、これが自分の中では小さな手応えを感じた瞬間でした。
「図に書き表せなかったことが自分が分かっていないこと」だと気がつくことができ、シーケンス図の中で流れの辻褄が合わない部分や必要なレイヤーを挙げられているかなどを整理していくことで、自分の頭の中で絡まり合っていた長年の課題感がほぐれていく感じがありました。
自分のために書く
以前の私はシーケンス図は完成している機能に対して説明用の記録として書くものと思っている節がありました。ですが、図を書くことに手応えを感じてからは、外部への記録用ではなく自分のために図を書く時間をとっています。
こちらは私の自作ブログ用に書いたシーケンス図の例です。

Rails と Active Storage が同じ粒度で並んでしまっている気になりはあるものの、まずは自分の頭の中にある流れを図で表すことを優先しています。より細かく書き加えたいことがある場合は該当箇所を新たに取り出して別の図を書いたりしています。 下の図は全体の流れを書いた後に、フロントエンドとRails、Active Storageの繋がりが曖昧だったため、新たに書き出した例です。

どこまで細かく書くかなどのルールは決めてなく、自分がもっと整理しておきたいと思う部分は状況に応じてどんどん書いています。また、書いたシーケンス図は手元に残しておいて、実装中に迷子になりそうになったら見直したり、新たに気づいたことを書き加えたり修正したりしながら使っています。
シーケンス図を書くようになって良かったこと
シーケンス図を書くようになって、最初に挙げた私の課題感に対してどうすればいいのか分からない状態からステップを踏みながら乗り越えていけそうな実感が持てるようになりました。
図を書くようになって良かったことはたくさんあります。
まず、処理の流れの全体を掴むことができるため、ゴールが曖昧だったり自分が分かっている部分から実装を始めて、流れの先回りをしてしまうということがなくなってきました。流れに沿って実装ができるとリズムに乗れているというか、実装の確認もやりやすくなっていると思います。
また、図を書くことで自分が分かっていない部分を認識する助けとなり、そこから必要なことを調べたりする手掛かりを得られるようになりました。自分一人では整理しきれない場合は、書き出した図をもとに先輩に相談して会話をすることもでき、コミュニケーションも取りやすくなったと実感しています。
まとめ
記事の最初に挙げた課題感はエンジニア歴2〜3年目ごろの方は一度は感じたことがあるのではないでしょうか? 課題に対するアプローチは人によって様々だと思いますが、私の場合は図を書くということが合っていたなと感じています。
こちらの記事が同じ課題感を抱えている方の参考になれば嬉しいです。
株式会社永和システムマネジメントでは、Ruby とアジャイルソフトウェア開発を通じてコミュニティと成長したいエンジニアを絶賛募集しています。