SonicGardenの1プログラマから見た「納品のない受託開発」 #sgadvent

「納品のない受託開発」とは

@JunichiIto77@mah_labのブログを経由してここをご覧になられているような方は既にSonicGardenのことはご存知かと思いますが、SonicGardenはyouRoomKEEPinTOUCHなどの自社サービスの他に受託開発も行っています。詳しくはSonicGardenのHPに記載されていますので、その概要は省略してあくまで僕個人の視点から見てどうなのかということを書いてみます。あまりの放置っぷりに自分でも驚きのおよそ1年半ぶりのエントリとなってしまいましたが、何事もなかったかのように書いていきますよと。

ヨーロッパに居ながらでも(日本の)受託開発担当プログラマが出来てしまう


僕はほんの半年前くらいまでSonicGardenのプログラマでありながら1年間アイルランドのダブリンで生活していました。『国境なきプログラマ』を目指す〜ノマドワークの究極のかたちの記事が詳しいです。誰かに言われて行ったわけではなく、自分が行きたいから行ったのですが、普通はこんなことをしようと思うと仕事をやめて貯金を切り崩しながら生活するスタイルを取るしかないと思います。それがなんと僕の場合は完全に日本のお客様を相手に受託開発をしながら安定を収入を得たまま1年間一度も日本に戻らずに過ごしていたんです。なぜそんなことが出来たかというと「納品のない受託開発」の以下のような特徴からです。

  • 運用環境がクラウド上に存在するのでネットワークさえあればどこからでもメンテナンス出来る
  • 開発やコミュニケーションに利用するサービスが全てオンライン(youRoom, Skype, Github, PivotalTracker等)

当然時差があるので日本と全く同じ時間にというわけにはいきませんでしたが、僕が早起きして日本時間の午後から始動することで週に一度のお客様との打ち合わせも問題なくこなしていました。来年くらいに再び日本を出ていこうかということを画策していたりしますがそれについてはまた別の機会に。

納品しないことによる精神的余裕

勘違いしないで頂きたいのは納品しない=納期がないということではないです。全ての機能を作り終えた完成品の納期がないというだけで、個別の機能に関して小さな納期がいくつもあるようなイメージです。具体的には例えば、「今週はまずログイン機能を作ってログイン出来るところはやります。」などという小さな目標を決めて現実的な納期を毎週定めていくような感じです。100機能を3ヶ月後に完成させることが出来るかどうかは、はっきりいってわからないし必要以上にバッファを積むしかないですが、5個くらいの機能追加や修正ならばかなり正確に見積もれますし、確実に終わらせることを約束するわけでもないので(大抵の場合は終わりますが)変なプレッシャーもなく凄く気が楽なのです。さらに完成したプログラムを次々とリリースしていくため、お客様をお待たせすることなく次々と動くものを提供していくことが出来るのです。

直接対話をする方=ヘビーユーザー

必ずしもそうとは言いきれないですが、僕が現在担当している案件の大半は毎週の打ち合わせをする方自体が一番のヘビーユーザーです。これが意味するところは色々ありますが、何よりお互いによりよいものにしていこうという気持ちが強くなるように感じます。誤解を招く表現かもしれませんが、どこかの誰かが使う(かもしれない)何かを作ろうとしても最低限動けばそれだけで満足してしまいがちですが、目の前にいるこの人が使うものだと思うと自然と力も入るというものです。間に何人も人がいるような伝言ゲームも発生しないですし、やりやすいことこの上ないと実感しています。

受託は面白いと思う

僕は元々IntecというSIerに所属していました。配属されたチームに恵まれたため新卒の頃から色々な経験をさせて頂くことが出来ましたが、やはりかなりの残業や休日出勤を強いられるようなこともありました。受託開発というのは普通に生活していると絶対知り得ないような様々なことに触れる機会でもあるため、開発自体は楽しいんです。ただ、超巨大システムのサブシステムのさらに一部分だけの開発などをしても、最終的にそれがどのように運用されたり、どのような人にどのように使われるかなどといった部分は全くわからないまま運用のチームに引き継がれていてそれが当たり前だと思っていましたが、最後まで面倒を見ることが出来ないというのは残念なことでした。


