#前書き
アドベントカレンダー、子供の頃は毎日12時まで起きてて翌日の分のチョコレートを食べてから寝るのが日課でした。
というのは置いておいて、16卒で入社して古くなったPHPのシステムを約半年間かけてRails5にリニューアルした際に得たTipsを少しまとめたいと思います。
開発編
作る前に「Gemを探してみる」
あなたが作ろうとしているものが相当特別な何かでない限りは大抵gemに落ちてる。
今回のシステムを作るに際して利用したgem達
- 検索機能
- ドラックドロップでの画像アップローダー
- 表示件数切り替え
- ページネーション
- enumの日本語化
- 項目の検索が可能なセレクトボックス
- DBの値からグラフ作成
- パンくず
- PDF作成
- ログイン機能
- ファイルのzip化
- 祝日を考慮した営業日計算
#2時間かけて実装したコード、CTOは1分で実装してた
少し大きめの機能(作業時間3時間以上)を作る時にはまず設計レビューを受けるようにしています。
Step1: システムに現状と理想の状態を思い浮かべてその間にある問題点を明確にする
現状<ー問題点ー>理想
Step2: 自分なりに問題点を解決可能な手段を考えて聴いてみる
自分の知っているやり方、やりなれた方法に頼らず一旦5分時間をとって聞いてみるのは大切です。
頑張って2時間かけて実装した後に、それはこれでも出来るよと言われてgit hubのプルリクを見た時の衝撃は忘れられない。
2時間で200行 => 1分で1行
#心構え編
##チーム開発の効率の高さ=チームのHRTの精神の高さ
HRT「Team geek」で有名ですが。
- 謙虚(Humility)
- 尊敬(Respect)
- 信頼(Trust)
この3つの言葉を指しています。
友人の仕事場の話などでうまく行っていない話を聞くと、その職場の上司にHRTの精神が足りないことが多いです。
正直そのような環境、働きにくいです、むしろHRTがあるだけで後輩が自由に働けます。
そっとこの本を渡しましょう。
http://amzn.asia/cUsSgsS
そしてまずは自分が気をつけてみると周りが変わるはずです。
DBで感じたことをいくつか
長い変数名、短い変数名とかではなく、わかりやすい変数名をつける
実際のサービスの開発をしていて、短い主キーで開発を進めて行くとこうなる。
Aさん :工場から商品を配送するサービスだからこんな感じに主キーを設定しておこう!
TID : Transfer 配送テーブルの主キー
SID : Supplier 工場テーブルの主キー
PID : Product 商品テーブルの主キー
上司 :Statementテーブル用意したい、作っておいて
Aさん :了解!、でもSIDすでに使われているから2番目のTを使ってTIDにしよう!
TID : Transfer 配送テーブルの主キー
SID : Supplier 工場テーブルの主キー
TID : sTatement 請求テーブルの主キー
PID : Product 商品テーブルの主キー
DB構築は担当人数が1人だったため、TIDが重複していることに気づかず、開発が進み、無事闇の誕生。。。
リニューアル時にそのエンジニアが不在、ドキュメントも何もなし、あるのはDBのみで大混乱
もちろん賛否両論あると思いますが、個人的には変に短くてわかりにくくなるくらいであれば、必要な分だけ長くする。
最終的に開発コスト、保守コストが下がるのはどちから考えて一番コストが引くそうな変数名を選ぼうと思います。
自由入力の9割型は悪なので極力避けたい。。。
スマートフォンの名前のマスターデータを自由入力にすると
ユーザーは様々なバリエーションを提供してくれます。
iPhone5
iPhone5
iPhone 5
iPhone 5
アイフォン5
アイフォーン5
旧システムにはiPhoneだけで60種類取り揃えております!
営業:機種ごとの集計システム作って^^
僕 :無理です^^;;
となるので自由入力を営業に求められてもHRTの精神を持ってお断りいたしましょうm(_ _)m
番外編:最近知った運動瞑想睡眠野菜350gの呪縛
- 「運動」 DDRやろう(提案
- 「睡眠」 SleepMister というアプリ使うと毎朝快適です(IOS)
- 「瞑想」 1分間瞑想または15分の睡眠が効果的です。
- 「野菜350g」 コンビニの1日分の野菜が効率的だと思いました。
最近運動できていないので運動しようと思いますm(_ _)m