1
/
5

動きの早い会社の中で、エンジニアが楽しく開発できる環境をつくる

個性豊かなユニークビジョン社員の入社に至るまでの経歴や、どんな想いをもって日々の仕事に打ち込んでいるのかなどをご紹介する「ユニークビジョンではたらく仲間」。
今回は、ユニークビジョンのエンジニアとして活躍している安谷 尚人に話を聞きました。

大手メーカーでのモノづくり系から「技術」を軸にweb系へ転職

前職は自動車技術を主とする大手メーカーに新卒で入社して、自動運転用のレーダーの生産技術に関わっていました。
その中でもセンサの出荷検査の工程に携わっており、量産用の検査設備のコスト低減と検査時間の短縮に取り組んでいました。
実際の生産ラインにも度々足を運び、現場で働く方々ともコミュニケーションを取っていましたが、
工場の班長の方が高い品質を意識したチーム作りをしていたことが印象に残っていますね。

仕事をもっと効率的に回していきたいという思いがあったのですが、10 万人規模の大きな会社だったこともあり難しいことが多かったです。
自動車は製品サイクルが長く、次の世代の製品に移るまで 10 年近いサイクルを持つこともあります。
一方、自動運転で注目されているセンシングの分野はもっと早いサイクルで回っており、
量産体制に入った時には生産時よりもずっといい技術が出ていたり、仕事の流れをもっと速くしないといけないと意識させられることが多かったですね。
部署移動の話もありましたが、せっかくなら社外に出て新しいことができたらと、転職を決意しました。

転職先はプログラミング言語で選びました。
元々プログラムを書くことは好きだったので、好きなことができるようにプログラマーでの転職を考えていたのですが、その時興味が深かった Rust を条件に含めて検索したら、3 社しか見つからなかったんです。
その中でユニークビジョンが一番気にいって、話を聞く中で事業内容や上下関係のない社風に興味があったので入社することにしました。
web 系の実務経験はありませんでしたが、やればなんとかなるだろうと思っていたので、特に不安もありませんでした。

エンジニア目線でより良い環境・より良い品質を追求する活動に力を入れる

ユニークビジョンに入社して 8 か月ほどは、SNS 総合管理ツール Beluga のバックエンドの開発を担当していました。
Beluga は SNS アカウントを運用する企業の担当者の方に使っていただくツールですが、簡単なキャンペーンを実施できる機能も付いており、そこに新機能としてキャンペーンで当選した賞品の配送や問い合わせ情報なども管理できる「事務局機能」を追加開発しました。
私は SQL 設計の最後の方から参画し、そのまま開発を進めたので、比較的最初のタイミングから関わっていましたね。SQL はもちろん知ってはいたものの、業務として書いたのは初めてでした。
その後は 4 か月ほど Beluga の本体側の開発に移り、キャンペーンの当選者連絡に用いる DM 一斉配信機能のパワーアップや、事務局機能を LINE と連携できるようにする新たな機能開発などに携わっていました。

今は、Twitter 上でキャンペーンを行う仕組みの Beluga キャンペーンにアサインされています。多くの案件はお客様とユニークビジョンのディレクターで進めていくことができますが、都度プログラムを書く必要のある仕組みや案件も存在しているので、個々の案件対応にあたっています。
配属されてから聞かされたのですが、 Beluga キャンペーンをより効率的に運用できる仕組みを整えるために参画する運びになりました。
今は案件ごとにエンジニアの工数が多く取られているのですが、ユニークビジョンが行っているキャンペーンの抽象化をして改善すれば、より早く、安全に、キャンペーンを立ち上げることができます。
今は案件対応を行いながら、より生産性の高い案件対応をする仕組み作りも並行して進めています。

前職は具体化することが強い会社だったこともあり、ユニークビジョンの面接の場で何度も「抽象化していきたい」という言葉を出していたようで、代表の白圡さんは私に対してその印象が強かったそうです。
なので今の仕事をいただいたのかもしれませんね。

本当は抽象化と具体化のバランスが大事だと考えていて、どちらか片方だけに偏りすぎるのではなく、状況に合わせた落としどころを探していくのが重要だと考えています。
今は Beluga キャンペーンでその落としどころを考えているところですね。

ユニークビジョンには部署がなく、プロジェクト以外の仕事はそこに興味のある人や出来る人が横断的に集まって担当する「ワーキンググループ」という働き方があります。私は開発方法論、DevOps のワーキンググループに参加しています。