自分一人では絶対に作らないけれどそれを必要とする人がいて、そのために試行錯誤を繰り返すということは受託開発の醍醐味だと思います。僕はそこまで自分自身がどうしても欲しい、作りたいプログラムというものがあまりないようで、どちらかというと誰かの必要とするプログラムを作る方が向いているようだ、という事情もあるのですが。


受託開発というと悪いイメージばかりが先行することが多いですが、僕は受託開発が面白いし、やりがいを感じます。面白くないと感じるならば、それはただやり方が間違っているだけだ!と、思います。

さて、明日は現時点ではSonicGarden最年少にしてCTOの@mat_akiが登場する予定です。引き続き「SonicGardenアドベンドカレンダー」をお楽しみに!

お知らせ

「Keep in touchグリーティングカード」をリリースしました!

先日ソニックガーデンではネット上でお客様に年賀状が送れる「Keep in touchグリーティングカード」をリリースしました。

下記ページから簡単にユーザ登録が出来ます。ぜひお気軽に使ってみて下さい。

ビジネスでもネットで年賀状を送ろう!〜もっと手軽に、もっと心を込めて〜Keep in touchグリーティングカード – SonicGarden 株式会社ソニックガーデン

ビザとか税金のお話

先日のボスの記事に対するはてぶコメントで

ビザとか税金とか給料とかどうなってるのか非常に気になる。アイルランドはよく知らないけれど、まさか観光ビザじゃないよね?

http://b.hatena.ne.jp/naotoj/20110804#bookmark-53640942

というコメントがあったので当時調べたことなどを記憶を辿りながら書いてみる。

ビザのこと

きっかけはチームで行った合宿でした。そのときのプレゼンでこれまでやってきたこと、これからやりたいことなどを喋る場があったのですが、どうせ独身だし、フリープログラマだし、在宅でいいなら日本じゃなくていいよなぁということをプレゼン当日の早朝に思いついて軽くビザのことを調べました。当時パスポートも持ってなくて海外旅行すらいったことなかったのですが、以下のようなビザがあるということがわかりました。(実際はもっといろんな種類がありますが)

  • 観光ビザ
  • ビジネスビザ
  • 学生ビザ
  • ワーキングホリデービザ

この中で長期滞在が可能でいろんな制約が少なく(銀行口座開いたり、家を借りたり、現地企業で働いたりなど)、ビザ取得に外国語能力が特に問われないということでワーキングホリデービザ取得したら海外行っちゃってもいいんじゃないのか?と思って、プレゼンの場でしゃべってみたところ思った以上にポジティブな反応が返ってきたので、本気で準備することになりました。

さっそく本格的な調査を始めたのですが、ひとつ重要な点として多くのワーキングホリデービザは30歳までという年齢制限がありました。当時30歳手前だったので結構ギリギリでしたね。日本とのワーキングホリデー協定国はWikipediaに記載されている通りです。この中で英語圏に絞った結果以下の国が候補になりました。

あとはもう主観的なイメージで日本人が少なくて英語がしっかり学べそうと理由で

  1. イギリス
  2. アイルランド

のどちらかにいきたいなと思って申請書類の準備などを始めました。これが大体2010年の9月頃ですかね。それと平行してどちらもダメだった場合の保険として取得が容易なカナダのワーホリビザの申請をしておきました。こちらはすぐに取得が出来て11月頃には手元にあったと思います。第一希望のイギリスですが現在アイルランドに滞在していることからもわかるように見事に抽選に漏れました。抽選というか先着順ですが、、、今年はなんと開始からわずか十数分で打ち切りでした、、、。で、結局アイルランドのビザを申請して震災のドタバタで各国大使館が業務停止したり色々トラブルもあったんですが5月下旬くらいに無事に手に入れました。ビザというか正式にはビザ発給許可証です。このビザ発給許可証をアイルランド入国時に入管で提示するとまず一ヶ月の滞在許可が与えられ、それから4週間以内にGNIB(アイルランド入国管理局)に外国人登録することで正式に1年の滞在許可が得られます。外国人登録には住所が必要なので僕はまだ登録出来てません。早く家を決めないと、、、。

税金のこと(住民税について)

