Firebaseとオフショア

所晃弘氏:「2018年わたしはこれにお世話になりました!」ということで。先ほどは技術的な発表でしたが、僕は精神的なほうの仕事の発表をさせてもらいたいなと思います。

まず自己紹介です。所と申します。ちょっと長いんですけど、デザイン本部サービスデザイン部第一グループ。そこに上司も来てます。2013年ディー・エヌ・エー中途入社で、現在はディー・エヌ・エー5年目です。面接の時にたぶん「3年で辞めます」みたいなことを言ったんですけど、あっという間に5年目になっています。

やっていることは新規サービスや協業案件です。大きなプロジェクトではフロントエンドをやっています。社内にはけっこうデキるエンジニアがバックエンドでたくさんいるので、自分は大きな案件ではフロントエンドをやって、小さな案件ではインフラからバックエンド・フロントエンドの実装までやっています。また、今期は社員の教育やマネジメントもやりだしてます。

テーマを話す前に、ディー・エヌ・エーには「DeNA Quality」というのがありまして、会社は2,000人ぐらいいるんですけど、みんなバラバラに動いたらダメなので、行動指針ということで「この5つを目標に動きましょう」というのがあります。

この中の「『こと』に向かう」は、「本質的な価値を提供することに集中する」という意味で使うんですけど、今回はここに注目して、Firebaseとオフショアの2つを話したいなと思っています。

「こと」に向かう

まず「『こと』に向かう」って、実際どういうときに使うのか。ディー・エヌ・エーの社員じゃないとよくわからないと思います。

例えば、ミーティングで上司や同僚の顔色をうかがって意見をする人がいると思いますが、ディー・エヌ・エーではそれは(あくまで上司・同僚に向かって仕事をしているんであって)「『こと』に向かって仕事をしてないよね」「ちゃんとユーザーのことを考えて発言しよう・仕事しよう」という感じで使います。本質的に、俯瞰して、ちゃんと目標に向かって仕事しようという意味で使います。

今日のテーマはこれに沿って話したいなと思って用意してきました。

では1つ目、Firebase。これはとあるCMSのサイトの構成なんですけど、一般的な構成です。ディー・エヌ・エーってすごくいろんな事業、いろんなサービスをやっていて、サイトも無数にあるんですが、そんな中で、1つの大企業として、サービスを停止しない最小の構成になっています。

本番プロダクションで言うと、マルチゾーンで構成して、データベースとWebサーバも2つずつ。開発サーバは1個のゾーンで、EC2とデータベースという構成です。

これは何が問題かというと、24時間365日絶対落とさないように運用しようとすると、保守に月10万円かかります。ディー・エヌ・エー社員が24・365対応するのはつらいということで、保守は外注先にお願いしています。業界最大手だと思います。そこにお願いして、一番安くても、だいたいこれぐらいかかっています。

ディー・エヌ・エーで言うと、20本30本超えるサイトがあって、それだけで月2,000万円〜3,000万円かかっている現状があるという問題が上司から指摘があって、リプレイスする案件を行いました。

リプレイス後の構成

リプレイス後の構成はこんな感じです。Contentfulというサービス使いました。これはCMSの、単純にデータを保存しておくようなSaaSなんですけど、それをNuxtと噛み合わせて、スタティックなサイトをローカルなりCircleCIなりで作って、それをデプロイするという構成に変えました。

Firebase自体、裏でFastlyというCDNを使っていて、キャッシュは一瞬で消えるので、更新があるたびにCircleCIでデプロイしていくという構成にしています。開発環境はWhite IPのチェックが必要なので、Functionsを挟んで構築しているという感じです。

結果として、保守はCDNなので必要なくなる。なので使用料だけです。アクセス数にもよるんですけど、だいたい月1万円ぐらいです。年間100万円ぐらいの削減になりました。

今期は2本リプレイスしたので200万ぐらい削減したよという。もうすぐボーナスなので言っておきます(笑)。

(会場笑)

目的を意識して仕事をするということ

技術的な話はこれで終わりなんですけど、ちょっと趣旨を変えて、「こと」にむかうという話になると、技術のコモディティ化が起こってるよねと。要は、誰でもボタン1つでこういう難しいことを構成できるような時代になってきている。

今回で言うと、裏で保守会社があるんですけれども、保守に頼まなくても24・365で落ちないサービスを提供できるような時代になってきた。僕らフロントエンドからしたらありがたいんですけど、そうは言っても次は我が身、という時代になると思います。

これは最近生まれた言葉だと思われるんですけど。実は僕、松下幸之助が好きなんですけど、彼は「水道哲学」ということを言っていて。

「たとえば、水道の水はもとより価値のあるものだ。しかし道端の水道を人が飲んでもだれもとがめない。これは水が豊富だからだ。結局生産者はこの世に物資を満たし、不自由なくするのが努めではないか」(松下幸之助『夢を育てる(私の履歴書)』日経ビジネス文庫 2001)

実はこれは90年前に言われた言葉です。世の中どんどん便利になって、10年前に当たり前だったものが10年後には当たり前ではなくなっている。でも、「消費者を便利にしたい」という精神は90年前から変わっていないということをお伝えしたい。

何が言いたいかというと、「手段に囚われるな」と。「目的を意識して、仕事をしていこう」ということを、このFirebaseの案件で思いました。

これは例え話なんですけど、穴を掘るという仕事に対して、手で掘るかスコップで掘るかという「手段」の良し悪しはあるけど、どのスコップで掘るかは、「目的」の前ではほとんど微々たる問題。例えば「穴を掘ってください」とお願いしたら、もうプロダクトオーナーは、別にVueで穴を掘ろうがReactで穴を掘ろうが、どっちでもいいと。

