1
/
5

VISITSのバックエンドエンジニア〜その1〜

技術開発部で主にバックエンド開発をしている浜田(@hamchance0215)です。

弊社では下記の通りバックエンドエンジニアを絶賛募集中なのですが、募集要項を読んでも実際どのような働き方をするのかイメージしづらい部分もあると思います。

この記事では具体的なイメージが湧きやすいように、募集ページに記載されている【必須スキル】や【歓迎スキル】と私がバックエンドエンジニアとして普段やっている業務を紐付けて紹介しようと思います。

※「バックエンドエンジニア」という肩書でも担当しているプロダクトによって使う技術や役割が異なるため、一例として読んでいただけると幸いです。また、こちらの記事は執筆時点(2021/07)の状況を基に記載しており、募集内容などは変更される可能性があります。

バックエンドエンジニア
感性や才能を可視化!人の幸せを研究開発したいバックエンドエンジニア募集
私たちは、世界初の技術で創造性を科学するイノベーションテックカンパニーです。 「創造性を科学し、世界中の誰もが社会価値創造に貢献できるエコシステムを構築する」をミッションとし、人の価値を資本により良い世の中が実現されるよう、様々なプロダクトの企画・開発・運営を行っています。 【会社ホームページ】  https://visits.world/ 【日米特許取得】 「コンセンサス・インテリジェンス技術」 (CI技術) CI技術とは、独自の合意形成アルゴリズムにより、これまで定量化できなかった「人の創造性」や「知見の価値」を客観的に数値化できる特許技術です。目利き力に応じて一票を重み付けし、スコアを算出します。CI技術を活用すると多数決に比べて、正しい意思決定をする確率が約4割向上し、経営意思決定が精緻化・高度化することに寄与します。 【プロダクト】 ■「VISITS forms」ー企業変革ソリューション 社内外の知見を収集・分析し、自社のあらゆる経営課題と打ち手をリアルタイムに可視化、 一元管理できるSaaSサービスです。 https://visitsforms.com/ ■「デザイン思考テスト」ー課題発見・解決化型人材発掘ツール https://design-thinking-test.com/ イノベーション創発に必要とされるデザイン思考プロセスを高速で回し、事業を創造していく力 (課題発見力・解決力)を測定するテストです。 ■「DXクラウド」ー人材育成発掘、育成に特化したクラウドサービス https://cloud-dx.com/ DX推進ができる人材の発掘・育成に特化し、日米で特許取得済みの独自技術により、DX推進に必要な「課題発見力」「データ活用力」「ビジネス構想力」をデザイン思考テストにより客観的に算出します。
VISITS Technologies 株式会社

私が担当しているプロダクトについて

私が担当しているプロダクトのバックエンドはRailsを使ったAPIアプリケーションとなっています。

また、データを格納するためにリレーショナルデータベース(MySQL)を使っています。

本番環境はAWSまたはGCPを使っています。1つのプロダクトがAWSとGCPを両方使っているのではなく、AWSを使っているプロダクトとGCPを使っている別のプロダクトがあるイメージです。

【必須スキル】

Webアプリケーションの開発経験、及び1年以上の運用経験

開発しているプロダクトはWebアプリケーションなのでWebアプリケーションに関する知識が必要になります。

Webの知識と一言で言っても多岐にわたるため、どこまで知っていればOKという区切りが明示しづらいのですが、Webの仕組みやHTTPメソッドやステータスコードなど基礎を抑えているレベルでよいと思っています。

私の場合、API設計をするときに適切なHTTPメソッドやステータスコードを決めたり、CORSやCookieなどの制御を行うときなどにWebの知識が役に立っていると感じています。

また、「運用経験」と記載している通り、ただ作るだけではなく継続して運用していくための知識も必要になります。

運用の知識も多岐にわたり、机上で学ぶというより実践でのトラブルシューティングなどを通して学ぶことが多いので、「1年以上の運用経験」と記載しています。

私の場合、過去の運用経験があることで、異常検知した際の調査など、原因を推測できたり、対策を立てやすくなったりしていると感じています。

Ruby on Railsを利用した開発経験

バックエンドはRuby on Railsで作られているため、開発する上で言語やフレームワークに関する知識が必要になります。

また、既存のRailsアプリケーションに機能追加していくだけではなく、新規開発で0からRailsアプリケーションを立ち上げることもあるため、既存コードを参考にしながら開発する以外にアプリケーションを0から構築したり、ライブラリ等を選定することもあります。

こう書くと難易度が高そうに感じますが、よほどマイナーな言語やフレームワークを使っていない限り、先駆者の役に立つ情報が世の中にたくさん公開されているので、それらを適切に調べてプロダクトに反映させるスキルがあれば十分です。

一方、0からのアプリケーション構築やライブラリの選定などは、すでに既存プロダクトが育っている企業ではやる機会が少なかったり制約が多かったりすると思うので、このあたりを裁量持ってできるところはスタートアップで開発する醍醐味だと思います。

また、継続して運用していくプロダクトのため、言語やフレームワーク等のバージョンアップは必須です。そのため、言語やフレームワークが使えるだけではなく、最新情報のキャッチアップができていると更に良いです。

私もメインで使っているRubyやRailsの新着情報を中心に周辺技術(フロントやインフラなど)の情報もキャッチして、必要に応じてプロダクトに反映するようにしています。

リレーショナルデータベースのテーブル設計を行った経験

開発しているプロダクトのデータはMySQLに保存しています。そのため、リレーショナルデータベースに関する知識が必要になります。

私も開発時にテーブルを新規作成したり変更することがありますが、その際に正規系やインデックスなどの知識は必要だと感じています。

