弊社では、新しい技術の習得やIT業界未経験の方にも気楽にプログラミング技術を身に付けていただくために社内プロジェクトを準備しています。
本日はその中で書籍管理プロジェクトについてお話します。
開発の経緯
弊社では福利厚生の一環として技術書やビジネス書籍など業務に関連する書籍購入が簡単に行える仕組みがあります。
そのため社員のメンバーは好きな本をたくさん購入し、自分の自己研磨や常駐先の技術について知見を深めることが容易にできる環境が整っております。
この制度、非常に社員からは評判がよく多くの社員が頻繁に利用していましたが、一つの問題が露呈してきました。
購入した本が重複してしまうのです。
エクセルで管理しても良かったのですが、システム開発事業を営んでおりながらエクセルのみで管理するのはもったいないとの理由から書籍管理システムの開発が始まりました。
使用技術
書籍管理システムはv1とv2がありそれぞれ使用技術が異なります。
書籍管理v1.
・バックエンド:PHP(フレームワークなし)
・フロントエンド:HTML/jQuery
・DB:mariadb
・環境構築:ローカルPC内に構築
・バージョン管理:なし
・デプロイ方法:FTPで直アップロード
・エディター:自由
・チケット管理:なし
書籍管理v2
・バックエンド:Python(Django)
・フロントエンド:HTML/jQuery
・mariadb
・環境構築:Docker
・バージョン管理:gitLab
・デプロイ方法:未定(多分git hooks)
・エディター:vscode
・チケット管理:redmine
最初は、遊びで始まりPHP(フレームワークなし)をベースとし、バージョン管理も行っていなかったため非常に開発に時間がかかる上に、中途半端なシステムになってしまいました。(ファイルが上書きされたり、どれが最新かわからず阿鼻叫喚となっていました...)
この状況を反省し、第二弾ではバージョン管理の導入、環境構築の手間を省く、最新の技術を取り入れることに標準をあてて技術選定しました。
v2で見えたメリット
環境構築が爆速
Dockerを使用することで環境構築がすごくラクになりました!
環境構築でつまづく人も多く、PCによる環境依存による影響もほとんどなくwindows、mac、linux全ての環境で開発環境を整えることができました。
Djangoで最速でwebサプリを作成
Djangoを知っている方ならお分かりかと思いますが、認証やREST、管理画面などがあっという間に作れてしまいます。
反復作業のような部分は全てDjangoが吸収してくれますので、必要なロジック構築のみに集中できます!
チケット管理で何をすべきか可視化できる
チケット管理があると誰が何をすべきかが明確なので、プロジェクトの進捗などを確認する際に重宝します。
エディター統一で環境差異を最小化
エディターも指定することで、コーディングの標準化やエディターのアドバイスなども共通化することができるようになりました。
現在の状況
現在は時間のある社員や、常駐先から戻ってきている人たちを中心に開発を進めています。
多くの社員がDjangoやDocker使用する機会がなかったので学びながら多くの知識を共有してプロジェクトを進めています。
社内開発のいいところ
すごく気楽に開発でき、チーム開発を模擬的に体験できます!
社内での開発なので多少のミスなどは全く問題になりません!
また、社内のslackにチャンネルがあるので、わからない時に疑問を投稿するだけで誰かしらがアドバイスをくれたりします。
大半の方が、経験していない技術ですので、みんなでワイワイガヤガヤしながら楽しく進めています!
最後に
弊社では多くの社員が他業種からの転職になります。
そのため、エンジニア一本で来られた方と比べたら、システムに関する常識が不足していることが多く、その差を埋めようと皆、努力しています。
無知を経験し、努力しているからこそ、それらに対して寛容で丁寧に教えてくれる文化が根付いていますので、興味のある方はぜひ遊びに来てみてくださいね!