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

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

海外におけるエンジニアのキャリアをヨーロッパ貴族のお父様がタトゥー娘にメッセンジャーを送信するとこを想像しつつ考える

同僚のTはチェコ出身のカスタマーサポートを担当する女で、肩から手首にかけて派手な入れ墨があって、ヨーロッパ言語5ヶ国語を操ることができて、普段から各国の言葉で電話を通して客と対応していて、最初会った時は髪の毛の右1/3が緑色だったし、眉毛あたりにピアスがあって、スイスの寄宿舎学校で教育を受けたお嬢様で(他の同僚からの話ではかなりのお金持ちのお嬢様らしい)、アムステルダムで買ったお気に入りのコートの値段は3ユーロで、菜食主義者で、エコに関心があり、ヘビースモーカーで、レズで、カノジョがいる。国籍も職種も何もかも異なるTだが、私のエンジニアとしてのキャリアに素晴らしい影響を与えてくれている。

Tは電話でドイツ語を使って客と話をしながら、同時に私にSlack(チャットソフト)から英語で「すげーいいベトナム料理屋を見つけたんだよ。行くかよ?」と書いてきたりする。一体どういう脳の構造をしているのか。私も多少は英語ができるが、日本語で客と話しながら英語でチャットをタイプできる訳がない。

現在の勤め先であるベルリンのITスタートアップの客はヨーロッパ各国にまたがっている。するとカスタマーサポート部の人材に求められるのはなんといっても多言語を完璧に操れることになる。ヨーロッパには比較的そういう多言語話者は多いと聞くが、それでも人によってレベルに差がある。Tにはそういう多言語を操る才能があって、Tほどいろんな言葉を操れる人は社内にもあまり居ない。

Tの才能は認めつつも、なにより興味深いのはTの生い立ちや人生哲学だ。ランチの際に話をすると「なんじゃこいつは!?」と思うことが連発される。
T曰く「ずっと何十年も実の父とは疎遠状態だったのよね。なんか固い親父で私が同性愛者ってことを認めようともしないの。でも最近『ジョディー・フォスターがレズらしいな』ってFacebookメッセンジャーを送ってきたのよね。だからなに?って感じでしょ」
そんな話をされても私にとっては「?????」でしかない。ヨーロッパの貴族的なお金持ちのお父様がタトゥーとピアスの入った、よ~しゃべるレズの娘に「ジョディー・フォスターは。。。」ってメッセンジャーを入れているところをごく普通に日本で育った日本人の私に想像してみろ、と言われてもハードルが高すぎて想像力が追いつかない。

そんなTに先日言われたセリフ「(私の肩に手を置いて)おめーってホント興味深いヤツだな。私の友達を全部探してもお前みたいなヤツって居ないわー」って。おいT、それな、そっくりそのままオレがテメーに言いたかったセリフだ!おめーこそ日本的な基準で言うとまったくの規格外だ!

きっとアジア人で日本人というのがTには珍しいのと、仮に居ても英語でいろいろ意見交換ができるほどの機会が無かったのだろう。私の話なんて日本的な基準でいうとごく普通の話だ。それでも私がTの話を聞いて「なんじゃそりゃ!?」となるように、Tも私の話を聞いて「なんじゃそりゃ?!」となるみたいだ。

私はそういう時こそかつて日本でエンジニアをしていた時に「もうここから出る!」とその後のキャリアを海外で積むべく方向転換して良かったなーと思う。ある意味ではTのような人に出会うために国境を超えて移動している。

もしあのまま日本で暮らして日本人の同僚とずっと仕事をしていたら、慣れた環境での暮らしができていただろう。しかしTのような規格外ではあるが地球上に生存するチェコ人に出会い、直接に話を聞くようなことも無かったはずだ。Tに限らず世界各国から集まった同僚達は誰でもひとクセあるし、ちょっとした立ち話でも「あーそう!」な気付きを与えてくれる。生まれも育ちも異なる多国籍な人達と共に働くとはそういうものだ。

「こんな人も居るんだ」と感じることはとても大切。なぜならそれはそのまま自分自身の可能性を広げてくれるからだ。Tの話を聞いてTのマネをしようなんてこれっぽっちも思わないし、思えない。ただ目の前に自分がまったく知らなかった生き方をしている人と話すことで「そういうのもアリなんだ」と思えるようになる。海外で暮らすようになってその「そういうのもアリ」の範囲が急拡大した。どいつもこいつも日本的な基準から外れたところで元気に生きている。そんな人達のあれもこれも私の「そういうのもアリ」に入ってしまった。「そういうのもアリ」の範囲は自分の可能性にも置き換えられる。
自分のやること挑戦すること目指すことは自分の中にある「そういうのもアリ」から選択しているからだ。

