RESTAR
Engineers
RESTARの
エンジニアについて
Culture
インターナショナル
RESTARのエンジニアチームには、様々な国籍のメンバーが在籍しているため、お互いの文化や価値観を尊重しています。お互いの違う考え方や価値観にふれることで考え方の幅が広がり、多様性を受け入れることでよりよい意思決定ができると信じています。
フラットな環境
マネジメントとの距離が近いため、いつでも相談したり提案することができます。 あなたがチームにとって有益な提案をして頂ければ、すぐにチームに反映されます。この環境を活かし積極的に提案しながら共にRESTARを成長させてくれる方を求めています。
細部にこだわる
品質は細部に宿ると考えています。短期的な利益のためにメンテナンス性の悪いコードを早くリリースするよりも、適切なコードレビューを行うことを重視しています。メンテナンスのしやすい高品質なコードでバグの少ない安定したサービス開発を目指しています。
オープンな議論
RESTARでは議論が活発に行われます。これは開発やリファクタリング方針の相談から社内のコーディングスタイルなど、大小様々なトピックについて議論をしながらお互いの意見交換をしています。自身の好みを押し売りするのではなく、チームにとって最適な選択肢を常に考えながら、建設的な議論を心がけています。
本当に必要な機能を作る
BtoB SaaSではクライアントからの機能リクエストを多くもらいます。しかしそのすべての要望に応えるわけではありません。一人のユーザーが喜ぶ機能よりも、より多くのユーザー体験が良くなる機能だけを実装するように細心の注意を払っています。常にシンプルで使いやすい機能を提供し続けます。
Working
Style
フルリモートワーク
フルリモートワークで自由に働くことができます。関東以外に在住しているエンジニアもいて住む場所にとらわれず、通勤のストレスがなく時間の融通が効きやすい環境であなたにとって、働きやすい場所で働くことができます。
フレキシブル
フルフレックスであなたにあった働き方ができます。有給休暇に加えて家族の看病も含め病気や怪我により働けない場合の休暇もあります。必要に応じて仕事を休むことができるので、家庭を持っている方も安心して働くことができます。
働き方の見直し
チームや会社の規模が大きくなるにつれて、我々は変わっていく必要があります。働き方を最適化するために、約2週間に1度必要に応じて定例ミーティングの見直し等を行っています。常に現在のチームに合わせて働き方を変化させています。
Tech Stack
RESTARでは以下の技術スタックを採用し、開発を行っています
About Elixir
Elixirを採用した4つの理由
Elixirは、明日の課題に立ち向かうための実用的なWebエンジニアのためのモダンなプログラミング言語です。
RESTARでは、Elixirを使用することで、トップクラスの生産性と開発者体験を享受しながら、優れた機能と堅牢な技術プラットフォームを構築することができます。Elixirのおかげで、私たちはビジネスロジックという重要なことに集中することができます。
Elixirが私たちにとってベストな技術的選択である理由を簡単に見てみましょう:
- 優れたエコシステムと開発者体験
- 進化したフォールトトレランス(耐障害性)
- より少ない労力でより多くのアウトプットを
- トレードオフのないパフォーマンス
1. 優れたエコシステムと開発者体験
Elixirは確かに素晴らしい言語ですが、他の要素と隔絶されているわけではありません。Elixirを評価するためには、ツールやエコシステムといった全体像を見る必要があります。Elixirは比較的歴史が浅く、主流のエコシステムに比べて明らかにパッケージ数が少ないにもかかわらず、非常に質の高いエコシステムを提供しています。豊富な標準ライブラリ、mixビルドツール、ExUnitテストフレームワーク、フォーマッタ、ドキュメントなどなど。そして、残りのエコシステム、特にPhoenixフレームワークはElixirそのものと同じくらい洗練され、よく文書化され、よく考えられた素晴らしいライブラリをたくさん提供しています。他のエコシステムと比べると量は少ないかもしれませんが、その分質が高いです!
Elixirコミュニティのもう一つの素晴らしいところは、全体的に成熟していて実用主義であることです。ガイドラインに従う傾向があり、何かをするとき優れた方法があります。
2. 進化したフォールトトレランス(耐障害性)
Elixirの基盤となっているErlang VMは30年以上の歴史があり多くの通信会社やゲーム企業等に採用され高い信頼性のあるVMです。すなわちElixirはゼロから設計し開発された言語ではなく、通信業界で何十年も実証されてきた確かな技術をもって構築された言語です。
Erlangのセールスポイントの1つは高い耐障害性です。Erlang VMの設計は通信事業における高い耐障害性へのニーズに基づいています。その結果、障害とは縁遠い、大きな負荷がかかっても安定して稼働し続けることができる強固なプラットフォームが誕生したのです。Erlang VMを利用する限りサーバーのクラッシュやイベントループのスタックに注意を払う必要もありません。 Erlang VMの素晴らしさについてもっと知りたい方はSaša Jurićの講演をご覧ください。
https://www.youtube.com/watch?v=JvBT4XBdoUE
3. 少ない労力でより多くのアウトプットを
Elixir本体とPhoenixに含まれるすべてのモジュールのおかげで、古典的なスタックではより多くのモジュールを必要とされるような場合でも、より少ない可動部品でより多くのことを達成することができます。私たちは、スタックをシンプルにすることに大きな価値があると考えています:
- 開発者として、私たちは常に複雑さと戦っています。しかし、多くの場合、私たちのツールは時に妨げとなり、さらなる複雑さをもたらしています。Elixirではそのようなことはほとんどありません。シンプルに保つことで私たちの生活はより簡単になります!
- 依存関係が少ないということはエラーの根本的な原因が少なくなり、安定性が増すということでもあります(leftpadを思い出してください)。
- メンテナンスのオーバーヘッドを減らす
Erlang、Elixir、Phoenixはパワフルなビルディングブロックを提供します:プロセス、タスク/エージェント、チャネル...これらは同時実行、リアルタイムシステム(ウェブソケットはこんなにシンプルではありません!)、フォールトトレランスのような難しい問題を推論するためのシンプルなメンタルモデルを保つのに役立ちます。
4. トレードオフのないパフォーマンス
RESTARのプラットフォームのオリジナルバージョンはRubyで書かれており、パフォーマンス上の問題を抱えていました。最適化を続けたり、より大きなサーバーを購入することは技術的には可能でしたが、必要な労力はあまりにも重要でした。Elixirでは、パフォーマンスについて心配する必要はほとんどありません。スケーラビリティやサーバーコストを気にしたり、パフォーマンス調整に貴重な時間を費やす代わりに、重要なこと、つまりビジネス価値を高めることだけに集中できます。
とはいえ、もしパフォーマンスしか気にしないのであれば、私たちはみんなCやアセンブリでコーディングしていることでしょう。Elixirの素晴らしいところは、気をつけたり何かを犠牲にしたりすることなく、すぐに素晴らしいパフォーマンスを発揮してくれることです。まるでケーキを食べているような気分ですね!