「技術者としてこのままで大丈夫か」 鉄道システム開発者が“知識0の状態”でWebエンジニアに転身した理由

ITエンジニアと一口に言ってもフロントエンド、サーバーサイド、インフラ、QA、マネジメント……など、ポジションやキャリアにはさまざまなルートが。使う技術やツールはもちろんのこと、面白さや考え方も異なります。「なぜ、どういうきっかけでその道に進むことになったのか」「何がやり甲斐なのか」には、人それぞれの答えがあるものです。

いろいろな人から自分なりのキャリアの選び方を伺うことで、テックの世界の知見を共有する本企画。今回はユニークビジョン株式会社 山本一将さんが、知識0の状態からWebエンジニアの世界に飛び込んだ理由をLT形式で発表していただきました。

自己紹介

ユニークビジョン株式会社 テックリードの山本一将(@kyamamoto9120)と申します。Xでは“焚き火を愛するエンジニア”と名乗っています。

私は、情報系の大学で4年間コンピューターサイエンスについて学んでいました。将棋AIの開発をしていて、20歳のときに大学のチームとして世界大会に初出場し、7位入賞と新人賞を受賞しました。

卒業後は、鉄道の運行管理システムを作る会社に就職。そこでさまざまな経験を積み、成長させてもらいました。一方、趣味として続けていた将棋AIの研究では、世界コンピュータ将棋選手権で世界9位になりました。

しかし、28歳のとき、まったく知識がない状態からWebエンジニアに転職することを決意し、現職となります。大変な思いをしながらやってきたんですけれども、31歳で社内MVP表彰を受け、今年はLINE API Expertの認定を受けることができました。

言語遍歴

どういう言語遍歴をたどってきたかについても説明します。

将棋のAIは計算速度がすごく求められる世界で、C/C++という低レイヤーで動く高速な言語を使って開発をしていました。その技術を生かした仕事がしたいなと、組み込み・制御系の鉄道運行管理システムの仕事を選びました。

Javaや、今はもう聞かなくなりましたがVB6、VB.NETを使うこともありました。また、VB6から移行して、C#のデスクトップアプリを作ることもありました。データベースはほとんど触っていませんでしたが、Microsoft SQL Serverを使っていた時期もあります。

このあたりが1社目の主な言語です。

そこから転職してWebエンジニアになり、技術要素がガラリと変わりました。バックエンドにはRubyやRustなど、フロントエンドはHTML、CSS、JavaScript、TypeScript、データベースはPostgreSQLという風に、今まで使っていた言語をまったく使わないような環境に転職をしました。なぜこのような言語遍歴になったかを掘り下げていこうと思います。

「技術者としてこのままで大丈夫か」という不安

大きなライフイベントが22歳、24歳、25歳のときに起こりました。

1つめは2011年、22歳のときの就職活動です。2008年にリーマン・ショック、2011年に東日本大震災があり、当時の大卒の求人倍率が1.28倍。「第二の就職氷河期」と言われていました。

そんな状況下での会社選びということで「給料高くて安定している会社」「すぐに自分の能力を活かして活躍でき、出世できる会社」がいい。それから「一人暮らししたいな」という気持ちがあり、鉄道運行管理システムの開発の仕事に就きました。

2年目(24歳)のときに大きなミスをしてしまい、仕事に対する意識が変わりました。セキュリティ、安全に動くバグのないシステムの大切さに気付き、ミスを生まないためのコミュニケーションの取り方などについてすごく考えるようになりました。あと、意味がないと思っていたコードレビューにも真剣に取り組むようになりました。

価値観が大きく変わったんです。プログラムを書くことを楽しむというより、仕事としてしっかり納めることへの責任感が生まれました。

この後は順調にキャリアを重ねていき、研究開発にも携わりましたし、北海道新幹線・北陸新幹線の開業に関与したりと、かなり貴重な体験をさせていただいたと思っています。

プライベートでは、25歳のときに世界コンピュータ将棋選手権で世界9位になりました。2017年には結婚して家も買いました。

恵まれた環境だったのですが、「技術者としてこのままで大丈夫か」という不安が出てきました。贅沢な悩みなんですけれども、「ずっとこのまま仕事を続けていると、この会社にいつづけるしかできなくなっちゃうんじゃないか」と危機感を感じはじめました。