可能性が広がるのは素敵なことだが、カンタンではない。だいたい私は年もアラフォーだし、エンジニアのキャリアとしても日本だったらそろそろお払い箱かな?みたいな状況だろう。しかし海外で「そういうのもアリ」の範囲が広がり、また今でも拡大し続けている状況ではそういう内にこもった発想にはならない。Tに限らず多国籍なエンジニア達と話すと、もっといろいろ知りたいし、いろんなことにチャレンジしようという気になるのだ。

今、私がなんとかこのブログでTを正確に描写しようとしてつらつらと書いているが、これを読んでいただいた方の「そういうのもアリ」が拡大することはきっと無い。ディスプレイに写ったブログの文章をただ読むとかではなく、人との出会いだけが「そういうのもアリ」を拡大する。

「小説は時間の無駄」と思って決して読まない私が唯一読む小説を書く作家、村上龍の歌うクジラより

生きる上で意味を持つのは、他人との出会いだけだ。そして移動しなければ出会いはない。移動がすべてを生み出すのだ。

今のところ家族も私もベルリンをとても気に入っているし、しばらくはここを拠点にヨーロッパを回るつもりだが、移動をやめるつもりはない。家族と共に日本→シンガポール→ベルリンと移動を続けて海外移住をして、これがどれほど楽しいかを知ってしまったからにはもうやめられない。

歌うクジラ(上) (講談社文庫)

歌うクジラ(上) (講談社文庫)

歌うクジラ(下) (講談社文庫)

歌うクジラ(下) (講談社文庫)


tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com


テキトー実装だとハッカー攻撃の恰好の的になりがちなRubyライブラリopen-uri

open-uriってちゃんと実装しないとなにかと危険な香りがしますな、という話。

module OpenURI (Ruby 2.4.0)

例えば外部のAPIを叩く必要があって

require "open-uri"

として使っていたとする。
フォームから受け取ったパラメータを入れてopen(なんやら)とする場合、そのままなんでもopen()の中に入れるとかなり危険。

例えばこれはフォームに入れたURLにしたがって、そのウェブサイトに行ってなんか取ってくる例。
f:id:tango_ruby:20170217044325p:plain
コードで言うとこんな感じ。

require "open-air"

class PagesController < ApplicationController
  def search
    @page = open(search_params[:url])
  end

  private

  def search_params
    params.permit(:url)
  end
end

おそらくこんなセキュリティー開きっぱなしな実装はしないと思うが、これをハックしてみるとこうなる。

f:id:tango_ruby:20170217044708p:plain
Rubyの場合、パイプを渡せばそのまま外部コマンドが実行できる。

| ls

結果がこれ
f:id:tango_ruby:20170217044835p:plain

ちゃんとlsコマンドの結果としてGemfileやらが見えてますな。ハッカー達がlsコマンドの結果を見ただけで立ち去る、なんてお行儀がいい訳ない。コマンドが実行できると分かればアレもこれもやられことは想像に難くない。

そこで対策としてparamsをチェックしましょう、と。でもそれが単に「正規表現とかでhttpを含んでいる場合だけopenを実行」だと突破はカンタン

このように||をつければOk
f:id:tango_ruby:20170217045100p:plain

| cat /etc/passwd || http://son_of_a_bxxxh

A || B の意味はAを実行してエラーが出た場合にだけBを実行しなさい、という意味。言うまでもなくコマンドの意図はhttp....は単なるURL風の見せかけで/etc/passwdを見せなさい、と。

その結果がこれ。
f:id:tango_ruby:20170217045601p:plain
見事に/etc/passwdが見えたりして香ばしい。

別にopen-uriがダメなライブラリと言いたい訳ではない。要はどんなライブラリでもその使い次第ということで十分気をつけましょう、と。

以前にこういうハッカー的なテクニックを使ったパズルを作ろうと考えていて、結果的にできたパズルがこれ。

tango-ruby.hatenablog.com

ご登録いただいた解答者数がやっと5300を超えたあたりか。。。もっと伸ばす方法ないのかなー。


tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

まともなコードが書けるエンジニアならどこでも海外移住できるという単純な理由

ベルリンでもシンガポールでもITスタートアップのエンジニアチームで一緒に働いたチームメンバーの中に現地人はひとりも居なかった。そういう現状からITエンジニアならほぼどこでも移住できますよ、という理屈になる。

現地人とはその国で生まれ育った人のこと。例えば現在働いているベルリンのスタートアップのエンジニアチームにはイタリア人、インド人、ロシア人、ルーマニア人、ポーランド人、スペイン人、日本人(私)が居る。つまり地元ドイツのドイツ人は居ない。シンガポールに居た時もそう。エンジニアチームにシンガポール人はひとりも居なかった。他の会社も探しまくればどこかには居るだろうが、全体的に数が少ないのは確かな話。

