バンクーバーの In-House Engineer として技術選定や採用活動をする際の判断基準と思うこと

Frog Advent Calendar 2018 3日目のエントリーです。このAdvent Calendarも早3年目、ここカナダ・バンクーバーでの生活もいよいよ私のキャリアの半分を越えようとしています。

2日目のsuigeさんの記事『バンクーバーで採用活動をやってみて、自分に活かせることがたくさんあるなぁっと思ったことまとめ』が、募集要項作成時や面接時の採用側の気持ちを上手くまとめられており、参考になりました。

今回はバンクーバーで技術選定や採用活動を行う立場から、その判断基準とやっておくと何かと可能性が広がるであろうスキルについて書いてみようと思います。

目次

In-House Engineer とは

in-house は社内の〜、組織内の〜という意味です。In-House Engineer は会社のシステムやツールを管理したり選定したりするポジションの人を指します。もちろんコードも書きます。「情シス」「院内SE」など聞いたことがある方は想像しやすいと思います。

このポジションの仕事は大きく分けて2種類です。

  • 技術を使った営業 (自社サイト運用など)
  • 技術を使った働きやすい環境づくり (社内インフラの整備)

自社のビジネスに大きく絡み、社員全員の仕事内容を理解してストレスを減らしていく非常に情熱的なポジションです。これらを成し遂げるために如何に効率よく立ち回るか、その過程で技術選定や採用活動を行います。

使われている技術 – インフラ編

私たちはなぜその技術を使っているのでしょうか。仕事では必ずその理由がなくてはなりません。え?上司が○○しか使えないから○○を採用しようとしてるって?そんな環境からは今すぐに逃げましょう。

ではバンクーバーの中小スタートアップ企業を対象に書いていきます。

小言ですが、サービス料金を調べると「$9.99」と書いていて、これがUS$なのかCA$なのか超わかりにくいですね。大体US$ですけど…。

インターネット

主な判断基準は以下のようにしています。

  • オフィスがサービス圏内である
  • 上りの通信速度
  • 料金

バンクーバーで想像以上に足かせになったのが「オフィスがサービス圏内である」でした。オフィスの移転を計画している場合はまずこの条件からクリアしていってください。

あとは当たり前ですが上り速度が重要です。が、この部分は完全に料金に影響を与えるので予算と要相談です。

メールサーバ / サービス

  • 既にMicrosoft製品を利用しているか
  • 技術に明るくない管理者でも簡単に操作ができるか

ここは Microsoft ExchangeG Suite (Google) の2強ではないでしょうか。機能面も操作性もイイ感じ。OSや言語もそうですが、Microsoft製品は統一すると非常に強い力を発揮します。日本ではレンタルサーバが提供しているメールを利用するケースも多いかと思いますが、こちらではあまり聞きません。

操作性を重視することで、Bus factor が 1 というヤバイ状態を避けます。後述の電話も合わせてこのリスクを気にかけます。最悪メールと電話があれば誰かしらに助けを求めることができるからです。

このBus factor(バス係数)は、何人が急にバスに轢かれたら開発の進捗やシステム等の機能が停止してしまうのか、という指標です。Bus factor 1というのは、それを管理している人が轢かれたらそれだけで全て停止してしまうということです。危険です。

メールについては、メールボックスでのフィルタ作成方法転送設定方法他のハードウェア(プリンタなど)との連携方法あたりを知っておくと良いでしょう。

電話

  • VoIPかどうか
  • 技術に明るくない管理者でも簡単に操作ができるか

IP電話はインターネット回線を提供している会社から出ていることが多いです。メールと同じく操作性を重視し、Bus factor 1を避けます。ブラウザから操作できると良いでしょう。

設定には ネットワーク の知識が必要です。

社内用サーバ

  • 自由度 (CI連携ができる、Dockerが動くなど)
  • 拡張性 (RAMやストレージの増減が簡単か)

顧客用サイトの運用を請け負っている場合は Amazon Web Services (AWS)Google Cloud Platform (GCP) で運用することがありました。その場合は使っているサービスで実現できないかを検討します。Amazon Lightsail とか。

もしくは、VPSホスティングサービスを利用します。日本向けのサービスは日本リージョンが使えるといいですね。

今の時代の中小企業にはビジネス側での制約がない限り、自社にサーバマシンを置くメリットはないです。

いずれの場合でも、SSH接続UNIXコマンドShellの知識が活きます。LinuxのRedhat系Debian系各1種ずつも触っておくと吉。

レンタルサーバ (社内用サーバがない場合)

  • SSH接続の有無
  • 料金

現在利用できるレンタルサーバはそこまで大きく機能の差がないように感じますし、大体が上のVPSホスティングサービスと同じ会社がやっています。日本でもさくらのレンタルサーバがそうですよね。なのでSSHが利用できる中で最も安いサービスを利用します。

候補としては GoDaddy, bluehost, SiteGround あたりが挙がるのではないでしょうか。

