AWS
Eclipse
Flask
vue.js
Postman

割り勘webサービスを2週間でリリースした手法を紹介する

image.png

リリースしたもの

リンク

Walica(ワリカ) | お金の立替・割勘をスマートに清算

Twitter

立替清算サポートアプリ Walica(ワリカ)

見ため

スクリーンショット 2018-10-05 10.21.22のコピー.jpg

セールスポイント
  • 最適アルゴリズムが少ない回数で精算方法をリコメンド
  • インストール・会員登録不要
  • 飲み会に2次会から参加した人、お酒飲めない人などがメンバーにいる場合の特殊な計算も可能
  • 10円, 100円, 1000円単位での精算を選択できる。

開発チーム

自分
- 開発経験2年くらい
- サーバー・インフラ担当

もうひとり
- 開発経験3-4年くらい
- デザイン・フロント担当

の二人で作りました。

今回の開発の早さ

私達が週末に個人開発を共同で初めて1年ほど経ちました。
今まで3つのサービスをリリースしましたが、今回のサービスは圧倒的早さで提供できたので、そのノウハウをお伝えします。

サイト 開発期間 開発環境
動画キュレーションサイト 3ヶ月 Vue + Flask
スポーツショップの販売サイト 2ヶ月 Vue + Flask
割り勘サイト 2週間 Vue + Flask

なぜ週末開発でこの早さを実現できたか

【早さの極意一】 完全分業

開発をしていて、最もスムーズに進むのに役に立ったのが分業でした。

メリット としては、
- それぞれの開発者の得意なことに徹することができる
- 作業の重複(コンフリクト)が発生しない

デメリット としては、
- 参加していない作業については、担当者に任せきりになり後からメンテができない

がありました。今回はリリースまでの速度を重視したため、メリットがデメリットを上回りました。

具体的な作業内容としては、下のイメージのような感じです。

image.png

注目すべきは、
両者の作業が疎結合になっていることです。
そして、一番最後の工程の「結合テスト&リリース」で作業が合流するため、その合流地点に関しては明確に基準を設けました。

今回の場合は、フロントの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図作成ツール。ぶっちゃけ見た目はイマイチですが、今でもダントツで多機能かつ使いやすいツールです
image.png

image.png

知らない人はいないかもしれませんが、便利な使い方を紹介します。
今回の開発手法のように、フロントとバックエンドで分かれる場合の使い方です。
バックエンド担当はAPIのテストと並行してURL・パラメータをPostmanに入力します。
入力した値はエクスポートできるので、この結果をフロント開発メンバーにシェアすれば、 PostmanがそのままAPIインターフェース定義書になる寸法です。
複雑なロジックが無ければ、SwaggerもAPI Blueprintも不要です

最後に

サービスの宣伝&ノウハウの共有でした。
読んでいただいてありがとうございます。