IT・Web業界のデザイナー向け転職・求人サービス
chot.design しごとさがし

バックエンドエンジニア/フロントエンドエンジニア - 株式会社NoSchool

React & React Nativeで最高のオンライン指導体験を作るエンジニアを募集!:

募集職種:
- バックエンドエンジニア
- フロントエンドエンジニア

業界:
- インターネット/Webサービス・ASP
- モバイル/スマホアプリサービス

応募条件(必須のスキル):
- HTML/CSS
- JavaScript
- Sass
- TypeScript
- React Native
- React.js
- Github
- 実装
- コードレビュー
- Webサービス/アプリ開発
- テストケース作成

応募条件(あると嬉しいスキル):
- Nuxt.js
- GCP
- Figma
- Redash
- Node.js
- 要件定義
- 基本設計
- 詳細設計
- 運用・保守
- アーキテクチャ設計
- テスト駆動開発
- SEO

求める人物像:
- ユーザーの声が聞こえる環境で開発したい方
絶えずご家庭や先生と連絡を取っていたり、Gsuite等でプロトタイプ的に新機能の検証をしながら開発しています。新機能リリース後のユーザーの反応はよくSlackでシェアされています。

- 企画の段階から関わりたい方
ユーザーの意見や、経営判断が重要とは言え、エンジニア目線でこの仕様はおかしい、こういった機能にしたほうが良いのではないか、といった意見を積極的に出していくことも大事です。意見をぶつけ合いながら良いプロダクトを作りたい方はぜひ

仕事内容:
【採用技術】
- TypeScript
- React, React Native
- Firebase(Auth, Firestore, Storage, Functions), Expo
- Sentry, GitHub Actions, Prettier, ESLint, Stylelint

これまでマナリンクのWeb実装はVue(Nuxt)をメインで行ってきました。

