しぶとい起業家がイケてる会社の開発言語を調べてみたSmart HR編
世の中に会社は多くあれど、イケてる会社は多くない。
イケてるプロダクトを作るというのはそれはもう奇跡的なことだ。
というわけでイケてる会社のイケてるプロダクトがどうやって作られているかを探求することは学びが多いはずだ。
今は、プロダクト開発は単なるプログラミングでは無くなっている。
常にリーンで改善を繰り返すことがプロダクト開発の大前提だからである。
だから開発ができることとプロダクトが開発できることは全く異なる。プログラミングができてもプロダクトが開発できるわけではない。結局、開発という事自体はどんな言語でもやろうと思えばできるものだ。
言語を調べたところでそれ自体がすごいというわけではなく、その背後には言語やフレームワークの選択理由に考えを巡らせる必要がある。
言語やフレームワーク、開発環境を眺めながら実際にプロダクトを使ってみると、CTOやリードエンジニアがプロダクトに対して、どういう技術を使うのが適切か、何を考えたかを推察する一つの手がかりになるからだ。
ということで、今回は個人的にイケてると思ってる会社だけれども、多くの方も納得してくれる人もいるであろう企業のサービスの開発言語を紹介しようと思う。
第1回はSmart HRさんを取り上げたい
最近、電車の中吊り広告やCMでも見かける機会が圧倒的に多い。
人事労務管理のSaaSサービスを展開しているSmart HRさん。
創業者宮田さんにはお会いしたことは無いけれど、Onlabの卒業生ということで、私も少しだけOnlab参加企業に関わっていたから、先輩と言っても良いかもしれない。
今ではSmart HRという名前だが創業は決してスマートではなかった。そのあたりは沢山のインタビュー記事が出ていてものすごく共感するところが多い。
イケてるプロダクトというのはこうした苦心から生まれるのだと思えば、まだまだ自分はもがき足りないと思えるし、まだまだ諦めずに模索し続けても肯定される気がして元気が出る。
さて、Smart HRは何が良いかというと全て良い。
僕はもともとコーポレート側の人間としてキャリアをスタートしたからわかる。サービスはニッチに思えるかもしれないが裏方としてはこれを使うことで圧倒的に楽ができる。
年末調整も電子化が進む中でグッドタイミングでプロダクトがマッチしているところもイケてるスタートアップの成功要因の一つである。
その会社のサービスがどうやって作られるかを知るには?
アプリケーションというのは実はコードをユーザーが見ることはできない。
基本的にこちらからの入力は、そのアプリを運営している会社のサーバーで処理されて、答えだけが帰ってくる仕組み(バックエンド)だからである。
だから表面(フロントエンド)を見てもこのWebアプリがどういう言語で作られているかは完璧に知ることはできない。
でも、知ることはできる。
一つはその企業のエンジニア採用ページを見ること。
ここに募集が出ているエンジニアのスキルを見れば、
その会社がどういう言語を使える人を採用したいかがわかるからだ。
もう一つは、whatransなどのアプリを使ってみること。
このアプリはどういうフレームワークが使われているかをHTMLのソースコードから解析してくれる。
例えば今回のSmart HRさんではwhatransでこうした情報が見える。
フロントエンド(私達が見ている画面など)はJavaScriptという言語で作られている。ちょっとした動きやマウスオーバーの際の挙動もこういうプログラミングで作られている。
だからjQueryを使っていることやBootstrapを使っていることもわかる。
ただし、やはりこれではあくまで表側しか見えないという難点がある。
Smart HRの開発環境を採用ページから見てみた
whatransで見てJavaScriptとBootstrapを使っていることはわかった。
でも、サーバー側の開発環境や、サーバーで使われているNginxがどこで動いているのかとかそういうことはわからない。
しかし、ちゃんと採用ページには書いてあるものだ。
Smart HR
プログラミング言語:Ruby
Webアプリケーションフレームワーク:Ruby on Rails, jQuery, Bootstrap
インフラストラクチャー:AWS、CI、CircleCI
モニタリング:Mackerel, Sentry
プラスアプリ
プログラミング言語:Ruby, Node.js, TypeScript
Webアプリケーションフレームワーク:Ruby on Rails, React
インフラストラクチャー:Heroku, AWS、CI、Heroku CI, CircleCI
オーケストレーション:Terraform
モニタリング:Heroku, Sentry
この環境を見たときプロダクト開発のベストプラクティスだと感じた。
(Not モダンな開発)
メインのSmart HRの開発にはRuby on Railsを使っている。
このフレームワークはもう20年以上最前線で使われてきた。Web界隈では枯れたフレームワークと感じるかもしれないが、Twitterを始めとした超有名Webアプリの黎明期を支えたフレームワークである。
チュートリアルの親切さ、日本語ドキュメントの豊富さ、エンジニア層の厚み等を考えるとRailsという選択はありだったと思う。
そこにインフラとしてのAWSの盤石さ、CircleCIというコンテナの活用、デザインを支えるBootstrapが安定したデザインとユーザービリティーを作る。
このあたりはプロダクトの成功を第一に考えた布陣としてベストプラクティスと私も共感するところがある。
また、プラスアプリという別項目があるところもわかりやすい。
つまり、こちらはどちらかというとチャレンジするためのプロダクト開発である。だから技術的にもモダンである。Smart HRに付随するアプリ開発にはRubyだけでなく、JavaScriptベースのバックエンド開発ができるNode.jsや同じくJSと似ているTypeScriptを活用している。
フレームワークにはRailsだけでなくReactを使うというところはエンジニアの探究心をくすぐる選択である。インフラにHerokuを使うところはまさにプロダクト最優先であることを立証するかのようなムダのない選択である。
プロダクトが成功することを最優先できたから強い
なぜそこまで素晴らしいと感じるのか。
普通、開発すること自体を目的としてしまうことが多いからである。
当然プロダクト開発にはコーディングが必要なので開発することは悪ではない。しかし、最先端の技術を使ってみたいエンジニアや細部に拘りたいエンジニアの熱い思いに、技術の使い方がわからないCEOが動かされてしまうことは多々ある。
すると、本当にやりたいことはユーザーに喜ばれるハッピーなプロダクト開発なはずのに、いつの間にか細かい問題に終始してしまったりしてしまう。
確かにそういう細部にこそ神は宿るし、エンジニアとしてはそのほうが楽しい。でも、それではずっと誰にも使われないソフトができるだけである。
僕から見るとそうなりにくいように技術が選定されている。Railsをバリバリ使っているところは開発で躓く要素をできるだけ減らしつつ、安定して稼働させるためには絶妙な選択だなと感じるし、現実にすばらしいプロダクトを送り出している。
ただ、それだけではなくエンジニアの腕の見せ所としてモダンな開発にも挑戦しつつ、でもそれもまた将来主流になることが期待されるフレームワークで地に足ついた選定だと感じさせる顔ぶれである。
将来メインのプロダクトもReactに移行することになるのだろうが、その移行も社内に十分知見が貯まるようにプラスアプリでトライしつつ行っていくという流れがよく分かる。
プロダクトの成功を最優先にする戦略を感じさせるまさに素晴らしい技術選定であり、エンジニアが広い視点で学ぶことのできる会社だと感じる。
ぜひ、興味のある人は応募してみてはいかがだろうか?
この記事が気に入ったらサポートをしてみませんか?