【歓迎スキル】

データベースのクエリーチューニングや大量データを扱った開発経験

プロダクトを運用していくと、データがどんどん増加していきます。

データが増えたときに今まで動いていたクエリーが突然実行時間が数倍かかるようになったり、アプリケーションでデータ取得時にデータが多すぎてメモリが溢れたりすることがあります。

私の場合、開発時にデータの増加を想定した実装をしたり、リリース後にパフォーマンス劣化を検知してチューニングが必要になったときにこれらの経験が役に立っていると感じています。

とはいえ、クエリーチューニングや大量データを扱う経験は、ある程度規模の大きなプロダクト開発に携わらないと経験できないことと、必須スキルのリレーショナルデータベースの経験を持っていれば開発・運用しながらキャッチアップ可能と考えているため歓迎スキルとしています。

セキュリティ / 脆弱性対策に関する知識、経験

Webアプリケーションの場合、SQLインジェクションやクロスサイト・スクリプティングなど有名な脆弱性がいくつかあります。

Railsなどのフレームワークを使っていると意識しなくても脆弱性を回避できることが多いですが、知識として知らないと、例えばActiveRecordを通さずSQLを直接書くなど低レベルの実装が必要になったときに脆弱性を埋め込んでしまう可能性があります。

ただし、先に書いた通りWebの脆弱性対策はRailsなどのフレームワークを使っていると意識しなくても回避できることが多く、Brakemanなど脆弱性をチェックしてくれるGemもあります。また、脆弱性対策はベストプラクティスが確立されているものが多く、業務を通してキャッチアップ可能だと考えているため歓迎スキルとしています。

HTTPやREST API、GraphQLに関する知識、経験

こちらは「Webアプリケーションの開発経験」の記載したWebの基礎部分から一歩踏み込んだ知識のことを指しています。

私が担当しているプロダクトのバックエンドはPIアプリケーションとして実装しているので、REST APIやGraphQLを採用しています。

REST APIで作っているプロダクトでは、OpenAPIを使ってAPI設計しているため、OpenAPIなどの知識がある方は歓迎です。また、現在開発しているプロダクトはGraphQLを使っているため、GraphQLを使った経験がある方も歓迎です。

とはいえ、どちらも業務を通してキャッチアップ可能だと考えており、特にGarphQLは新しい技術であり経験している方は少ないため歓迎スキルとしています。

新規サービスの立ち上げ経験

「Ruby on Railsを利用した開発経験」のところで触れましたが、0からのアプリケーション構築する機会があるため記載しています。

私が今開発しているプロダクトも、0から開発しており、rails newから開発を始めています。

アプリケーションを0から構築する経験は、所属している開発チームの状況に左右されることが多く、既存のアプリケーションに機能開発しているだけでは身につけづらい経験だと思うので、歓迎スキルとしています。

歓迎スキルとしていますが、先程書いた通り新規開発を行うかは開発チームの状況に左右されるため、必ずしも0から開発する機会があるというわけではないのでご注意ください。

Docker / Kubernetesを使った開発経験

私の担当しているプロダクトの開発環境はDockerで構築しています。そのため開発時にDockerの知識があるとスムーズに開発に入ることができます。

ただし、Dockerを使うだけであれば1日もあればキャッチアップ可能なので歓迎スキルにしています。

また、本番環境はkubernetesで構築しています。

初期構築や大きな改修はインフラ専門のエンジニアの方にやってもらっていますが、インフラはコード化されており、簡単な設定変更などはバックエンドエンジニアが修正することもあります。また、サーバーに直接接続して操作したり運用時の障害調査などを行うこともあるので基本的な構成は知っておく必要があると感じています。

とはいえ、基本的にはインフラエンジニアに中心となって対応してもらっているので歓迎スキルとしています。

CI / CDに関する知識、経験

継続的に開発していくためには、自動テストや静的コード解析などを定期的に実行するCIの設定や、簡単にデプロイするためのCDが必要になります。

必要なものではありますが、ある程度定型化されており調べればすぐにわかることや、一度設定したらあまり変更することもないため歓迎スキルとしています。

Pythonを利用した開発経験

私の担当しているプロダクトでは、弊社特許技術であるCI技術を利用しています。

CI技術に関しては下記公式ホームページを御覧ください。

Technology | VISITS Technologies
CI技術(Consensus Intelligence技術/コンセンサス・インテリジェンス技術)とは、人の創造性、目利き力、アイデアの価値を独自開発の合意形成アルゴリズムにより定量化する特許技術です。 この技術を活用した合意形成エンジンを組み込めば、創造性に限らず、センスやスキル、人脈など、「感覚的な資産」を全て「教師なし」モデルで数値化することが可能になります。 ブラックスワン問題The Black Swan Problem 破壊的イノベーション=ブラックスワンDestructive Innovatio
https://visits.world/technology

Railsで開発しているバックエンドプロダクトとCIの繋ぎこみ部分をPythonで開発しているため、Pythonを利用した開発経験を歓迎スキルにしています。

とはいえ、CI技術自体は専門のチームが開発しており、繋ぎこみ部分の開発のみのため、あまりPythonを使うことはありません。

最後に

この記事では募集ページに記載されているスキルと実際の業務を紐付けて説明しました。募集ページを見るときに参考になると幸いです。

少しでも興味がある方はカジュアルな面談も随時行っていますので気軽に声をかけてください!

VISITS Technologies 株式会社では一緒に働く仲間を募集しています
4 いいね!
4 いいね!
同じタグの記事
今週のランキング
VISITS Technologies 株式会社からお誘い
この話題に共感したら、メンバーと話してみませんか?