その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

GitHub経由で海外から仕事が来た話

はじめて海外から(フリーランスとして)仕事をいただく、という貴重な経験ができたので、その経緯などを書いてみたいと思います。

きっかけ

7月末のある日、知らないメールアドレスから英語のメールが来ました。内容を一部だけ抜粋すると、

We are looking for someone to develop a very simple apple watch app and a companion apple phone app.


というわけで、Apple Watch アプリをつくって欲しい、とのこと。内容を読むと加速度センサとジャイロを使いたいそうで、必然的に watchOS 2 案件になりそうです。


メールには明記されてませんでしたが、GitHub で公開している watchOS-2-Sampler を見て連絡くれたのかなと。(※もちろん面識はなく、共通の知り合いもいないので、これ以外にわざわざ海外にいる僕に依頼してくる理由が考えづらい)




会社名も書かれていたのでググってみると、イスラエルの会社のようです。メンバーもLinkedInのプロフィールを見ると某世界的大企業の出身で、学位も持ってて発表した論文とかも載ってるので、怪しい感じではない、というかむしろすごいレベル高そう。


実はちょうど(フリーランスとしての今後を考えると)海外からの仕事もやりたいと思っていた & watchOS 2 を案件でやりたかったのもあって、前のめりに食いつきました。

I'm interesting for the work to build an watchOS 2 app.

(2015.8.16追記:はてブコメントで「そこは "I'm interested in" でしょ」ってツッコミを何件かいただきました。。恥ずかしいですがこんな英語でも全然やりとりできたという事実にも価値があると思うのでそのままにしておきます)

受注するまでのやりとり

工数や金額の提示

相手からきた最初のメールに(簡単に)こういうものをつくってほしい、ということが書いてあったので、僕も最初の返信から「こういう内容で、日単価○ドルで、○日でやります」と明記しました。

My freelance fee is $xxx / day. I can develop the watchOS 2 app with following features in 2 days:

  • ・・・・(機能1)
  • ・・・・(機能2)


単価は、普段日本でやってるのと同等の価格を提示しました。イスラエルの相場とかよくわからないので。それと安く済ませるためのオフショア、というよりは watchOS 2 実装がちゃんとできそうな人を海外からわざわざ探してきた、という位置付けなので、安売りする必要もないかなと。(とはいえシリコンバレー相場からすると安い)


また工数の見積もりは、だいたい1日もかからずできそうとは思ったのですが、watchOS 2 はまだベータで不安定なのでそのあたりで色々ハマるかも、というのと、

  • 加速度センサの値をインターバル x [ms] で取得し、それを iPhone 側に n 秒ごとに送る
  • データ(加速度センサ値)のロストは NG

という要件があり、取得インターバルがかなりギリギリ(短い)で、こういうのは実際にやってみるとウォッチ側の処理性能やBLEの通信速度的な部分やでどうのこうのありそうだなーというのも加味して2人日としました。

要件確認

あとちょっと要件的に気になる部分について確認しました。ジャイロの値は今のところフレームワーク的には用意されてるけど、実機でやってみると取れないですよ、とか、前述した加速度センサ値の取得インターバルや、Watch <-> iPhone 間の通信速度に関する懸念とか。

However we can't get gyroscope data from Apple Watch for now. You can try with my OSS (https://github.com/shu223/watchOS-2-Sampler). In addition, ・・・(他の要件についての懸念点)

このへんはいち開発者ではどうにもできない場合もあるので。。


以上が僕からの最初の返信メール。

条件の調整

で、それについての先方の返信があり、会社の詳細・ビジョン・プロダクトの説明とか、もっと具体的な要件とかが書いてありました。その具体的な要件が、最初のメールよりも増えてたので、「それなら4人日でやります」という旨の回答をしました。


そしたら、「なぜ2倍になったんだ?どの要件を減らせばどれぐらい減るの?」という質問が。


どれがどう、というよりベータ版での開発に携わる際の直観的なものしか根拠としてないので、その旨を正直に伝えました。

Both 2 days and 4 days, they depends on my rough feeling. It may takes more or less.

(2日にしろ4日にしろ、なんとなくの感覚なので、もっと伸びるかもしれないし、縮まるかもしれない。・・・と言ってるつもり)