この手段にナレッジをためてしまうと、例えば10年後ガラッと変わった世の中で生きていけないなと、ずっと前から思っているんですけど、今年さらに思いました。というFirebaseの案件です。

オフショアによるコスト削減とリソース確保

今期で言うと、デザイン本部はオフショアも力を入れています。まず「オフショアとは?」というところは、だいたいの人は知ってると思うんですけど、システム開発などの業務を、人件費削減とかリソースの確保を目的に、海外のエンジニアへ委託することです。

主に人件費のコストの削減は、さっき一番後ろにいる直属の上司のマザキさんに聞いたところ、「コストの削減はそんなに重視しない」と。リソースの確保、要は「もう日本人採れないよね」という問題があるので「ちょっとずつこっちに力を入れていこう」ということで、デザイン本部で始めました。

「コスト削減とはどんなもんか?」という。今月出張に行ってきて、無理矢理写真撮ってきたんですけど(笑)、写真が著作権の問題で映せないってことで、ちょっとテキストを置いています。

ホーチミンの中心の「とある」コンビニ。日本で言うと渋谷のコンビニみたいな感じです。だいたい、そこの求人を見ると、週6で1日8時間で500万VND。

「500VNDってなんぼやねん?」というと、だいたい2万4,000円ぐらい。これはITの給料じゃなくてコンビニの店員の給料なので無為に比較はできないですけど、だいたい物価で言うとこれぐらいの差が生まれています。

次はリソース確保についてです。ベトナムのリクルート事情なんですけど、若い人がすごい。ベトナム戦争とかのいろいろな事情によって、30.4歳です。たぶん日本人が40歳ぐらいなので、10歳ぐらい若いですね。

技術的にはほとんど日本と変わらないです。Vueはあんまり盛んではないけど、Angularがすごい使われていて、教えたらすぐキャッチアップしてくれます。

日系企業とライバルなのがヨーロッパのスタートアップ企業です。しかも、日系企業に比べると、たぶん2倍とか平気で給料出してきます。

一番苦労したのが最後の項目で、働き方の文化の違い。どっちかというと欧米に近いけど、これはたぶん日本人が例外というか、気持ち悪いぐらい独特だと思います。

日本と海外の開発文化の差

これは最近の記事でabe reyさんという方がMediumで書いていたもので、まさしくそうだなと思ったのをちょっと紹介します。

ヨーロッパのエンジニアはプラグマティック、……つまり実用的ってことですね。役に立つものかどうかを一番先に考えて、問題を解決するために一番手っ取り早い、必要最低限のものを作ろうとします。

アメリカとかもよく言われると思うんですけど、向こうの文化は「家族ありきの仕事」なので、「早く終わらせて、早く帰ろう」みたいな感覚で、できるだけ作らないというのを意識して作っていて、ベトナムもだいたい同じ感じです。

一方で日本は、まさしくそうだなと思うものがあって、プライドが高いですね。同じものでも、「僕が作ったほうが優れてる」みたいな。「0.1コンマ秒、僕のほうが処理早い」とか、作り直すのが大好きみたいな人が多い印象で。

この感覚でベトナムと一緒にオフショアをしていて、いま1年ぐらいなんですけど、最初の半年間ぐらい仕事していて一番困った点です。残りの半年間は、なるべくカバーしてうまく回してるんじゃないかなと思っています。

これがオフショア事業ですね。さらに、オフショア事業も「こと」にむかう視点で見ると、人はコモディティ化しないといえます。

例えば、大きな職業の中で見ると、パソコン相手に仕事するってすごい簡単やなって僕はいつも思うんですよね。「echo 1」と言ったら「1」と言ってくれる。ただ、人の場合、「echo 1」と言っても、「1」と言ったり「one」と言ったり、そもそも聞いてない人がいたり。

(会場笑)

こういう意味で、大きな目で見ると、「『こと』に対する仕事」はすごい簡単で、人を相手にするとやっぱり難しい。

何が言いたいかというと、仕事とかお金が発生することって、やっぱり自分にできないからお金を払ってしてもらうのが大前提なので、これも手段に囚われすぎて、誰でもできるような時代になったときに給料を確保できないという問題があるなと、このオフショアを通して学びました。

世の中に必要とされなければ仕事として成り立たない

最後のまとめになって、また松下幸之助が出てくるんですけど。すごい良い言葉を言ってるのでみなさんに紹介したいんですけど。

「どんな仕事でも、それが世の中に必要なればこそ成り立つので、世の中の人びとが求めているのでなければ、その仕事は成り立つものではない。人々が街で手軽に靴を磨きたいと思えばこそ、靴磨きの商売も成り立つので、さもなければ靴磨きの仕事は生まれもしないであろう。自分の仕事をああもしたい、こうもしたいと思うのは、その人の熱意があればこそで、まことにけっこうなことだが、自分の仕事は世の中の仕事であるということを忘れたら、それはとらわれた野心となり小さな自己満足となる」(松下幸之助『道をひらく』PHP研究所 1968)

道をひらく

比喩的なんですけど、プログラムの現場の話で言うと、「本当にそれいるか?」みたいな機能や、「その1行いるか?」みたいなコードを書いている人がいます。

プログラムを書き上げて次の日もう一度読んでみたら、「なんで俺こんなコード書いてたんやろ?」みたいになる経験ってよくあると思うんですけど、それと似たようなもんで。

僕はそういう時はもうちょっと大きな目で俯瞰して、「本当にこの仕事必要なのか?」「必要ないのであれば、どういうものが求められているのだろうか?」というように考えることを意識して、去年からの2年間ぐらいは仕事をしてきました。

2019年、少しでもみなさんの助けになればなと思って紹介しました。以上です。

(会場拍手)