ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

ReactをGoogle Cloud Platformにデプロイする

静的なReactをGoogle Cloud Platformにデプロイする方法。

いろいろググって出てきた方法で試したのに、これという解説が見つからなかった。Reactのデプロイに関してはGoogleの公式ドキュメントもStack Overflowのポストも全部イマイチという印象。

決してGoogle Cloud PlatformにReactが適さない訳ではない。GCPは無料でいろいろできるし、Reactとも相性がいいはず。なんでこの系統のドキュメントが充実していないのか、いまだに謎。
なのでここに書いた。

create-react-appを入れてサンプルのReactコードを作る。

$ npm install -g create-react-app

以下のコマンドでサンプルプロジェクトがスグにできあがる。

$ create-react-app my_test_app
  :
  :
 We suggest that you begin by typing:

   cd my_test_app
   yarn start

 Happy hacking!

$ cd my_test_app

$ npm start

npm startをした時点でhttp://localhost:3000/にアクセスすると以下のReactサンプル画面が見える。
f:id:tango_ruby:20171009052737p:plain:w300

buildをしてbuildフォルダを作る。

$ npm run build

GCPにログイン。Google Cloud Strageで新規バケットを作成する。Create Bucketボタンを押す。
f:id:tango_ruby:20171009053153p:plain

お好きな名前を付ける。
f:id:tango_ruby:20171009053352p:plain

上部のUpload Folderボタンを押して、先ほど作成したbuildフォルダを選択し、アップロードする。
f:id:tango_ruby:20171009053459p:plain


以下のapp.yamlを作成する。

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
  static_files: build/index.html
  upload: build/index.html
- url: /
  static_dir: build

作ったapp.yamlファイルをバケットにアップロードする。結果として以下の状態になる。
f:id:tango_ruby:20171009053800p:plain

上部のActive Google Cloud Shellボタンを押すと、シェル・コマンドの入力画面がChromeの下に出てくる。
f:id:tango_ruby:20171009053842p:plain

以下のコマンドをGoogle Cloud Shellで実行し、フォルダを作成、シンクロさせる。

 $ mkdir my-test-app123
 $ gsutil rsync -r gs://my-test-app123 ./my-test-app123

全てが正常に行われていると作成したフォルダ内にapp.yamlとbuildが転送される。

$ cd my-test-app123/
$ ls
app.yaml  build

Google Cloud Shellのプロジェクトフォルダ内で以下のコマンドを実行してデプロイする。

$ gcloud app deploy

 [1] europe-west2  (supports standard and flexible)
 [2] us-east1      (supports standard and flexible)
 [3] us-east4      (supports standard and flexible)
 [4] asia-northeast1 (supports standard and flexible)
 [5] australia-southeast1 (supports standard and flexible)
 [6] southamerica-east1 (supports standard and flexible)
 [7] us-central    (supports standard and flexible)
 [8] europe-west3  (supports standard and flexible)
 [9] europe-west   (supports standard and flexible)
 [10] cancel

Please enter your numeric choice:  7

