1
/
5

SEプラスの技術スタック的な話


目次

  • そもそもまず何を大切にして開発をしているか

  • 速さも大事だけど、セキュリティが担保されてこそ

  • からの、速さ

  • セキュリティと速さを両立するための技術スタック

  • PHP / Laravel

  • Vue.js

  • HTML / CSS

  • JavaScript / jQuery

  • MySQL

  • Linux / Apache

  • Git / GitHub

  • Docker / Docker Compose

  • おわりに

  • 関連記事

そもそもまず何を大切にして開発をしているか

こんにちは!SEプラスでシステムエンジニアをしている山本と申します。
「技術スタック的な話」という題目でこの記事を書かせていただいていますが、それよりも先に、そもそも方針として、SEプラスのシステム制作で大切にしていることからお話しさせてください。

速さも大事だけど、セキュリティが担保されてこそ

システム制作から切っても切り離せないもの、それがセキュリティだと思います。
SEプラスでもここ数年、システムのセキュリティ対策はもちろん、全社員のセキュリティ教育により力を入れていて、情報システム担当でもあるMedia Team ジュニアマネージャーの松下から定期的に他社のセキュリティのインシデント事例の共有があったり、私から全社員に向けてOSやアプリのアップデートを定期的に促し、アップデートされていないようであれば直接理由を伺う……といったように、全社員がセキュリティ意識を保ち続けられるような努力をしています。
エンジニアメンバーは輪をかけてセキュリティに気を配っていて、ローカル環境が絶対に他者からアクセスされない状態になっているかどうか、ローカルにお客様の実際のデータを入れていないか、本番環境での作業を行う場合は必ず上長の承認が必要など、インシデントにつながるような事象を潰せるだけ潰す運用を行なっています。月1回全エンジニアが出社し、開発環境に問題ないかを点検する会も実施しています。
設計やコーディングでも当然セキュリティファーストで、エンジニアチームでは開発ポリシーを定め、基礎的なことではありますがフロントでのバリデーションとバックエンドでのバリデーションをどちらも必ず行うだとか、不要な半角記号は全部全角記号に置換するだとか、Laravelを用いているのでデータベースへのアクセスは絶対にEloquentを用いて行うとか(SQLインジェクション対策)、プロダクトエンジニアとして可能なセキュリティ対策は全て行うようにしています。
なのでもし、SEプラスへの転職を考えている方の中で、特定の制限がある中での開発に難しさや不安を感じる方がいらっしゃれば、ご自身にとってマッチした環境で働くことが大切だと考えていますので、その点を十分にご理解いただいた上で応募をご検討いただければと思います。

からの、速さ

セキュリティを担保する開発フローではありますが、とはいえSEプラスの売りは速いサイクルでの開発・リリースだと思っています。これは規模が小さく、かつ意思決定の速い人が集まっているからこそできる体制かなと思っています。サービス運用の中で何かしらのシステムで解決できる困りごとがあった場合で、他の機能に影響がないような部分であれば、次の日にはそれに対する改修が本番リリースされているような速度感です。
SEプラスの事業にも、当然ながら競合他社が存在します。SEプラスのサービスを選んでいただくために、止まることなく常に変化し、日々お客様にとってより良いシステムへと生まれ変わらせていくことを目指して、エンジニアチームは業務を行なっています。

セキュリティと速さを両立するための技術スタック

といった感じで、セキュリティと速さという、どちらかを立てるとどちらかが立たなくなるような2つを求めて、しかも5サービスを5人のエンジニアで運用するといったことをしているので、必然的に学習コストが低く、柔軟に開発が行える言語をチョイスすることになります。
以下が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プラスではライブラリや言語の技術選定も、現場のエンジニアが提案することができます。
俺の考えた最強の技術選定を提案したい方、ぜひお待ちしています。

さて、4本に渡りSEプラス e&TS Div.のエンジニアについてお話ししてきましたが、なんとなくどんな感じで働いているかとか、どんな人がいるかとか、どんなことを考えて仕事をしているのかが伝わっていれば幸いです。
また、この記事を見てSEプラスに入社したい!と思ってくださる方が1人でもいれば嬉しいなと思います!

エンジニア面接では、実際にエンジニアチーム何名かがご面接を担当させていただきます。
ぜひお会いして、お互いのことについてお話しできれば嬉しいです!

関連記事

SEプラスのエンジニアは何をしているのか

なぜSEプラスでエンジニアに?SEプラスのエンジニアメンバー紹介

SEプラスエンジニアオンボーディング事例

Invitation from 株式会社SEプラス
If this story triggered your interest, have a chat with the team?
株式会社SEプラス's job postings
4 Likes
4 Likes

Weekly ranking

Show other rankings
Like Moeko Yamamoto's Story
Let Moeko Yamamoto's company know you're interested in their content