開発環境
インターンシップ
新人受入
新卒採用
学生受入
More than 1 year has passed since last update.

インターンシップ

2016年11月~2017年2月にかけて、BookLive開発チームでもインターンシップを実施し、学生さんがオフィスに入場して就業体験をしてもらいました。
インターンに来てもらう学生さんのレベルはそれぞれ違うことが多く、

  • LinuxなどでのCUI操作は初めて
  • グループで開発経験がある(大学の授業・他社インターンシップ参加)
  • コーディングをするアルバイトを経験している

など様々です。

会社発足以来、BookLive開発チームでインターンシップを実施するのが初めての試みだった為、ノウハウ等もない状態でスタートしたインターンシップでした。
この記事では、ノウハウの蓄積と、これから初めてインターンシップを実施する!といった教育担当者のために、今回学生さんを受け入れる際に用意したプログラムと、学生さんに提供した環境のメモとして残しておきます。

※ ちなみに、今回参加頂いた学生さんはLinuxを触ったことが無い、という学生さんだったため、Linuxの基本コマンドを学ぶところからはじめ、PHPを用いた基礎的なプログラミングを経験してもらいました。

実施プログラム(予定)

様々なレベルの学生さんが来ることを想定して、入門編、中級者編、上級者編を用意しました。
入門編~中級編まではテキストを用意し、学生さんが一人で課題に取り組めるように準備をしておき、
上級編に関しては社内のWikiを参考にしてもらいながら開発環境構築をしてもらう想定でいました。
(学生さんのレベルによっては、いきなり上級編まで来てもらってもOKな想定)

  • 入門編(未経験者)

    • Linuxの基本コマンドを学ぶ
      • ディレクトリを作成する
      • ディレクトリの名前を変更する
      • 作成したディレクトリの中に移動する
      • ファイルをコピーする
      • ファイル名を変更する
    • Vimの操作方法を学ぶ
      • vimエディタを起動して捜査してみる
      • 文字を書き込んで保存してみる
      • .vimrcを編集してカスタマイズしてみる
        • すでに書かれてる設定をコメントアウトしてみて、挙動が変わっているのを見る
      • コピー(ヤンク)&貼り付けで文字列を編集してみる
    • サーバに各種パッケージ・ソフトウェアをインストールしてみる
      • httpdをインストールし、ドキュメントルートにあるHTMLファイルをWebブラウザで表示してみる
      • phpをインストールしてみる
    • phpを用いて出された課題のプログラムを作成してみる
      • 5つほど用意し、最終問題では自分なりにカスタマイズしていけるようなものを用意
  • 中級編(未経験者~開発経験者)

    • MySQLかpostgresqlを使ってDB構築をする
    • Gitを使ってバージョン管理を学ぶ
    • phpを用いて、フォームを作成しデータをDBに保存し、結果を表示するプログラムを作成する
      • (作成するプログラムをGitでバージョン管理する)
  • 上級編(開発経験者)

    • GitからBookLiveストアのソースをcloneし、開発環境にBookLiveストアを構築してみる
    • 簡単なアクセスログ調査や、業務に必要な便利ツールの開発
    • (期間に十分余裕があれば)チケット対応
  • 共通

    • 開発進捗の会議があれば参加し、開発案件の進め方を体験する
    • 案件レビューに参加し、エンジニアの立場・一ユーザの立場から意見を出してみる

学生さんに準備してもらうもの

  • PCのセットアップ
  • Slackのインストール
    • シングルチャンネルゲストとして、特定のチャンネルのみで利用してもらうことを想定
  • Tera Term等のターミナルソフト
    • 使い慣れているターミナルソフトがあればそれを使ってもらう
  • GoogleChrome・Firefoxなど、Web開発者ツールがあるWebブラウザ

以下は、必要になったタイミングで。

  • A5:SQL(ER図作成)
  • astah community(UML図作成)

受入側準備

  • dockerコンテナを作成する
    • 出来るだけ整備されていないイメージから、dockerでコンテナを一つ用意する。
    • 今回実施したインターンシップでは、internshipimg:base のような、インターン学生用に最低限用意してあるコンテナイメージを事前に用意しておいた。PHPやhttpd等は一切インストールせず、学生さんに自分でインストールしてもらうことが目的。
    • 最低限の.vimrcは用意しておくのはアリ。(参加する学生さんのレベルに合わせて、真っ新でも良いかも)
.vimrc
scriptencoding utf-8

filetype on
syntax on

set fileencodings=utf-8,cp932,euc-jp,sjis
set fileformats=unix,dos
set encoding=utf-8
set number
set ambiwidth=double

set autoindent
set tabstop=4

set laststatus=2
set statusline=%f%m%=%{'['.(&fenc!=''?&fenc:&enc).']\ ['.&fileformat.']'}[%3l,%3c]
  • 情シス申請関連(会社によって様々ですが必要なはず)
    • 人事がインターン学生のAD払い出し依頼をするので、合わせて以下をお願いしておくとスムーズである
      • Slackのシングルチャンネルゲスト設定(事前に専用チャンネル用意しておくと都合が良い)
    • AWSの開発環境へのアクセス権限の付与

実際の受け入れ

  • 受入準備で用意した課題をパワーポイントで作成し、印刷してテキスト形式として学生さんにお渡しする

    • 賛否がありそうでしたが、電子媒体でテキストを渡さずあえて紙媒体としたのは、コピペでコマンド実行や検索させないため。
    • 経験がない場合、自分の手でコマンドを打ってもらったほうが覚える&経験があればコピペも必要がないといったところで紙媒体でのテキスト提供でした。
  • プログラミング課題のソースコードレビューについて

    • テキストにPHPでのプログラミング課題を5つほど用意し、ソースコードレビューはアドバイス程度に留める。
      • インターンシップにおいては「自分の手で実現できた!」という体験をしてほしいので、実現してもらった方法と別のアプローチ手段でも実現できるといったレビューをするようにした。

また、就業体験を通してのルールとして以下の2点を設定しました。

就業体験する上でのルール
- まずは自分で調べてみる。でも分からないことを放置せず質問はすること!
    - 分からないことが沢山出てくると思いますが、まずは自分で調べてみましょう。
    - ただし、調べても分からないまま「質問しにくいから」といって先輩社員に質問せずに放置するのは一番良くありません。
     (質問をする時間の要点をまとめてから質問すること(何分間時間が欲しいかも合わせて聞けるとより良い)

- 就業体験した上での成果を出そう!
    - 短期間ではありますが、インターンシップを通して学んだ技術を生かした成果物を作って発表してもらいます

インターン終了時

  • 学生さんに、インターンシップで学んだことのアウトプットの場を設けて発表してもらいました。
  • 狙いとしては、

    • 年上の人(社会人)が多い中で前に立って発表する機会を得る
    • 取り組んだ課題を思い出す必要があるので復習ができる
    • 課題のプログラムのなかで自分なりに工夫した点を人に伝えることができる
  • アンケートの実施

    • 今後もインターンシップを実施するときのために、学生さんにもフィードバックを貰っておくと次のインターンシップをより良いものにできます。

おわりに

BookLive開発チームとしては初めてのインターンシップ実施で、内部メンバーもインターンシップ経験者が少ない中での実施でしたので、内部メンバーにとっても貴重な経験でした。

今後もインターンシップを実施することになった場合に、この記録を参考にしつつ、社内システムの開発をしてみたりなどの規模のプログラミング経験を積めるようなものも実施できていけたらな、と思ったりしております。