新入社員が社内の事務システム作ってみた

春になり、ファーエンドテクノロジーに入社してから一年が経ちました。ブログも1年のうちに6回は担当したのですが、未だにさっくりとは書けず、毎回何について書くかで悩んでしまいます。


Photo by PAKUTASO

 今回のブログでは、私が一年の中でもっとも時間をかけて取り組んでいた社内システムの開発について振り返ろうと思います。

社内システム:Saturn

入社してから9ヶ月以上、Saturnと命名したシステムの開発を行ってきました(今も運用と同時に改善を続けています)。 Saturnという名前は二つの意味を込めたダブルミーニングで、社内で案を募って決めました。

こんな2つの意味を持っています。 かっこいいですね。

Saturnは、お客様の契約情報を管理するシステムで、プログラミング言語RubyのWebアプリケーションフレームワーク「Ruby on Rails」を用いて作りました。


開発開始前の資料

Saturnは主にこういった理由で作ることになりました。新入社員として入ってきた私(=石川)の開発スキル向上というのも理由の一つになっています。

開発の振り返り

7月

入社後、研修などを終えて、Saturnの開発が始まりました。 (正式に何日から開発に取り組みだしたのかという記録は見つからなかったのですが、gitのコミット履歴を見ると、一番最初のコミットが2016年7月6日でした。)

タスクボードやRedmine、バーンダウンチャートやKPT、Gitなどなど、様々な初めて使うツールや手法を用いて開発に取り組んだので、開発自体よりもそれらの使い方を考えたり覚えたりする方が大変だったかもしれません。


当時のKPT写真

また、開発面では主にデータの設計や、管理ソフトの基盤となるCRUD機能を実装しました。

8月

7月に作ったもののデータ設計から見直すことに。 7月の段階では、表計算ソフトで管理していた列をそのままデータベースに置き換えたような設計だったのですが、改めて見直しをかけてかなり内部構造を変更しました。

社長には「今までの表計算ソフトのやり方をそのまま移し換えるのではなく、あるべきシステムの姿を考えて新しく作り直して欲しい。その上で事務の業務自体も改善していって欲しい」と教えていただき、データ設計の見直しでもたくさん助言をいただきました。

また、レビューの機会が少ないまま開発を進めてしまっていたため、これ以降は割と頻繁にレビュー会と称して内容の確認を行うようになりました。

9月

9月は、Saturnの1回目のリリースを行いました。一部機能のみのリリースだったのですが、セキュリティ面でのチェックやサーバのセットアップ作業なども行い、初めてやることだらけの一ヶ月でした。

特にセキュリティ関連のチェックは、初めて知る言葉や内容に触れることが多く、とても勉強になりました。 そして、何よりも自分の知識不足を実感した一ヶ月でもありました。


脆弱性診断ツール「OWASP ZAP」によるチェック

10月

開発チーム全員でKPTの勉強会に行き、学んだ内容をプロジェクトのKPTにも反映しました。(→ブログでも書いています。)

また、2回目のリリースに向けて、これまで使ってきた表計算ソフトのデータをSaturnに移行する準備を始めました。8月のところにも書いているように、かなりデータの形を変更していたので、データ移行の準備は随分と時間がかかりました。もちろん10月だけでは終わっていません。 また、SaturnではRspecでテストコードを書きながら開発を進めていたのですが、このあたりからテストコードを書くのに慣れてきたような気がします。

11,12月

契約の状態を元に、請求書PDFを自動で作成する機能の開発を主に行なっていました。 データ設計からコーディングまでかなり楽しく進められた記憶があります。

ちなみに、請求書をPDFで作る部分は「Thinreports」というツールを使って行いました。 Saturnでは請求書以外にも様々な種類の帳票を出力する機能があるので、Thinreportsには随分とお世話になりました。


Saturnで出力した請求書

1月

銀行振込のお客様の入金履歴を管理し、請求額と比較して消し込みチェックをする機能を追加しました。 請求書に引き続きお金が絡む機能だったので、データ設計には随分と悩み、たくさん話し合いを重ねました。


試行錯誤していた様子

特に入金に関する話し合いをやっているときは、高校で簿記の勉強をやっていてよかったなと思いました。

2月

この辺りから2回目のリリースの準備に取り掛かり始めました。 セキュリティチェックや動作検証、データ移行の検証など、表計算ソフトにたくさんお世話になりました。 特にデータ移行の検証は、それぞれがお客様のデータなので誤りがあってはいけないと緊張しながら検証を行いました。

3月

そして3月中旬、ついに2回目のリリースを行いました。

リリース後は、開発チームで今までの振り返りを行いました。

今までの開発の際に書いたバーンダウンチャートとその他データを元に、その頃どんなことを思っていたかなどのGoodな点とBadな点をそれぞれ付箋に書き出して振り返りました。

今は、事務・サポートなどの業務でSaturnを使っています。2回目のリリースを行ってから2ヶ月間は、今まで通りの表計算ソフト管理との並行運用をしていたのですが、5月からSaturnのみの運用に切り替える予定です。

やはり自分が開発に関わったシステムが実際に使っていただけているのは嬉しいことですね。 特にSaturnは入社後もっとも時間をかけて取り組んできたので、喜びもひとしおというような感じです。

今は運用フェーズに入っているのですが、機能要望などのチケットがRedmineにまだまだたくさん残っているので、今後もSaturnの開発は続けていく予定です。

個人的な成長

Saturnを作る理由の一つとして私の開発スキルの向上があったのですが、本当に様々な経験をすることができました。 一つのシステムが出来ていくところに1から10まで関わることができたので、知識の幅も前よりは広がったと思います。

最近はRedmineのプラグインの開発を行ったりもしています。 入社直後にRedmineのソースコードを見ようとすると何もわからなかったと思うのですが、最近はSaturnで鍛えられたおかげで時折詰まりつつもなんとか進められています。

ファーエンドテクノロジーからのお知らせ(2017/11/01更新)
第7回モバイル活用展(11/8〜10開催) でRedmineについてのご相談にお応えします
11/8〜10 Japan IT Week(幕張メッセ) アジャイルウェアブースにぜひお越しください
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け