「現状に満足していいのか?」「今の会社で給与テーブルを見ながら人生設計するのも悪くはないけど……」と考えるなかで、チャレンジを重視して転職を決意しました。

知識0の状態でWebエンジニアに

転職活動のなかで、Webエンジニアについて知りました。Webの世界はまったく分からず、「名前しか知らない技術要素を使っているぞ」「これ本屋で見たことあるぞ」と驚きの連続でしたね。多人数で長い期間をかけて作る鉄道システムとは対照的に、Webの世界が急進的に進んでいくところにも面白みを感じました。

弊社はSNSマーケティングツールを作っているのですが、そのSNSマーケティングについてもまったく知りませんでした。しかし、「なるほど、これは面白そうだな」と思って飛び込みました。

ここからが大変でした。「HTTPとは何か」のような、みんなが当たり前のように知っていることも全然知らずに、Webエンジニアになってしまったからです。とにかく技術要素の多さに驚きました。

ブラウザのこともサーバーのことも知らないといけないし、プロトコルも抽象化されていて複雑で、言語、フレームワーク、フロントエンド、バックエンド……それにSQLが何よりつらいなと。「みんなこんなの書いてるんだ」と思いながら開発していました。当時はMacを触ったこともGitも使ったことなくて、AWSも分からんぞという状態で、今振り返っても本当に大変だったなと思います。

一方で、組み込みや制御系鉄道システムの経験が役立つことも多くありました。仕事の進め方は変わりませんし、情報の整理の仕方、設計テストの考え方は、むしろ鉄道システムの方が洗練されていたと思います。

新しい技術へのキャッチアップもスムーズに進められました。私は将棋AIの世界選手権のために新しいことを学びつづけてきた経験があり、キャッチアップも追いついてしまえば見方が変わるだけかな、という感覚でした。

何より低レイヤーの知識はすごくアドバンテージだったなと。前職では、通信といえばせいぜいTCP/IPくらいまで。もっと低いレイヤーでの通信もたくさんやっていて、そういう世界のデバッグもできる点は、Webエンジニアとして役立ちました。

そして前職で大きなミスをしたことは、本当に役立ちました。Webの世界でも、セキュリティや安全性は重視されますから。

Webエンジニアの魅力・やり甲斐

Webページがあって使う人がすぐそばにいて、ビジネスがすぐ近くにある。自分の開発したものがビジネスに与える影響を直接感じられるのは、すごく面白いと感じました。マーケターのアイデアをじかに感じられることも魅力だと思っています。

私がビジネス的にインパクトのある機能を初めてリリースしたのは、入社の3カ月後でした。こういうスピードの速さもWebエンジニアならではの面白さだと思います。

あとは技術トレンドの進化スピードも非常に面白いところ。キャッチアップしつづける体力と審美眼が求められるんですけど、コミュニティがそれを助ける良い働きをしてくれているなと感じています。私はコミュニティに助けられながら成長していって、入社から3年たってようやく社内MVPであったり、コミュニティから認定を受けたりというような活躍ができるようになりました。

現在はマネジメント寄りで開発はほとんどせず、EMのような動きをしています。目標は、どんどんビジネスを加速させるエンジニアになること。臨機応変に対応できるエンジニア組織を作るためにできることは何か、と考えているところです。

質疑応答

質問:大きなミスを経験すると、そのショックから立ち直れない人もいます。仕事を辞めなかった理由は?

山本:個人的な特性が大きいと思います。

大きなミスをした後、私は先方に謝りに行きました。「とりあえず調査しましょう」というときに、向こうの偉い人からすごく怒られました。こういった体験はメンタル的に苦しく、仕事を辞めてしまう人もいます。

しかし自分の場合は、なんだかワクワクしてしまったところがあって。ちょっとドキドキして「よし頑張るぞ!」という気持ちになったんですね。

その後は、キャッチアップしなければならないことがたくさんありましたが、技術というよりソフトスキルの面が大きかったように思います。必要なコミュニケーションをどうやって取るのか。品質にまつわるプロセスはいくつもありますが、漫然とこなしていないか。ちゃんとその意味を理解できているか。何が求められているのか、きちんと意識できているか。そういったところは、後々にも役に立ってくれたと思います。

「目的は、正しいソフトウェア、正しいアプリケーション、正しいシステムを届けることだ」というところに主眼を置いて仕事できるようになったのは、私にとって大きな変化でした。