まず、日本の住民税に関しては1月1日時点で日本国内に居住している場合、つまり住民登録している場合、当該自治体に1年分収める義務が発生します。1月1日時点では神奈川県で住民登録していたのでこれは既に1年分まとめて収めてしまいました。そして今回出国するにあたって1年間という長期の予定なので住民票は国外転出ということで抜いてきています。つまり来年1月時点でアイルランドに住んでいる場合は2012年度の住民税は収めなくてもよいということになります。

税金のこと(所得税について)

僕はフリープログラマなので所得は給与所得ではなく事業所得となり、事業所得に対する所得税を毎年青色申告で確定申告を行って収めています。今年これがどうなるかですが、まず重要な点として納税者である僕自身が、日本の居住者なのか、非居住者なのか、アイルランドの居住者なのか、非居住者なのかということがあります。この部分がどう判定されるかによってどの国に対していくら税金を収めないといけないのかが大きく変わってきます。2011年度の場合、日本が5ヶ月、カナダ2ヶ月、アイルランド5ヶ月となりますが、カナダ滞在の2ヶ月間は日本国内の住居をそのまま維持していたので、日本の居住者と判定されることになるはずです。この場合、

(1) 非永住者以外の居住者
非永住者以外の居住者は、所得が生じた場所が日本国の内外を問わず、そのすべての所得に対して課税されます。一般的にはほとんどこのケースに該当します。

http://www.nta.go.jp/taxanswer/shotoku/2010.htm

ということなので、日本、カナダ、アイルランドで生じたすべての所得を日本に納税すればいいというふうに理解しています。

では、来年度(2012年度)についてはどうなるかというと、アイルランドにこのまま滞在し続けた場合は2012年度のアイルランドでの滞在期間が7ヶ月であり、恒久的な住居もアイルランドにあるため日本の非居住者であり、アイルランドの居住者であると判定されることになります。アイルランド側から見た場合でも

Tests of residence

Test 1

The first tax residence test is that an individual is regarded as resident in the State for tax purposes for any tax year in which he or she spends 183 days or more in the State.

Test 2

Where the time spent in the State in a tax year is less than 183 days, then the second test comes into play. The second tax residence test is the 280 days two-year test and involves taking account of an individual’s presence in the State, not alone in one tax year, but also in the preceding tax year. Under this test an individual is regarded as tax resident in the State for tax purposes for any year in which he or she spends a total of 280 days or more in the State in the tax year and in the immediately preceding tax year. However, this test will not apply in any year that an individual is present in the State for not more than 30 days.

http://www.revenue.ie/en/tax/it/leaflets/res1.html

というルールになっており、2011年度が183日未満なのでtest1ではアイルランド居住者と判定されませんが、2012年は183日を越えるのでtest1でアイルランド居住者となります。つまり、アイルランド滞在後の5ヶ月を日本に戻って過ごしたとすると、アイルランドの7ヶ月で稼いだ所得は日本の「国外源泉所得」、日本に戻ってから5ヶ月で稼いだ所得は日本の「国内源泉所得」という理解をしています。

2 非居住者の課税所得の範囲
 居住者以外の個人を非居住者といいます。
 非居住者は、日本国内において生じた所得(国内源泉所得)に限って課税されます。

http://www.nta.go.jp/taxanswer/shotoku/2010.htm

そのため、アイルランドで稼いだ7ヶ月分はアイルランドへ、日本で稼いだ5ヶ月分は日本へそれぞれ納税することになるはずですが、とてもややこしいのでアイルランドの居住者判定されない期間で日本に帰ってしまってすべて日本に納税するようにしたほうがいろいろと簡単だよなぁ、、、と考えています。実際、2011/7/30日からのアイルランド滞在日数が280日未満になるようにすればtest2でもアイルランド居住者とはされないため、予定より3ヶ月ほど早く切り上げて日本に帰国するならば日本にすべて納税、ということになると認識しています。あとアイルランド所得税率はすごく高いんですよね、、、。日本のような経費申請とか各種控除がどうなっているのか等見えないことが多すぎますし、こちらの現地企業で働く予定は今のところないので、PPS(社会保証番号)を取得するつもりもないんですが、この番号がないと税金の申請が出来ないらしいです。僕みたいなワークスタイルにこの辺のルールが追いついてないような気がします。ここら辺の知識が付け焼き刃すぎるのでSkypeだけで安く相談出来るような税理士さんがいるとすごく助かるんですが、格安でこんな面倒な相談に乗ってくれる税理士さんが果たしてどこかにいるのかどうか。