加えて、前段にFastifyを置いているため、Encapsulation機能を使って一部の機能のみをReactで開発できます( https://www.fastify.io/docs/latest/Encapsulation )

先生のプロフィールページなどは引き続きVueで実装しつつ、アプリとの共通機能はReactに統一して開発していきます。

バックエンドはFirebase、Firestoreをメインで構築しています。Firestoreはクエリの癖が強いですが、リアルタイム通信が容易に実装できるシステムを管理不要で利用できるメリットもかなり大きいです。データは基本はFirestoreに保管し、場合によってはRDB + GraphQLなどを使い分けることも検討していきます。

【開発プロセス】

▼業務で利用しているツール

以下のようなツールを普段使っています

- GitHub, Slack, Figma, Google Drive, Zoom, Notion

【開発チーム】

▼CTO

2016年新卒LIFULL入社→2019年より現職。特にフロントエンド技術が好き。

Profile: https://meijin.dev

GitHub: https://github.com/TeXmeijin

Twitter: https://twitter.com/meijin_garden

Qiita: https://qiita.com/mejileben

Zenn: https://zenn.dev/meijin

CTO個人の考えとしてはReactもVueもそれぞれ良いところがあると考えています。開発体制に応じて選択していきたいです。
https://zenn.dev/meijin/scraps/fc5bcd737dc397

▼Yさん
iOSアプリエンジニアを経験後、React Native製アプリを少人数体制で複数リリース経験あり。ライブラリの利用経験が多く、OSレイヤの知見も深いためアプリ開発をリードしていただいています。
ネイティブアプリの開発経験に乏しい方でもサポートできます!

▼Hさん
WebデザイナーだがVue.jsの実装経験もある。そのためマナリンクではデザインからコーディングまで一気通貫で担当。

マナリンクでオンライン指導に関する機能を実装するときは、先生が普段利用しているWeb、そしてご家庭が利用するアプリの両方に実装していく必要があります。

WebのフロントエンドをReactで、アプリをReact Nativeで実装することで、同様のライブラリを使ったり設計手法を互いに応用しつつ実装していくことができます。

オンライン家庭教師サービスは、指導力のある先生方に指導していただけることが最も重要です。オンライン指導を便利にする機能は、先生方から見たマナリンクの魅力を高め、事業の競争優位に大きく貢献できる開発です。

【オンライン指導カレンダー】

▼目的

オンライン家庭教師の先生が使っているGoogle Calendarと連携して、マナリンク上からご家庭が指導予約を行うことができたり、試験日程など重要なイベントの登録ができる機能の開発です。

マナリンクにはオンライン家庭教師を専業で行っている社会人の先生に特化して登録していただいているため、同時に10人以上の指導を行っている先生も多くいます。

そのため、普段利用しているカレンダーアプリでの予定登録と連携して、横断的に指導に関する予定調整ができることが、日程調整の事務作業を減らす上で重要になります。

▼実装

実装する上で難易度が高い、乗り越えないといけないポイントは以下のとおりです。

- データ構造の設計
- Google Calendarとの連携・セキュリティ
- Webとアプリ双方へのカレンダーUIの構築
- 外部サービスとの連携に伴うテスト体制の整備

カレンダーは出来合いのライブラリでUIを作るか悩みどころです。Google Calendarとの連携はある程度疎結合にやっておきたいですから、設計手法も工夫ができそうです。

【映像授業】

▼目的

先生が事前に予習用の動画をアップロードして生徒に見てもらうことで、指導効果を高めます。

オンライン指導は週に1度、1時間といった頻度が多いため、貴重な指導時間の効率アップが必要です。また、先生にとっては指導動画のストックを作成していくことで、日中のスキマ時間を自分の指導力アップに有効活用ができます。

▼実装

- 動画のアップロードをどう作るか
- 特にReact Nativeアプリ内での動画再生UI。再生や一時停止など自前で組むか?

動画を自前で所有したり、再生のUIをある程度自前で組むとなると工夫のしがいがありそうです。

【生徒の学習計画立案と分析機能】

▼目的

先生が毎日○ページ問題集を進めると言った勉強計画を作成して、そのとおりに生徒さんが学習を進めているかどうかをチェックしてほしいといったニーズがあります。

計画の立案と実行のみならず、日々の勉強時間や使っている問題集などを先生が画面上で確認ができて、必要に応じてグラフにするなどの可視化を行います。

▼実装

- データ構造の設計
- 日々の利用頻度が多いため、入力が自然に行える画面遷移やUI構築
- グラフをWeb、React Nativeに描画

使う技術としては難しくないですが、基本的な入力UI、多くのデータの関連を管理すること、最後にグラフで生徒の状況を可視化するといった細かい機能が多いです。積極的にアニメーションなど細かいインタラクションにこだわると良いプロダクトになりそうです。

【テスト/問題作成】

先生が授業の確認テストなどを作成して生徒に送り、回答してもらうことができる機能です。

内製する場合は、本文の中に穴埋め部分を表示したり、入力してもらうところ、数式の表示部分などの実装が少し大変そうです。

とはいえ何かしらの問題作成、回答機能を有する外部サービスがあれば、連携してしまうのが簡単かと思います。何もかも内製するというのはコストになるだけなので効率よく開発していきたいところです。

【オンライン自習室】

▼目的

意外とニーズが有るのがこのオンライン自習室です。マナリンク上で実現するときは、1人の先生が複数人の生徒とビデオ通話または音声通話を繋ぎながら黙々と勉強し、わからないことがあれば挙手すると言った仕様になるかなと思います。

▼実装

今のご時世、ビデオ通話や音声通話はagoraやTwilio、Skywayなどを使えば造作もなく実装できますが、オンライン自習室ならではの仕様として、課金したユーザーだけ部屋に入れるであったり、先生が部屋を立ち上げると指導中の生徒にだけ通知がいくなどの細かい部分をリアルタイムで実現するように実装するのが難しいはずです。

リアルタイム通話の実装をしてみたい方はぜひチャレンジしてみてほしいです。

抱えている課題:
オンライン家庭教師業界には大きく2つの課題があると考えています。

- 利用者と提供者が、お互いに事前に情報を見えにくい。例えば体験指導と本指導の先生が異なっているなど、不明瞭な部分が多くある

- 指導以外のオペレーションがまだまだ非効率。先生とご家庭の間で行われる日程調整や宿題管理、計画立案といった事務作業が多く、指導そのものの改善に注力しにくい

1つ目の課題については、マナリンクのサイト上で先生一人ひとりの自己紹介動画をYouTubeで公開したり、分かりやすい価格体系で「指導コース」を作成できるようにすることに取り組んでいます。

2つ目の課題については、ご家庭に対してオンライン指導専用のアプリを提供するとともに先生向けにはWeb上に管理画面を提供し、オンライン指導に関する調整や事務作業を効率化していきます。

使用する技術:
- HTML/CSS
- JavaScript
- TypeScript
- React.js
- GCP
- Mac
- Figma
- Github
- Google Analytics
- Node.js

こだわり条件:
- 駅から徒歩10分以内
- 服装自由
- 髪型自由
- 副業OK
- 自社サービスあり
- 学歴不問
- 社会保険完備
- IE対応不要
- 年間休日120日以上
- 完全週休2日制
- 残業月20時間以内
- ストックオプション制度あり
- 書籍購入手当あり
- イヤホン着用可
- 開発マシン選べる
- 年末年始休暇
- 経験者優遇
- 第二新卒歓迎
- クライアントと直取引

勤務地:
- 東京都千代田区神田三崎町 2丁目20-1石川ビル205
- 水道橋駅から徒歩2分
- 屋内禁煙
- リモートワークなし

雇用形態:
正社員

給与:
月給 30万円 〜 45万円

勤務時間:
固定時間制 10:00 〜 19:00 (休憩時間60分)

休日:
完全週休2日制

試用期間:
期間:
3ヶ月
期間中の条件:
本採用時と同様

待遇/福利厚生:
- 社会保証:
完備
- 有給休暇:
入社6ヶ月後に10日付与
- その他休暇:
・有給休暇
・年末年始休暇
・特別休暇(慶忌休暇/出産休暇/結婚休暇等)
- その他待遇/福利厚生:
・交通費支給
・書籍購入代支給

選考について:
採用人数:
2人
適性検査:
独自に作成している基礎知識テストを実施

必要に応じてVSCode Live Share等を用いたペアプログラミングなども検討
選考フロー:
- Webエンジニア基礎知識テスト
- CTO面接
- CEO面接
- 1ヶ月程度のお試し勤務(給与の支給あり。月給:30万円~)
臨機応変に検討しますが、概ね以下のフローで選考を進めます。

1. Webエンジニア基礎知識テスト
Google Formにて、数十問の基礎知識テストにチャレンジしていただきます。知識を問う問題もあれば、設計スキルを問うような記述問題もあります。これで合否を判定すると言うよりは、面接で話す材料にさせていただきます。
2. CTO面接
※CTO/CEOともにオンラインで面接します。
3. CEO面接
4. 1ヶ月程度のお試し副業
いきなりスタートアップに参加というのはお互いに不安があると思うので、1ヶ月程度、平日の夜や土日を使った副業をしていただくのが有力だと思っています。
Slackにも入っていただいて、要件定義や日々のユーザーさんからの声を共有しているところなどを感じ取っていただいて、入社するかしないかの判断材料にしていただければと思います。
5. 入社