その理由はコンピュータ・サイエンスの基礎知識があって、かつまともにコードが書ける人なんてそうそう居る訳ではないからだ。国内人材の方が現地の言葉はもちろん習慣なんかも把握しているので、国内でエンジニアを採用できるんなら採用したいのが本音だろう。しかしとにかくエンジニア人材が慢性的に不足している。で、結局は世界中からコード書ける人を集めて来ることになる。たまたまコード書ける人がルーマニアやスペインに居たから呼び寄せた、というのが実情だ。

IT人材が不足しているのは日本だって同じ。それでもほとんどの日本のIT部門で働く人は日本人で構成されている。外国人を入れずにチームが満たされているのは、専門知識の無いITサラリーマンが多いため。
これはSEと呼ばれる人に多い(英語圏にSEにあたる職種は無い)。大学で経営学などを専攻していたが、たまたま入った企業で所属がIT部門になっちゃった。会社でSEの勉強して今は立派にSEやってます!みたいな人だ。いわゆる企業が「ポテンシャル採用」とか言って、現在はITスキルは無いかもしれないが入社の後しっかり学んでもらってSEとしてご活躍いただきたい、という仕組み。

こんな悠長なことやってる会社は海外には無い。
文系理系という区別に意味は無いと思うし、大学の出身学部によってその人の専門知識の全てが決まる、なんて思ってもいない。そんな偏った話ではなく、ここで指摘したいのは現状でスキルが無くても「ポテンシャル採用」って無理やり向いてないかもしれない人に社内教育っておかしくね?ということだ。そういう無駄な教育コストのしわよせは全てエンジニアの低い給与に跳ね返ってきてる。面倒くさいことしてないで国籍関係なくデキる人を呼んでくればいいだろ、と。

現在の勤め先に入社した初日のことだった。ヨーロッパで働くのは初めてだし「みなさんと仲良くできたらええな」とか思ってオフィスに入った。すると同僚のロシア人エンジニアNがよってきて「おー来たな。これ君のマックブックね。で、stagingサーバーにアクセスしたら404のエラーが返ってきて使えないんだよ。後1時間でリリースしたい機能があるんだけどstagingで確認できなきゃ本当に困るんだ。アクセス権はもう渡してるから至急にサーバーに入って治してくれ!俺は機能リリースの方で大忙しだし。あー自己紹介とかもういいから。ハヨしてハヨして!後1時間だー」これが初日に言われたセリフだった。

結局nginx設定にあったバグを見つけて治した。その間に「サーバーと言うものはだねー」とか「障害時の問題の切り分け方とはー」とか社内教育してくれる人なんて居ない。
入社=即戦力、が分かりやすく常識化している。
「毎日がこんなキリキリ舞いみたいなテンションで仕事するのはイヤだな」と思ったが、それはたまたま私の初出社とメディアのプレスリリースが重なっただけだった訳で、普段は普通のテンションで仕事している。

誰もがそうだが自分の能力を客観視して正確に把握することは難しい。そして日本でITエンジニアをやっているとその能力を世界標準で把握することはとてもとても難しい。日本のITエンジニアの虐げられ方が凄まじいからだ。日々サービス残業をして、なおかつ月末にもらう給料も「?」という金額だと、どうしても自分の能力を過小評価してしまう。「アタシがコードを書くことの価値はこの程度なのね(涙)」となってしまって当然だ。

こと海外移住に関しては技術を持ったエンジニア達が「いやー僕なんて海外でやっていけないと思います。」と過小評価して、その一方で何かの分野の専門知識の無さそうな自称ブロガーが「海外でも暮らせるぜ!なぜなら俺ってブログ書けるしよ」となりがち。現状はまったく逆。それが何の分野であれ専門知識こそが重要なのだ。

また「先進国だとビザや在住資格、労働許可が出ない、移民は制限してる」なんてどっかのブログやらの噂話を引っ張ってきて言う人が居る。しかし実情はハッキリしていて、ほとんどの国で専門技術があってしっかり稼げる人ならビザは出る。

今の時代のITエンジニアならば「技術+英語=ほぼどこでも移住できるチケット」の公式が成り立つのだ。

とっても単純で明らかなことなのになぜか日本の優秀なエンジニアに伝わっていないのが歯がゆい。あなたのその技術の価値はドルやユーロに変換すれば軽く年収1000万円なんか超えてるし行こうと思えば比較的カンタンに移住できますよ、と。

億万長者を目指すならスポーツ選手よりもエンジニア | BUSINESS INSIDER JAPANなんて記事もあることだし。

ツイッター芸人のメイロマさん曰く。


彼女のツイートの真意はともかくとして、「日本でフツーのサラリーマンやってる人」の範疇に「まともなコードが書けるエンジニア」というのは含まれていないと思われる。ちゃんとコードを書いてシステムを設計するということは まーまー価値のある仕事なんだし。
ポイントはその持ち前の技術に英語をプラスすること。ただそれだけ。

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com