こんにちは!
SEプラス採用担当の鶴田です!
今回は、「SEプラスの技術スタック的な話」と題しまして、当社の開発方針や技術スタックについて紹介します。
目次
速さも大事だけど、セキュリティが担保されてこそ
からの、速さ
セキュリティと速さを両立するための技術スタック
PHP / Laravel
Vue.js
HTML / CSS
JavaScript / jQuery
MySQL
Linux / Apache
Git / GitHub
Docker / Docker Compose
最後に
関連記事
速さも大事だけど、セキュリティが担保されてこそ
システム制作から切っても切り離せないもの、それがセキュリティだと思います。
SEプラスでもここ数年、システムのセキュリティ対策はもちろん、全社員のセキュリティ教育により力を入れていて、情報システム担当でもあるMedia Team ジュニアマネージャーの松下から定期的に他社のセキュリティのインシデント事例の共有があったり、エンジニアメンバーから全社員に向けてOSやアプリのアップデートを定期的に促し、アップデートされていないようであれば直接理由を伺う……といったように、全社員がセキュリティ意識を保ち続けられるような努力をしています。
エンジニアメンバーは輪をかけてセキュリティに気を配っていて、ローカル環境が絶対に他者からアクセスされない状態になっているかどうか、ローカルにお客様の実際のデータを入れていないか、本番環境での作業を行う場合は必ず上長の承認が必要など、インシデントにつながるような事象を潰せるだけ潰す運用を行なっています。月1回全エンジニアが出社し、開発環境に問題ないかを点検する会も実施しています。
設計やコーディングでも当然セキュリティファーストで、エンジニアチームでは開発ポリシーを定め、基礎的なことではありますがフロントでのバリデーションとバックエンドでのバリデーションをどちらも必ず行うだとか、不要な半角記号は全部全角記号に置換するだとか、Laravelを用いているのでデータベースへのアクセスは絶対にEloquentを用いて行うとか(SQLインジェクション対策)、プロダクトエンジニアとして可能なセキュリティ対策は全て行うようにしています。
なのでもし、SEプラスへの転職を考えている方の中で、特定の制限がある中での開発に難しさや不安を感じる方がいらっしゃれば、ご自身にとってマッチした環境で働くことが大切だと考えていますので、その点を十分にご理解いただいた上で応募をご検討いただければと思います。
からの、速さ
セキュリティを担保する開発フローではありますが、とはいえSEプラスの売りは速いサイクルでの開発・リリースだと思っています。
これは規模が小さく、かつ意思決定の速い人が集まっているからこそできる体制かなと思っています。サービス運用の中で何かしらのシステムで解決できる困りごとがあった場合で、他の機能に影響がないような部分であれば、次の日にはそれに対する改修が本番リリースされているような速度感です。
SEプラスの事業にも、当然ながら競合他社が存在します。SEプラスのサービスを選んでいただくために、止まることなく常に変化し、日々お客様にとってより良いシステムへと生まれ変わらせていくことを目指して、エンジニアチームは業務を行なっています。
セキュリティと速さを両立するための技術スタック
といった感じで、セキュリティと速さという、どちらかを立てるとどちらかが立たなくなるような2つを求めて、しかも5サービスを4人のエンジニアで運用するといったことをしているので、必然的に学習コストが低く、柔軟に開発が行える言語をチョイスすることになります。
以下がe&TS Div.のサービスで用いられている技術スタックの紹介です。
PHP / Laravel
メインの技術スタックとなります。〜50人規模の企業だと、PHPかRubyをバックエンドで使っていますというところが多いかなと思いますが、SEプラスも例に漏れず、といった感じです。
先ほども申し上げた通り、学習コストが低くインターネットに参考文献も多いのがありがたいところで、やろうと思えばVue.jsと組み合わせてSPAを作ったりなどもできるので、なんだかんだで重宝しています。
PHPだけだと人によって書き方が異なることもあるかと思いますが、Laravelを使ってきっちりMVCモデルで開発をすることと、開発ポリシーで命名規約やバリデーション実装方法を明確に定めることで、誰が機能を実装しても概ね同じ実装となるように工夫しています。
Vue.js
こちらは全てのサービスで用いているわけではないですが、非同期でデータをとってきて画面にすぐ反映させたい、みたいなところで部分的に使うことが多いです。
現在運営しているサービスだとシームレスに画面を遷移させなければならない場面がほぼないためSPAを作るといったことはしていませんが、今後サービスでSPAの方がよいとなれば、そういった実装となることもあり得ると思っています。
HTML / CSS
技術スタックに書くのはどうかなと思いましたが、SEプラスはUI/UX含めてデザイナーがいないため、基本的にデザイン周りもエンジニアがやることになりますので一応記載しました。
お客様に提供して問題ないレベルのUI/UXデザイン力が必要になってきますので、日々デザイン系の知識も積極的に学んでいます。
JavaScript / jQuery
さきほどVue.jsの部分でも触れましたが、Vue.jsは全ての画面に取り入れているわけではなく、単純にJSで済むならJSで書いてしまうことがほとんどです。
jQueryに関しては今後なるべく使わないようにしていきたいと思っていますが、便利なライブラリが多いため、ライブラリを用いるという形でなんだかんだ使っている箇所もまだ多いです。
MySQL
データベースはオーソドックスにMySQLを用いていて、5系で動いているシステムと8系で動いているシステムどちらもあります。
普段の開発ではLaravelのEloquentを用いてSQLを組み立てているので生のSQL文を書くことはそこまで多くないのですが、調査などで本番サーバーのMySQLを操作することもあるため、必須の知識となります。
Linux / Apache
サーバーはオーソドックスにLinux / Apacheを使っています!普段の開発でサーバー周りを意識することはあまりないですが、新規でサイトを立ち上げる時や、サーバーでのログ調査など、最低限のコマンドや仕組み、confファイルの記述方法については知っておく必要があります。
Git / GitHub
バージョン管理・プロジェクト管理はGit / GitHubを用いています。基本的には1開発1ブランチとして、1人がブランチにpush、もう1人がプルリクエストを受けレビューを行うスタイルです。
同じプロジェクトで複数の開発が走ることも当然あり、同じファイルに変更が入ることもまた当然ありますので、最低限のGitの知識が必須です。
Docker / Docker Compose
ローカル開発環境はDockerを利用して構築しています。全エンジニア共通のymlファイルを使ってコンテナを作成しており、どのエンジニアの開発環境も同一にセキュアであることを担保しています。
最後に
e&TS Div.のシステムの技術スタック的な部分についてお話ししました。
今はこの構成でシステムを制作していますが、今後開発メンバーの人数が増えたり、サービスをご利用いただくお客様が増えれば、また新たな技術を取り入れなければならない日も来るかもしれません。
SEプラスではライブラリや言語の技術選定も、現場のエンジニアが提案することができます。
俺の考えた最強の技術選定を提案したい方、ぜひお待ちしています。
エンジニア面接では、実際にエンジニアチーム何名かがご面接を担当させていただきます。
ぜひお会いいただき、お互いのことについてお話しできれば嬉しいです!
最後までご覧いただきありがとうございます。
ぜひ次回のストーリーも楽しみにしてください!