開発方法論のワーキンググループは、開発全般のことを考えて、もっといい方法がないか検討するチームです。技術選定などもありますがもっと広く開発のことを見ていて、会社で働いているエンジニアが快適に・効率よく開発できる環境を、エンジニア目線で考えています。

DevOps のワーキンググループは「サービスを早くお客様に届けるために」という観点でより良い製品を開発する方法を考えるチームです。
今は各プロジェクトがリリースまでにどのくらい時間をかけているのかを計測・可視化するところを進めており、次のステップとして計測結果をもとにプロジェクトのリリースサイクルを短くする対策を行って行く予定です。

私の理想は、プロジェクトの担当をしているエンジニア自身が、変更したコードによるデプロイ時間への影響をフィードバックとして受け取り、自分たちで改善できるチームにすることなのですが、CTO の青柳さんには「まだまだ先だ」と言われながらやっています。
単純に考えれば、リリース時間が伸びた原因を知っているのは変更を加えた当人であるのだから、リリース時間が伸びてしまったことをチームにすぐに教えてくれる仕組みがあればいいと考えています。
今は、そういったチームの下づくりのために視覚的にリリース時間を見られる仕組みづくりに取り組んでいるところですね。

また、正式にはワーキンググループではないのですが、準ワーキンググループのような立ち位置で存在している SQL ユーザーグループという有志のチームにも参加しています。
ユーザーグループでは開発方法論ワーキンググループと逆で、言語などのくくりを決めて有識者を集める形を取っていますね。
全社でのノウハウ共有を進めたり、ユニークビジョンで問題になっている言語上の課題と、その解決策を話し合っています。

直近では、弊社で主に使用している PL/pgSQL 用の Language Server を開発・公開しました。

ユーザーグループには社内でも技術力の高いエンジニアが集まっているのですが、共通認識として「 SQL の開発はコード上の問題が発覚するのが遅すぎる」という考えを持っていました。
TypeScript や Rust での開発を思い浮かべてほしいのですが、VS Code のようなエディタでコードを書いている途中の段階で、文法の問題や未使用/未定義の変数を検出できます。

一方で、 SQL を書いているときにはメモ帳で仕事をしているようなストレスが常にあり、より快適な開発環境を求めていました。
議題の一つとしてユーザグループ内で議論を進め、別のメンバーが Language Server の基本となるアイデアを提案し、私が主導して開発を進めていきました。

早くみんなに使ってもらわないと生産性は上がらないので、昨年末にひとまず拡張機能をダウンロードできる状態で公開し、フィードバックを反映しながら改善を続ける形をとっています。
最近 GitHub 上にコードも公開したので、興味のある方は是非触ってみてください。

こういったユーザーグループの活動だけでなく、社内のエンジニア全体に環境や品質をもっと良くしていこうという姿勢ができているのは素晴らしい傾向だと思います。

高い技術力×強力なディレクター陣×フットワークの軽い環境

今関わっている Beluga キャンペーンで言うと、お客様のご要望にかなり精度高く応えられるようになっています。それは技術的な面もありますが、ディレクター陣がかなり強力だからと考えています。
ユニークビジョンのディレクターは Beluga キャンペーンのシステムや、SNS の仕様などにとても詳しいです。案件を沢山こなしてきていることもあり、問題が起こりやすいポイントをよく把握しているんですよね。
自分たちエンジニアの元に話が回ってくるときにはそういったポイントを事前に考慮する必要がない状態にしてくれていることも多く、自分の知らなかった仕様が、知る間もなく完璧に回避され切っている印象です。

さらに素晴らしいのは、それが誰か一人だけというのではなく、ディレクターみんなが詳しいんです。こういった状態を理想としている会社は多くても、実際に成立できているところはあまりないのではと思います。
基本的にエンジニアはお客様と直接やり取りをしないポジションですが、このようなディレクター陣が間を取り持ってくれているので、お客様や案件との距離はとても近く感じますね。
それぞれのディレクターがそれぞれのエンジニアと個々に連携していける体制は、会社的にも強みだと思います。

ユニークビジョンは OPEN&FLAT を行動指針の 1 つとしていますが、先述のワーキンググループであったり目標管理メソッドの OKR であったり、新しい制度をどんどん取り入れている印象があります。
ワーキンググループの在り方としても、会社で生じた課題に対して策を講じるためのワーキンググループを発足させる、という形がベースにあるので、それも含めてアクションの回転が早いですね。