上記居住、非居住者判定もですが、アイルランドの税金に関しては http://www.revenue.ie/ で勉強しています。

「国境なきプログラマ」になりたい!

SonicGardenのボスがどうやら僕のことを紹介してくれたようです。ありがとうございます。結構反響があるようですが、僕自身は何かすごいことをやっているという自覚はなくてただ単にワークスペースが変わっただけだと思っています。実際、仕事上では何一つ不自由してないです。もうちょっとくらい何か不自由するかなと思ったんですけどね。強いていえば大きなディスプレイですが、家が決まったらそれも調達してしまおうかなと思ってます。不安はもちろんありましたが今のところ来てよかったなと思っています。

一日のタイムスケジュール

  • 22:00 - 3:45 : 睡眠
  • 4:00 - 12:00 : 日本時間(13:00-21:00 サマータイム時は12:00-20:00)で仕事。基本残業してませんが、どうしても中途半端だったり日時が決まってる作業があれば当然やります。
  • 12:00 - 22:00 : 自由!!!
  • 22:00 : 就寝

日本のメンバーや顧客との打ち合わせの都合上、早起き生活ですが元々朝方タイプなので苦になりません。むしろ自由な時間が朝2時間、昼1時間、夜3時間などのように細切れにあるよりは、このようにまとまって自由時間が取れるという生活がメリハリがあって自分のライフスタイルにはあっていると感じてます。それに時間が少しずれることによって本来の業務時間外に顧客対応することも可能ですし、今のところいい感じに仕事は回っているのかな、と思います。

今後のこと

今回アイルランドにきた大きな理由の一つが英語の習得なのでまずは語学学校通おうかなと。きっとちゃんと出来るひとは日本にいたとしてもしっかり勉強して出来るようになるんだと思いますが、僕みたいな怠け者はまわりに誘惑がありすぎるとすぐくじけてしまいます。その点こちらは日本人というかアジア人ほとんどみかけませんし、仕事が終わって午後から通えるような語学学校もいくつもあります。コースもレベルに応じて振り分けてくれますし、料金も週150ユーロから200ユーロと現在の稼ぎで十分払っていける金額だと思います。で、もっと海外のプログラマたちと積極的に議論出来たりするようになるのが目標です!!

、、、ま、いまのところは旅行会話未満ですから先は長すぎますけどね、、、。

どうでもいいんですが、こっちの建物見るとすごく登りたくなる。。。アサシンクリードっていうゲームをプレイしたことある人ならわかるはず!!

アイルランドのダブリンにいます。

またしても久しぶりすぎる更新です。twitter等では既に書いていますが、日本を飛び出して現在ダブリンに滞在しています。到着したのが一昨日ですかね。ワーキングホリデービザ(30歳で取得して現在31歳なのでギリホリというやつですね)で1年の滞在を予定しています。

到着してから今日まで二日間色々トラブル続きでした。まず羽田発のロンドンヒースロー空港行きの便が遅れたり、さらに乗り継ぎ便のダブリン行きの便も遅れてチケット交換になったり、、、他にも色々ありました。まぁ極めつけはtwitterにも書きましたが、タップが爆発したことですかね。もうこれのせいで他のことが全て飛んでしまいましたよホント。右上が焦げてるのがわかるでしょうか。

コンセント(230V) => 変換プラグ(250V) => タップ(125V) で、わかってしまえば問題ありまくりなんですが、変換プラグやタップ本体に電圧が関係するとは思ってなかったです。。。

爆発のせいでブレーカーが部分的に落ちたのかコンセントが使えなくなったのでフロントの人に修理を依頼したら明日にしてくれといわれブレーカーあげるだけなのではと思いつつその日は我慢。

翌日はフロントが別の男性に変わっていたので再度図を交えて説明してみたところなんとか伝わってコンセントが復旧。復旧後もめげずに

コンセント(230V) => 変換プラグ(250V) => PCの充電器(100V-240V)と繋いでケーブルをおそるおそる変換プラグに指そうとするとちょっと火花飛びそうになってやめましたw

PCの充電器がケーブルと充電器で分離するタイプなんですが、こいつをよくみると実は以下のようになっていたという落ちでした。

コンセント(230V) => 変換プラグ(250V) => PCの充電器のケーブル(125V) => PCの充電器(100V-240V)