レンタルサーバの操作は cPanel を利用することが多いので慣れておくと良いと思います。

ファイル共有

  • インフラで使っているサービスが何か

Microsoft系であれば Microsoft OneDrive 、Google系であれば Google One 、どちらとも連携する必要がない / したくないのであれば Dropbox です。

グループウェア

  • 必要性
  • 操作性
  • 外部連携
  • ドキュメント管理機能
  • 顧客管理機能

グループウェアは会社の規模によっては不要です。今のところ、必要に応じて Outlook Calendar, Google Calendar や 自作アプリで済ませています。

チャットツール

  • 必要性
  • 外部連携

必要であれば Slack を使います。外部サービスとの連携などピカイチです。足りない部分はBot作成で行けます。

まさか、SNSのプライベートアカウントでチャットしているなんてことはないですよね?

使われている技術 – プログラミング編

自社Website

  • 操作性
  • レンタルサーバで動かせること (自社サーバがない場合)

編集者が必ず技術に明るい方とは限らないので管理画面は必須です。となるとやはり WordPress が楽です。テーマまでいじれるとできることが広がるので、WordPress周りの PHP が読み書きができるといいですね。

テーマが書けない場合はリニューアルのタイミングなどを見計らって、Frontだけコンポーネント指向のSPAを採用するなんてのもアリではないでしょうか。となるとPHPが読めて Vue.jsReact で表現できるとGood!

社内ツール

  • 開発速度

社内ツールは個人レベルで対応することが多いです。そうなると開発速度を何よりも重視します。利用者にヒヤリングして最適なソリューションを提示していきましょう。

「ファイル名を一括変換したい」などネイティブ動作が必要な場合は Electron、「Google Sheetsのデータを〜〜」な場合は Google Apps Script (GAS)Excelマスター的な立ち居振る舞い が光ります。特に、G Suiteを利用している場合はGAS一本であらゆる問題に対応できます。GAS上でReactを動かせるようにして簡易Webアプリを作ったりしました。ありがとう clasp

顧客管理ツールなど、利用者が多い場合は Webアプリケーション を作成します。APIを用意しておけば前述のSlack Botとも連携が可能です。

バージョン管理

  • 料金
  • クラウド / オンプレミス

GitHubGitLab か Bitbucket と言いたいところですが、Bitbucket を採用したことはありません。

開発メンバーの数が少なければ GitHub の Organization が使いやすいです。

採用したくなる能力・スキルセット

  • 公開しているサービスがあるか

中小に限らないかもしれませんが、正直なところ言語やフレームワークは何でもいいので、自分の考えや環境に足りないものを具現化できる人材が欲しいなあというのが個人的な感想です。もちろん何故その言語やフレームワークを選んだのかに対して納得できる理由も欲しいですが。

極端な例ですが、RubyでもNode.jsでもJavaでもPythonでもいいので、それぞれの言語でHello Worldだけできる人材が100人居るとします。その人たち全員が集まってもHello Worldしかできませんよね。できるだけ多くのことを深くできるに越したことはありません。

未経験の方や今後のスキルセットに迷っている方は、近年のメジャー言語であれば何でも構わないので簡単なWebサービスを作り切ってください。掲示板サービスなんてのはどうでしょう、色々な要素が入っていてイイです。

それでも一応オススメを挙げておくと、Frontendは Vue.js, React, jQueryの読み(書きは不要), Sass、Backendは Node.js(TypeScript) + Express + MySQLPython + Flask + MySQLRuby + Rails + MySQLPHP + Laravel + MySQL です。

さて、望ましいスキルセットをまとめると、「アイディアを具現化することができて、なぜその言語やフレームワークを選んだのか説明できて、どうやってその作ったものが動いているのかを把握している人材」となります。

あとはビザと相性とタイミングです。スキルセットと同じくらいビザプランニングも大事です。

In-House ポジションが向いているかもしれない方

以下に多く当てはまると、In-Houseポジションが向いているかもしれません。

  • 自社のビジネスに強い関心がある
  • 同僚が欲しいモノを感じ取り先回り行動ができる
  • 技術に興味関心がない相手にでもわかりやすく説明できる
  • 縁の下の力持ちとしてモチベーション高く振る舞える
  • ゲームで例えると、特化型ステータスよりバランス型ステータスが好き

海外で In-House Engineer として働いてみて

カナダの企業は日本にくらべて、会社の利益につながる部分の技術はなんでも積極的に採用してくれるような気がしています。そのため、会社の今のインフラを継続するだけでは御役御免になる可能性は大いにあるでしょう。

企業でもエンジニアでもそうですが、現状維持はダメです。結局、どのような仕事環境でもアンテナを高く張り、常に新しい情報を仕入れて現状を疑う姿勢が必要です。

なーんて偉そうに言ってますが、In-House Engineer は納得してもらえる理由さえあれば自分の好きな技術を導入していけるので、とても楽しいポジションですよ〜(๑•̀ㅂ•́)و