さらに、次のように提案しました。

  • 3日で終わったら、3日分だけ請求します
  • 3日で終わらなかったら、その時点での状況と、あと何がどれぐらいかかりそうか、を報告するので、引き続き作業を進めるか、やめるかを選択してください
    • それ以上進めないことを選択した場合、その時点までの成果を受け取るかどうかを選択してください
      • 成果を受け取ることを選択した場合、その3日分を請求します
      • 成果を受け取らないことを選択した場合、一切請求しません


こちらとしては「やってみないとわからない」ことがほとんどなので、こういうやりとりで平行線をたどるよりは早く手を動かしたいし、最悪お金にならなくても watchOS 2 の知見は得られる(そしてブログとかに書ける)ので数日ぐらいならアリかなと。


だいぶ変則的ですが、先方の返答は、

We would like to hire you to develop these apps (iphone and apple watch).
The conditions you stated sound fair.

フェアだね、よし、任せよう


というわけで無事受注することができました(実際は技術面でもっと細かいやりとりがあったのですが、長くなるので省略)。


ここまでメールは5往復。

開発

その3日間について、いつといつといつでやります、ということは明示してましたが、当日に先方から「ちゃんとやってるか〜?」とか聞いてきたり、スカイプで何か話したりとかはなく、完全に任せてくれてました。ただ向こうも心配はあると思うので、「そろそろ作業始めます」とか、1日目の終わりにもちょっとメール送ったりとかはしました。


本当のところは、3日分の作業を1日で終えて、「もう終わったよ、請求は1日分でいいよ」「まじか!すげーな。次も頼むよ」みたいな展開を狙ってたのですが、watchOS 2 beta のあれやこれやにハマって(watchOS 2 の技術的なことはまた別記事で書こうと思います)、結局2日かかって完了。

作業報告

実装的には要件は満たしたのですが、どう考えても watchOS 2 beta 自体のバグとしか思えない挙動 *1 があり、それにより実機ではある要件を満たせないという部分がありました。そこをどう説明し、納得してもらうか、はけっこう悩みました。


前述したような条件なので、Xcodeプロジェクトをいきなり送ってしまうと相手がその成果に満足しない場合に何ももらえなくなってしまうので、まず、実装自体はできていることを証明するため、シミュレータではきちんと動いている動画を撮影し(シミュレータでは加速度センサ使えないので、そこはダミーで値を生成するモードを実装しておいた)、その上で、実機ではどういう問題が起きているのか、それについてどんな検証を行い、なぜAppleの問題(watchOS の問題)と考えるのか、どんな対策が考えられるかといったことを整理して書きました。


代替実装も行っておき、その動画も撮影して送りました。


プラス、僕としては初めてのお客さんなので、早く最初の入金までこぎつけたく、

  • まだ不足がある、追加要望がある等あれば、8月○日にもう1日作業できます
  • これで十分であれば、Xcodeプロジェクト一式を送り、2日分だけ請求します

と書きました。


そんなこんなで作業報告メールはレポートはこの記事よりも長くなり、2〜3時間はかかったわけですが、先方は「言ってることは筋が通ってる」と実機では要件を満たせていない件について理解してくれ、代替実装案についても同意してくれました。


で、まずこの2日分は入金した上で、プラス今後も作業をお願いしたい、と言ってくれました。


その後、あれこれ送金方法の調整があったのち、すみやかに送金していただけました。

所感

一連の流れから汲んでいただけると思いますが、すごく理解があり、信頼できる良い方たちでした。分野的にも watchOS 2 は興味のあるところなので、ぜひ今後も一緒にやっていきたいと思っています。


ただ、数人日の小さい案件なので、比較的ざっくりした感じで進められたものの、もっと大きい案件だとこうもいかないかもしれません。そういった場合に、

この記事に書いたみたいに、見積もり型ではなく、(ある程度の信頼関係を築いた上で)先方のオフィスまで行って、2週間とか一緒に作業して帰る、みたいなやり方ができたら理想的だなぁと思っているのですが、それも色々な面で難しいところはありそうです。


とにかく今後も海外からもお仕事をいただけるよう、GitHub活動やStackOverflow活動をがんばろう、と思った次第です。


制作実績を3ヶ月ごとにまとめています:http://d.hatena.ne.jp/shu223/archive?word=%2A%5B%C0%A9%BA%EE%BC%C2%C0%D3%5D