target url:      [https://my-test-app-182318.appspot.com]
 :
 :
Deployed service [default] to [https://my-test-app-182318.appspot.com]
You can stream logs from the command line by running:

最後に出てきたhttps://<アプリの名前>.appspot.comにアクセスするとデプロイした内容が見える。

もっといい方法をご存知でしたらコメントください。

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで

tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com

「多様な意見」はなぜ正しいのか(著:スコット・ペイジ)書評と英語圏の労働環境に関する考察

「英語圏のエンジニア達は日本人のように長時間労働をしていない。彼らは日本のエンジニアの2倍かそれ以上の給料をもらっている。それでなんで会社が成り立ってるんだ!?」という疑問は英語圏で働き出してからずっとあったが、これという答えは見いだせずにいた。が、ついに本書によってその回答を得たようだ。

「多様な意見」はなぜ正しいのか 衆愚が集合知に変わるとき

「多様な意見」はなぜ正しいのか 衆愚が集合知に変わるとき

結論から言えばそのカギは多様性にある。

多様性という概念を本書では学者が書いた本らしく仮説を立て、その検証、測定方法、結果までが丁寧かつ論理的に記述されている。単なる感覚で「多様性って大事だと思うんだよねー」みたいな記述は一切無く、そこが本書の最大の価値となっている。

本書にもあった実験は実に興味深い。まず最初は最高のチーム作りの研究だった。とびきり優秀なトップ数パーセントの人達だけで作ったチームAと、その他大勢からテキトーに集めてきたチームBを構成する。両チームに同じプロジェクトを遂行してもらっていかにチームAが勝つかを測る実験だった。
しかし結果は何度も何度もチームBが勝ってしまうのだ。チームBの勝利データを無視する訳にはいかず、ずっと溜めていくとひとつの結論が出る。「ひとりひとりの能力は劣っていたとしても、それぞれのメンバーが持つ多様性がチームを勝利に導くになにかをもたらしているのだ」と。

もちろんプロジェクトの内容によっても違いが出るし、「多様性は能力に勝る」が常に起きるとは限らない。心臓手術をしてもらう際に、最高の心臓外科医を集めたチームAとパン屋、セールスマン、レースクイーンという多様性あるチームBとどちらに手術して欲しいか、となったらAであることは明らかだ。

本書ではどの様なケースが最も多様性が活かせるか、また活かせないのか、について細かく言及されている。

今の勤め先であるベルリンのITスタートアップのエンジニアチームは全員で6人。それぞれイタリア人、ロシア人、ポーランド人、インド人、スペイン人、日本人(私)という構成だ。これは私の勤め先だけが特別なのではなく、ベルリンにあるほぼ全てのITスタートアップがこの様な多国籍状態だ。シンガポールでも同じ。それを好むと好まざるとに関わらず、国際都市においては多様性が空気や水のようにそこにある。

かつて日本で働いていた頃のエンジニアチームは全員が日本人でその同僚エンジニア達と今ベルリンのITスタートアップで働いている多国籍チームの同僚を比較して、そこまで個々の能力が違うようには思えない。しかしチーム単位で比較した際にその生産性は多国籍チームの方に軍配が上がる。

会社運営において英語圏と日本の労働環境を比較すると英語圏では日本の数倍の生産性が無ければ成り立たない。単純に言ってしまうと、英語圏のITエンジニアに2倍の給料を払って、そいつらが夕方6時に帰宅して半分の時間しか働かない場合、その生産性は日本の4倍以上を確保してもらう必要がある。で、それが現に達成されているようだ。英語圏であることからマーケットがグローバルになり、利幅が大きく取れるとかなんとでも言いようはあるが、それでも釈然としない感覚があった。個々のエンジニアの能力については4倍も違う訳ねーだろ、と。

その答えのひとつとして本書が解説する「多様性」がある。だいたいITスタートアップにおけるプロジェクト自体が多様性を大いに活かせる場だったのだ。英語圏のITスタートアップはその多様性あふれるチーム構成から高い生産性を叩き出しているのだった。

また私自身の人材価値としてもコード書いてシステムを設計する技術と同じかそれ以上にヨーロッパ人には無い視点で、東洋文化をルーツに持つ人間から意見することに価値があったようだ。日本では特別でもない普通の人材でも遠くへ移動してしまえば希少価値のある人材になり、それが価値を生み出せる。

本書を通して私が考えた結論は以下の3つ。(本の結論ではない)

  • できるだけ自分と異なる人を尊重することで価値が出せる
  • できるだけ遠くへ行くことで価値が出せる
  • できるだけ人と違ったことをすることで価値が出せる

この本は読んだ後「あーそうですか」だけでは終わらない。読後に「では私はこれからどうするべきか」を考えさせる本だ。上記の私の結論とはまた違った結論が他の方が読めば出てくる気がする。久々に読後もあれこれと思考を巡らせることができる本に出会った。

「多様な意見」はなぜ正しいのか 衆愚が集合知に変わるとき

「多様な意見」はなぜ正しいのか 衆愚が集合知に変わるとき

The Difference: How the Power of Diversity Creates Better Groups, Firms, Schools, and Societies

The Difference: How the Power of Diversity Creates Better Groups, Firms, Schools, and Societies

tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com
tango-ruby.hatenablog.com

【読者質問 14】海外転職における年齢と実務年数

ご質問ありがとうございます。

海外転職する際の年齢と実務年数に関する質問をさせていただきます。

情報系学部出身の4大卒プログラマで海外転職を目指しています。
私は長らくSEをしていましたが自分で手を動かしコードを書きたいという気持ちが強く、2年ほど前にプログラマに復帰したため年齢の割にプログラマとしての実務年数が短い点が不安です。
コードさえしっかりと書ければ履歴書上の実務年数の短さが不利に働くことはないのでしょうか。
また、30代の中盤を越えているので海外転職するにあたって年齢がどうしても懸念材料になってしまうのですが、やはりこの年齢で初めて海外転職を目指し職を得るのは難しいのでしょうか。
よろしくお願いします。

ご質問のポイントを2点に絞って、実務年数の短さと年齢に分けて回答する。
結論から書くとどちらもそこまで気にする必要は無い。本当に気にするべきは「技術と英語」ただこれだけであって、年齢や実務年数では決してない。

まず実務年数から。
応募者選考の際に最も注視されるのは「技術レベル」。確かに参考程度には職歴を見るし、極端に短ければ「大丈夫かな?」と思われてしまうが、ご質問者さんは長いSE経験をお持ちなのでそこは問題にはならないだろう。

なぜなら海外にはSEにあたる職が無いので、そこはうまく英語履歴書を作ればいかにも長年コードを書いてた風に見える。言っておくが私は決して履歴書にウソを書くことをおすすめしているのではない。ウソは絶対に書いてはいけない。後でバレたりしたら訴訟もありえる。ただモノは言いようで、SEとしての職歴を英語でどう表現しアピールするかはその人次第なのだ。SEの職歴を「仕様書書いて、後はコードが書けるエンジニアに丸投げしてました」と書くか、「システム構築に従事しておりました」と書くかの違いだけだ。

技術面談でちゃんと証明できるだけの技術力さえあれば、実務年数など気にすることではない。

次が年齢。
こちらも気にする必要は一切無い。もちろん英文履歴書に年齢なんて書かないし、転職の面談で「年齢は?」なんて聞かれることは絶対にない。

だがそうは言ってもご質問者さんのおっしゃる「やはりこの年齢で初めて海外転職を目指し職を得るのは難しいのでしょうか。」と不安になる気持ちは痛いほど分かる。私も同じような気持ちだったからだ。いくら人から「海外転職に年齢はカンケー無いです」なんて言われても気になるものは気になる。どうしても気になってしまう年齢を気にせずに突破する方法は単純で、海外に出てしまえばいい。海外に出てしまえば年齢を気にすることがどれほど的外れかはイヤでも実感する。そこでまずは今スグに英文履歴書を作ってどこかの会社に送り付けてスカイプ面談でもしてみてはいかがだろうか。

どれほど人が年齢を気にせずに過ごしているか、の事例はニュージーランドでご活躍のはっしーさんのブログをご参考に。
海外転職して「挑戦に年齢なんか関係ない」って気づいた話 - NZ MoyaSystem

私自身が日本から最初の海外転職を目指しつつも年齢を気にしていた時の心情を振り返るとそこには変なプライドがあったのが分かる。「30歳を超えたら少なくともこれぐらいのポジションには付いていないと世間体が悪い」とかそんな発想だ。そういう変なプライドは自分では気付かないぐらいに周りの人を寄せ付けない雰囲気を醸し出し、新しい世界へ飛び込みにくくする。
変なプライドを捨て去って「とっくに30過ぎたかもしれないけど実績はこの程度しかないよ。でも今オレがやりたいのはこんな仕事だー」と開き直って自分をさらけ出したら、意外に拍手してくれる人も居るのだ。

海外に出て移住を繰り返すとそういう変なプライドがどんどん削ぎ落とされていくのが分かる。だいたい右も左も分からない土地でいきなり暮らすことになると、エエかっこしているヒマなんて無い。食料の調達から役所の手続きまで、よく分かってなくてカッコ悪くてもなんでもいいから、対処しなければならないことが山のようにある。そんな中でプライドを捨てて行動していると自然と手を差し伸べてくれる人が多いことに気付かされる。誰でも「オレ様は偉いのだ」とカッコ付けてる奴なんかより、七転八倒しながらもナニかやりたそうな奴の方が応援したくなるものなのだ。

年齢が重要視される日本社会の習慣から年齢を気にしてしまうのは仕方がないことだが、それを一旦置いて自分を客観視して、変なプライドや無意味なこだわりを持ってないか、と自問自答してみてはいかがだろうか。

ご質問者さんは情報系学部出身の4大卒プログラマでかつ長年のSE経験とあり、ITエンジニアとしての海外転職条件は完璧。ぜひ成功させてください。以上が「海外転職における年齢と実務年数」の回答でした。

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com