コロナ禍の対策として会社全体のリモート勤務を取り入れる中でも、なるべくオフィスでの業務と乖離しないように色々なリモート用ツールを試していましたが、その適応も早かったなと思います。

誰の意見もないがしろにされず話を聞いて相談に乗ってくれますし、必要性があってそれをきちんと伝えられれば、新しいことを始めるということにはかなり抵抗が少ない会社だと感じています。
声を上げやすく、それが拾われやすく、動きが早くて反映されやすいので、そういった意味で自由度の高い会社だと思いますね。

ユニークビジョンが主要言語に掲げている Rust も導入企業が少なく、業務の中で使われるのは転職の際にあまり見つからなかったように珍しいものです。
そのようにきちんと使えてメリットがあることを説明できれば、新しい言語や技術も取り入れていけるのは、エンジニアにとって良い環境だなと思います。

問題は、小さいうちに早く摘み取る

ユニークビジョンではサービスによっていくつかの言語を使っていますが、個人的な好みで言うと静的な型付き言語が好きです。何事もですが、曖昧であることよりも明瞭であることが好きですね。
プログラミングの書き方で気を付けていることは、他の人が見たときにすぐ定義を追えること、誤った利用ができないようにすること、エラーになるべく早い段階で気づける状況整備を重要視しています。

社内外の勉強会で何度も述べていますが、エディタの警告は常に 0 を維持した開発をしています。
例えば、もしプログラムを作り終わった状態で 1000 件のエラーが見つかったら、おそらく致命的なものだけ対応してリリースすることになるかと思います。
そして、システムを改善していく中でもなかなかエラーは減らず、むしろ増え続けていくでしょう。
そうなる前に、エラーが 1 件出てきたら 1 件潰す、ということが大事です。1 つを潰すだけならば、大きな工数になりませんよね。

PL/pgSQL Language Server のように、これが編集中に確認できるようになれば、開発スピードは劇的に上がると思います。

また、黙々と自分の仕事だけをするチームよりは雑談が自然と生まれるチームの方が働きやすいと考えています。なので、無理強いはしない範囲でチームメンバーをランチに誘っています。
チームが離れて仕事上の会話が減ってしまった社員とも、ランチを通じてコミュニケーションを図ることは重要だなと思っていますね。

個人的な今後の展望としては、ロボット系の出身なのでそういった分野にも関わりたいと思っています。
ロボット革命が来る!来る!と言われて、あまり来ていないではないか、といつも思っているのですが、現実の日常生活で使われるロボットの形には、すごく興味があります。

ユニークビジョンでも企業と個々人が繋がるという本質的な DX についてよく話に上がりますが、web の世界で人とどんどん繋がっていく中で、何ができるのかということも考えたりします。
人々が繋がるために新しいデバイスが出てくることもあると思いますが、その変化の中で、新しい利用方法を考えられるようにして行きたいですね。

ユニークビジョンの一員としては、今はやっぱりエンジニアがキャンペーンの案件ごとにプログラムを書いている部分を、どんどん減らせるようにしていきたいです。
大元の仕組みですべて対応でき、案件がエンジニア無しでも回り切るような基盤を築くことを今の目標にしています。

やはり、エンジニアは新しい機能開発などをしていく方が楽しいと思うので、後手に回るのではなく、新しいサービス展開に注力するための基礎を残していきたいですね。

これから仲間になっては欲しい人はどういった人か、と言われると、会社や製品をより良いものにできるアイデアを提案するだけでなく、それを実現できる人です。
提案は割とできることなのですが、実現するとなると難易度はぐっと上がります。
ですがそれはとてもやりがいのあることなので、それができる人、共感してもらえる人と一緒に働きたいですね。ユニークビジョンで提案を妨げられることはないので、それができる人はユニークビジョンに向いていると思います。

エンジニアとしては、目の前の事象だけでなく、何でそうなっているのかの本質や原理に近づこうとする人ほど向いていると感じています。
そういったところをきちんと考えられる人、考えて仕事をしている人はユニークビジョンにとても多いので、そういう方ほどマッチして働いていけるかなと思います。

<関連記事はこちら>





ユニークビジョン株式会社では一緒に働く仲間を募集しています
4 いいね!
4 いいね!
同じタグの記事
今週のランキング