このままだとPCもiPhoneも何もかも充電出来ないところでしたが、フロントのお兄さんに再度図を交えて訴えたところ最寄りのPCショップの場所を教えてくれたのでそこにいって220Vのケーブルを確保しなんとかPCの充電が出来るようになりました。ただUSB充電が出来ない一部の電子機器がまだあったので今日空港までいってなんとか240Vの変換プラグをゲット出来たのでようやくなんでも充電出来るようになりました。バンクーバーの時は電源トラブルがまったくなかったこともあって完全に舐めてました。これからヨーロッパいくひとは多少重くても変圧器はあったほうが何かと安心だと思います。

それと誤解のないように書いておきますが、ワーホリといっても一般的なワーホリのように仕事を辞めてきたわけではないです。あくまで生活拠点を海外に移しただけであって、基本的に4:00-12:00ぐらいの予定(日本時間で13:00-21:00)で今まで通りSonicGardenのフリープログラマとして働きます。定期収入がある分精神的な余裕はあるし、こういうちょっと変わったワークスタイルもあっていいのかなと思ってます。いつか海外でプログラマになりたいとは思ってましたが英語出来ないままでまさかこんな形で実現してしまうとは自分自身思ってませんでした。いろんなことがいいタイミングで重なった結果かもしれませんが、せっかくの機会ですし有意義に過ごしたいなと思ってます。

英語個別指導トライアル!

今日の午前中は英語個別指導のトライアルにいって来ました。事前の予約電話の際に、日本語と英語のバイリンガルな先生か、ネイティブスピーカーか選択出来たので迷わずバイリンガルの先生を選んでしまいました…。

今日はいくつか簡単な質問者に答えていくという感じで進みましたが、話してみると時制からして駄目な感じで基本からやり直すことに…orz

下の写真は、宿題で出されたプリントです。過去形、現在形、現在進行形ですね。明日から正式に始まるので久しぶりに机に向かって宿題やります。

ちなみにwebsiteは以下で、自宅からもSkypeでOKだそうです。つまり日本からでもOKということのようです。
http://www.canadajournal.com/esl/

とりあえず12回分(295$)を支払うことにしたので、よさそうだったらしばらく続けてみようかと思ってます。

島国から大陸へ

実に一年以上ブログ書いてなかったけど生きてます。この一年色んなことがありましたが、相変わらずRubyでご飯食べてますよと。

いい仲間に恵まれて、仕事も楽しく、何不自由ない生活を送っていたわけですが、ここ数ヶ月、主にプライベートの時間で以前ほどストイックにスキル磨いたりすることが無くなっていることに危機感を感じていました。

手っ取り早いのは転職で環境を変えることですが(過去もそうしてきたわけだし)、今の仲間たちと仕事するのは楽しく、やりがいもあるので転職は選択肢から外れました。じゃあ、どうすると考えて、昨年チームで合宿した際のプレゼンで、今の仕事は、パソコンとネットさえあれば世界のどこにいても出来るし、個人事業主だし、英語力つけるためにも英語圏に居住して働きたい、というような事をいってみたら、みんなノリノリで協力してくれました。で、どうせいくならある程度長い期間いきたいのと、年齢的にラストチャンスだったんで、ワーホリビザとって今カナダのバンクーバーで暮らしていたりします。あ、ちなみについて三日目、初海外、さらにいうと、イミグレの質問を何回も聞きなおす程度の会話力しかないです。

写真はWater Frontという駅周辺で対岸の山を撮影したものです。

現地時間日曜日で現在午前9:30です。今日の午後くらいからリモート勤務開始予定。さて、どうなるか

Re: rescue_fromに集約したエラー処理をテストするのに必要なたった一つの方法

ちょうど困ってたのでrescue_fromに集約したエラー処理をテストするのに必要なたった一つの方法 - moroの日記を使おうかなと思ったんだけれども、最近のcucumberだとfeatures/support/env.rbにこんなのが書いてあって

# Comment out the next line if you want Rails' own error handling
# (e.g. rescue_action_in_public / rescue_responses / rescue_from)
Cucumber::Rails.bypass_rescue

上記をコメントアウトするだけでいけた。

ちょっとググった限りだと誰にも言及されてなかったので一応書いておく。