リリースしたもの
リンク
Walica(ワリカ) | お金の立替・割勘をスマートに清算
見た目
セールスポイント
- 最適アルゴリズムが少ない回数で精算方法をリコメンド
- インストール・会員登録不要
- 飲み会に2次会から参加した人、お酒飲めない人などがメンバーにいる場合の特殊な計算も可能
- 10円, 100円, 1000円単位での精算を選択できる。
開発チーム
自分
- 開発経験2年くらい
- サーバー・インフラ担当
もうひとり
- 開発経験3-4年くらい
- デザイン・フロント担当
の二人で作りました。
今回の開発の早さ
私達が週末に個人開発を共同で初めて1年ほど経ちました。
今まで3つのサービスをリリースしましたが、今回のサービスは圧倒的早さで提供できたので、そのノウハウをお伝えします。
サイト | 開発期間 | 開発環境 |
---|---|---|
動画キュレーションサイト | 3ヶ月 | Vue + Flask |
スポーツショップの販売サイト | 2ヶ月 | Vue + Flask |
割り勘サイト | 2週間 | Vue + Flask |
なぜ週末開発でこの早さを実現できたか
【早さの極意一】 完全分業
開発をしていて、最もスムーズに進むのに役に立ったのが分業でした。
メリット
としては、
- それぞれの開発者の得意なことに徹することができる
- 作業の重複(コンフリクト)が発生しない
デメリット
としては、
- 参加していない作業については、担当者に任せきりになり後からメンテができない
がありました。今回はリリースまでの速度を重視したため、メリットがデメリットを上回りました。
具体的な作業内容としては、下のイメージのような感じです。
注目すべきは、
両者の作業が疎結合になっていることです。
そして、一番最後の工程の「結合テスト&リリース」で作業が合流するため、その合流地点に関しては明確に基準を設けました。
今回の場合は、フロントのAPIコールが合流地点になるため、
ソースコードに下記のようなコメントを記載して開発していました。
@application.route('/api/group/<group_id>', methods=['GET'])
# param: none ←コメントで入力値を記載
# return: group_id(string) ←コメントで出力値を記載
def get_group(group_id):
return jsonify(group_service.get_group(group_id))
【早さの極意二】 レビュー頭出し
これは、チームとして成熟してきた場合に有効です。
ある程度一緒に開発をしていると、「このレビュアーは、これを気にするな」ということがわかってきます。
ちなみに私が一緒に開発しているエンジニアは、 変数名をやたら気にする という特徴があります。
なので、コードレビュー※に出す前に 「この変数って、これでいいかな?」 と聞くようにしていました。
実際に自分が思いついた変数でもレビューは通るかもしれませんが、
「相手の気にするところは、意思決定プロセスに参加させる」 ということが合意のために重要ということに気づきました (SIer体質感)
※図にはありませんがコードレビューは随時やってます。
【早さの極意三】開発ツール活用
最後に、開発に役立ったツールの紹介をして終わります。
Eclipseで動作するER図作成ツール。ぶっちゃけ見た目はイマイチですが、今でもダントツで多機能かつ使いやすいツールです
知らない人はいないかもしれませんが、便利な使い方を紹介します。
今回の開発手法のように、フロントとバックエンドで分かれる場合の使い方です。
バックエンド担当はAPIのテストと並行してURL・パラメータをPostmanに入力します。
入力した値はエクスポートできるので、この結果をフロント開発メンバーにシェアすれば、 PostmanがそのままAPIインターフェース定義書になる寸法です。
複雑なロジックが無ければ、SwaggerもAPI Blueprintも不要です
最後に
サービスの宣伝&ノウハウの共有でした。
読んでいただいてありがとうございます。