linotice

linotice

2022.01.25

第11代プログラミング言語(JAVA)黒帯の高見拓也が語る──Javaを通して私が得たこと、ヤフーの開発環境にもたらしたもの

画像
ヤフーでは、エンジニアとデザイナーを含むクリエイターたちの才能と情熱を解き放つため、「黒帯制度」を設けています。これは、ある分野に突出した知識とスキルを持つそれぞれの分野の第一人者に、新たな活躍の場を提供するもの。第11代目に任命された黒帯たちに話を聞くシリーズ第1回は、プログラミング言語(JAVA)黒帯の高見拓也です。

高見のプロフィール画像
プログラミング言語(JAVA)黒帯 高見 拓也
COO メディア統括本部 統合プラットフォーム本部
「Yahoo!広告」における広告主、広告代理店が広告を出稿するプラットフォームの開発、運用を担当。また、プログラミング言語(JAVA)黒帯、Javaサポートチームのメンバーとして、全社のJava開発の支援を行っている。

ヤフーの開発言語がPHPからJavaに変わるきっかけを作った

──高見さんは2021年10月に第11代「プログラミング言語(JAVA)黒帯」に任命されました。自身のどんな知識・スキル、活躍が認められたのだと思いますか。

私は2012年に中途入社し、現在は広告主や広告代理店向けに広告予算運用を管理するプラットフォームの開発を担当しています。入社当時、このプラットフォームはPHPで開発されていたのですが、今後の安定性や継続性を向上すべく、開発言語をJavaへ移行するプロジェクトを立ち上げました。

評価された要素の一つは、Javaを標準言語にして、機能やフレームワークの標準化を進めてきたこと。もう一つは、こうした標準言語の転換をスムーズに進めるために発足した「Javaサポートチーム」。私も一員として、Java未経験のエンジニアに向けた研修のコンテンツを作成し、PHPのシステムをJavaに置き換えるための導入サポートをしました。このことも評価されたポイントだと思います。

任命が決まったときは喜びというよりも、まず身が引き締まる思いを抱きました。これからもいただいた「黒帯Yシャツ」に恥じないように、精進していきたいです。

高見のトーク中画像
▲COO メディア統括本部 統合プラットフォーム本部 高見 拓也

モダンな開発環境を目指したら、エンジニアの働き方改革にもつながった

──主要開発言語を変える決断は、そう簡単なことではないと思います。社内には多くのPHPエンジニアがいて、PHPで書かれたシステムがたくさんあった。そういった環境のなかで、開発言語をJavaに置き換えることを決めた理由は何だったのでしょうか。

ヤフーのように大規模なトラフィックがあり、それを安定的にさばきながら、随時新しい機能の追加やアップデートをしなければならないサービス、とりわけサーバーサイドの開発にはJavaが最も適していると考えたからです。

私が広告のプラットフォームを、PHPからJavaへ移行する開発プロジェクトに参加したのは、2014年。当時、これ以上トラフィックが増えたら処理しきれないのではないか、PHPよりJavaのほうが安定性は高いのではないか、といった議論がありました。

開発言語だけではなく、ヤフーのサービスを継続的・安定的に実現するためには、CI/CD (継続的インテグレーション/継続的デリバリー)という観点からも、開発手法をもっとモダン化したいというニーズもありました。

当時、PHPで主要に使っていたフレームワークは「Symfony」。これがソフトウエアを開発する際に、プログラムを分割せず、すべて同一のモジュールとして作り上げるモノリシックな設計になっていました。そのため、モジュールだけのテストがしにくいといった問題もありました。

さらには、テストのたびにデータベースサーバーやウェブサーバーが必要になります。コードを一つ直すたびに、サーバーにアプリケーションを置いて動かさなければいけない。サーバーにデプロイされるのを、エンジニアはみな夜遅くまでオフィスで見守っている状態でした。

ところが、Javaのフレームワーク「Spring Framework」を使えば、モジュール単体でテストを行うことができ、データベースがなくても手元でテストができます。「Spring Framework」はソフトウエア開発におけるコンポーネント間の依存性管理を行うDIコンテナですが、「こうしたツールを活用するためにも、Javaで開発したほうがいい」と、私も熱心に提案したのです。

高見のトーク中画像
──ひとつデプロイされるまで待つ必要もない。エンジニアの働き方改革の観点でも、Javaへ移行することで仕事の効率化が進んだということですね。

その頃はまだ全社的なシステムのモダン化が開始される前でしたから、エンジニアのタスクが楽になるというのは、やはりJavaへの移行にあたって強い口説き文句の一つになりましたね。

さらに当時の部長が、「市場価値の高いエンジニアを育成しよう」という方針で、「PHPだけでなくJavaも含めてほかの言語を知っておいたほうが、ヤフーのエンジニアの技術力は向上する」と、訴えていました。

つまり、他言語を習得することが、自分の市場価値を上げることにもなる。トップがそういう考え方をする人だったので、少なくとも私たちの部署だけでも、どんどんモダン化を進めていこうという流れのなかでJava移行プロジェクトは進んでいきました。

単にメリットを挙げるだけでは、エンジニアはなかなか動きません。ですから、私も率先して手を動かし、たくさんのサンプルコードを書き、それを見せるようにしました。効率的な開発ができることが、コードベースで見えるようになると、エンジニアは心を動かされますからね。

──2017年にはシステム開発・運用のモダン化がヤフーの大方針になり、社内標準言語もJavaとNode.jsと定められました。Java未経験者に対するサポートはどのように行われたのでしょうか。

