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

2019年1月17日

リリースしたもの

リンク

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体質感)

※図にはありませんがコードレビューは随時やってます。

【早さの極意三】開発ツール活用

最後に、開発に役立ったツールの紹介をして終わります。

image.png

Eclipseで動作するER図作成ツール。ぶっちゃけ見た目はイマイチですが、今でもダントツで多機能かつ使いやすいツールです

image.png

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

最後に

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