Skip to content

開発環境構築 as a exam

sasanquaneuf edited this page Mar 27, 2023 · 8 revisions

ユニエイムのチケットソリューション事業部の開発において、標準的に利用している構成の開発環境を問題なく構築できるかどうかを確認するための課題を記載しています。

  • 実際にやっていただくこと(作業目標)
  • 課題の目的
  • ざっくり期日
  • 評価のポイント

実際にやっていただくこと(作業目標)

  1. EC2インスタンス(t4g.micro)を2つ提供します。片方にpullre-kunをインストールし、もう片方のサーバーの起動・停止を行えるようにしてください。
  2. 環境構築後、面接の時間を別途とりますので、環境構築の各手順と意味を説明してください。

pullre-kunは、本来は検証環境を自動で立ち上げるためのWebアプリケーションですが、与えられたIAMを用いてサーバーの起動/停止をWeb画面より行えるようになっています。 今回はその機能がきちんと使える状態までセットアップすることを作業目標とします。 その他の機能、例えばGitHubでプルリクを行ったときにステージングインスタンスを更新する機能などはセットアップする必要はありません。起動・停止が行えればOKです。

※もし追加でやりたいことがあれば、上記の目標に加えて自由に目標を追加して頂いても構いません。例えば、このプロジェクトのissueを解決したり、全く新しいpull requestを作ったり、という事を目標として頂いても構いませんし、それらは良い評価材料となります。ただし、的確にこの作業目標を達成していただければ、この課題には十分合格できます。また、本来の課題が達成できずに追加目標を達成した場合については、本来の課題を達成できなかったという事の方をより重視します。

課題の目的

この課題に取り組んでいただく目的は、一言でいうと「一緒に楽しく仕事ができること」=「採用が決まった場合にミスマッチではないこと」の(部分的な)確認を行うことです。 もう少し詳しくいうと、以下のような目的があります。

  • 書いてあるコードを違和感なく読めるかどうかを検証する。
  • 開発環境構築の(やや雑な)手順に従って自分で咀嚼して環境を構築できるかを検証する。
  • 新しい物事に触れた時の吸収力がどれぐらいあるかを検証する。
  • リモートワークで作業ができるかどうかを検証する。

この課題で構築することになる環境は、基盤的な部分では我々の取り扱うプロダクトにかなり近いものになっており、実作業にある程度準じた内容でのチェックを行えます。 このようなボリュームの多い作業に取り組んでいただく理由は、とにかくミスマッチをなくしたいからです。 一般的な採用において、ミスマッチの要因としては以下のようなものがあるかと思います。

  • 現在の技術に関するミスマッチ
    • 使用している技術に対して自分のスキルが足りない、逆に全く面白みがない、等
  • 現在の組織体制に関するミスマッチ
    • 自主性を求められすぎる、逆に自主性を全く求められない、教育が不足している、等
  • 現在の給与・生活スタイルに関するミスマッチ
    • 給料が安い、労働時間が長い、等
  • 将来の方針に関するミスマッチ
    • キャリアに不安がある、ロールモデルがいない、等

これらの観点のうち、特に技術に関する部分についてのミスマッチをなくすことが、この課題の目的です。

ざっくり期日

1週間程度を考えていますが、過不足あれば自由に申請してください。

想定作業時間についての補足(チケットソリューション事業部)

インストール作業に関して、ある程度pythonに慣れている方の想定作業時間で 数時間程度 です。(未知の単語があった場合の学習の時間などは除きます。)
仮にほぼ知識がなかったとすると、学習の時間が発生しますが、この課題に費やす時間の想定は学習等を含めると 最大で数十時間程度 です。
この時間を大きく超えて対応が必要になる場合は、ミスマッチが発生してしまう可能性があります。
課題の対応をする際に仕事をされている方もいらっしゃるため、この課題の結果について作業時間による評価は一切行っていませんが、上記の作業時間を目安としてご自身でも合う/合わないを判断いただくようお願いします。

評価のポイント

どれぐらいのスピードで環境を構築できるか

使用されている技術要素についてどれぐらい調べるか

どれぐらい全体像を理解しようとするか

例えば、インフラ的なレイヤー(?)では、VPC、ELB、EC2インスタンス、ssh tunnel(踏み台サーバー)、Aurora、NATゲートウェイ、といった要素が出てきます。

サーバーの準備という観点では、yum、amazon-linux-extras、pipといった要素が出てきます。

Pythonのライブラリという観点では、Flask、WTForms、SQLAlchemy、alembic、boto3といった要素が出てきます。

アプリケーションの構成という観点では、pullre-kun本来の目的があって、それに合わせたサーバーがいくつか出てきます。

アプリケーションのコードの意味という観点では、controller、form、model、serviceといったフォルダに分割されたソースコードが出てきます。

これらを、実際に環境を構築しながら、要素としてどれぐらい整理して理解できるか?という事が、評価の重要なポイントとなります。 単純に実際に触れた内容を整理・理解するだけでなく、知らない知識についてはどれぐらいの深さで調べるか、という事も重要なポイントです。 また一方で、それをある程度のレベルで掘り下げて理解しながらも、早いスピードで環境構築ができるという事が重要になります。 これらの観点で、一緒に楽しく働けるかどうかを見極めることが、一連の課題の目的ということです。

おまけ

このテスト用の環境は、ユニエイムのAWS/VPC内で以下のリポジトリ(CDK)を利用して作成しています。 https://github.com/uniaim-event-team/exam-env