まずは、外部パートナーにも協力していただきながら、ハンズオン型の研修を始めました。最終的に、社内のほとんどのエンジニアがこの研修を受けることになり、ヤフーにおけるJavaの浸透が進みました。

高見のトーク中画像

なぜ、ヤフーはJavaによる開発が向いているのか

──プログラム開発言語としてのJavaにはどんな優位性があると思われますか。

一つは後方互換性ですね。ほかの言語に比べて、安心してバージョンアップをしやすい。Javaには、Java VM(Java Virtual Machine)という実行環境があって、これが実行環境に合わせたネイティブコードに変換して実行するので、一つのソースコードをどんなOSやプロセッサでも実行できるようになります。

クライアント、サーバーを問わず、アプリケーション開発に広く使用され、家電の組み込み技術としても使われるのはそのためです。世界で広く使われている言語ですが、それゆえ、Java本体のバージョンアップ時の後方互換性、古いシステムでもきちんと動くことを大切にしている言語なのです。

実行環境にあるJavaの標準的なライブラリに関しても、オブジェクト指向という考え方と後方互換を守りながら開発が続けられている。これがJavaの言語仕様の最も優れたところだと考えています。

PHPも後方互換を無視するわけではないですが、やはり言語仕様的に難しいところがあると思います。オブジェクト指向についても、PHPは最初からそれをベースに開発された言語ではない。やはり、Javaとは違いますね。

ほかにも、Javaはコンパイラ型なので、インタプリタ言語に比べて実行速度が速くて、大規模なデータ処理に向いていることや、実際に動作させなくても、プログラムのバグ検知がしやすいといった利点もあります。

オブジェクト指向ということもあって、ソフトウエアの構成として役割が違う部分を識別している。大人数のエンジニアが集まって分担しながら開発し、一定の品質を担保しなければならないヤフーでは、こうしたJavaのメリットが大きく生かせていると思います。

高見のトーク中画像

「車輪の再発明」に陥らないようにOSSの情報を発信

──プログラミング言語(JAVA)黒帯として、今後どのような活動をしていきたいですか。

一つは、ヤフー社内のJavaでの開発力をもっと向上させていきたいですね。プログラムの並列処理という点では、PHPはマルチプロセス、Javaはマルチスレッドで動かすことが前提になっています。現在Javaへの移行が進んできてはいますが、マルチスレッドの理解が浅く、アンチパターンに陥るケースがあり、コーディングの作法、アプリケーションの開発、テストの設計にいたるまで、まだまだ弱いところがあります。全社的にこの改善をリードするというのが黒帯としての第一の任務だと思います。

もう一つは、Javaは世界中で使われているので、便利なOSSのツールやライブラリがたくさんある。優れたものはどんどん採用しようということです。そうでないと、広く受け入れられていて確立されている技術や解決法を知らずに、同じようなものを一から作ってしまう、いわゆる「車輪の再発明」のようなことになり、それはあまりよくありません。

そのためにも私が率先して、有用なOSSの情報を社内にもっと発信していきたいと考えています。OSSを活用することで、無駄や非効率を省き、エンジニアがコーディングに注力できるような体制を作りたいですね。

今後、OSSの考え方や設計力を学ぶために、エンジニアを集めて優れたOSSのソースコードを読む勉強会などを開きたいとも考えています。

高見のトーク中画像
──黒帯には、社内だけでなく、社外にも技術情報を発信する役割も期待されていますね。

これまでは、私自身が社外のイベントで登壇する機会はありませんでした。しかし、これからは機会があれば、積極的に社外への発信をしていきたいと思っています。

一方で、私たちが「ヤフーの主要言語はJavaで、こんな開発もやっている」と発信し、それに惹かれてヤフーに入社するエンジニアが増えたとしても、彼らを失望させたのでは元も子もありません。

やはり、ヤフーのエンジニア力をJavaでさらに強くする。そういう土壌作りというか、内部体制の強化を前提にした情報発信が必要だと思います。私自身は黒帯を維持していくことにはあまり関心がなく、むしろ私を超える人材が育っていくことがうれしい。エンジニア全体の底上げを図り、ヤフーのエンジニアたちがチームとして強くなることが、なによりも大切です。

高見のトーク中画像

Javaは一つの手段。ヤフーの開発環境はこれからも変わり続ける

──これからもJavaにはこだわり続けますか。

Javaは単なる一つの道具にすぎません。プログラミング言語(JAVA)黒帯としてこういうことをいうのもなんですが(笑)。ヤフーとしてもJavaが絶対だと考えているわけではない。もっといい言語やツールが出てきて、それがヤフーのプラットフォーム構築や安定稼働・継続的な機能追加に資するものだったら、どんどん採用していきます。

例えば、KotlinやGoも面白いじゃないですか。標準言語はJavaだとしても、ヤフーでもKotlinやGoを使った開発も進んでいます。これからは「Javaの黒帯」を目指すとかではなく、自分は「初代のKotlin黒帯になる」という気概を持った人がどんどん入ってきて、ヤフーの開発環境をよりグレードアップしていってほしいですね。

ヤフーのエンジニアは、技術の保守化を嫌う人がほとんどです。Javaは安定後方互換が高いために、レガシー化しやすいことがデメリットとしてありますが、ヤフーのエンジニアは決してそれを許さないだろうと思います。

私自身もヤフーの開発環境をどんどん変えていきたい。これから入社する人たちも、ぜひ自分の経験を生かして、ヤフーを変えていってほしい。心からそう思いますね。

高見のトーク中画像

採用情報 公式SNSアカウント

このページの先頭へ