nigoblog

技術系会社のCEOブログ~私的編~

非エンジニア人事必見! 優秀な学生エンジニアを見分ける5つの質問

※今回の記事は一部(かなり)ネタが混じっているので真剣に捉え過ぎないでください。

最近の学生で多いのが、就活で面接・面談時に、

学生時代こんなアプリケーションを作りました! (どやぁ)

っていうのをよく見たし聞きました。

エンジニアからすると
「いやいやそれデータベースにデータ入れて、それとってきただけじゃん」
みたいな。

それでも技術を知らない人から見ると「す、すげぇ! 君は優秀だ! 即採用!
みたいになってしまうんですね。

確かに、アプリケーションを作って公開するのは素晴らしい。
でもそんなん1ヶ月あれば出来ますから!

というわけでそんな
にわかエンジニア
本当に優秀なエンジニア
を見分ける質問を5つ用意したので人事の方や、就活中のエンジニア学生は必見!

CASE1 : 学生「Pinterest風のUIでさらにスクロールすると読み込むんです!」

ただjQuery masonry使っただけー!
それでさもすごいUIを作りました的な学生にする質問はこちら!

「すごいねーこのプラグイン作ったのにどれくらいかかったの?」

いやいやただ元々あるやつ使っただけなんですけどね。
あえてプラグイン作ったと聞いてみましょう。
すると学生も「あ、いや、元々こういうプラグインがあって…」
ってなるはず。

というわけでここでのポイント
オシャレなUIは大抵jQueryのプラグインがある!そしてそれを使うだけなら全然すごくない!

学生へ
オリジナルのjQueryプラグインを持って行きましょう。
プラグインを作れる = javascriptでのオブジェクト指向がわかるにもなるので。
作り方はこちらの記事を参考に
jQueryプラグインの作り方 ~ 重要な3つのポイント ~ - nigoblog

CASE2 : 学生「チームで一つのWEBアプリケーションを作りました!」

私はチームプレイも出来まっせアピールゥゥ!
このような学生にはこう聞きましょう。

「ほうほう。Gitコマンドのエイリアスはどう設定してる?」

と聞きましょう。
そもそもGitを使えていることは前提。ここで「 ? 」となるような学生はGitを使えてないでしょう。

コマンドにエイリアスを登録するレベルまでたくさん使っているならばok

ここで「いや、Subversionを使ってるんですけどね」
と返されたら「そうなんだ。うちはGit使ってるけど」と返しましょう。(SubversionじゃなくGitを使っていれば)

というわけでここでのポイント
複数人で開発していてGitを使っていないのはNG!

学生へ
大抵の会社はGitなりSubversionを使っています。学生のうちに是非覚えておきましょう。
使い方はこちらの記事を参考に
GitとGithubの使い方~超初級編~ - nigoblog

CASE3 : 学生「RailsでWEBアプリケーションを作りました!」

まぁフレームワークくらい誰でも使えるよね。
こういう学生にはこう聞きましょう。

「なるほど。ちなみにそのWEBアプリケーションどれくらいのトラフィックに耐えられる?」

なかなかサーバー負荷まで考えている学生はいないのでは?
当てずっぽうで「同時に10,000件くらいは…」
と来たら、「どんな感じで負荷テストしたの?」
とさらに追撃しましょう。

ここでのポイントは
サーバー負荷まで考えられるレベルなら優秀!

学生へ
インフラのことも少しは考えましょう。

CASE4 : 学生「学んだことはブログでアウトプットしてます!」

えらいえらい。で、ブログでやる意味は?
なんかアウトプットとかいう言葉を使うといいと思っている学生にはこう聞きましょう。

「今までどんなキーワードでSEO対策した?そしてそのデイリー訪問数どれくらい?」

そうそうブログは見られないと意味がないですからね。
そこで学生は「いや、自分のメモ代わりに使っているだけですから…」
と屁理屈をいうことでしょう。
そういう学生には
「は? だったらエバーノートにでも書いとけよ。ブログは読まれてなんぼだ。読まれないブログなんかに価値はない」
とここまでいうと嫌な人になっちゃうので適当に「しっかりしてるねー」とでも言っておきましょう。

ここでのポイントは
ちゃんとWEBメディアの運用を意識しているかどうか?作ることが目的になっていないかどうかをちゃんとチェックしましょう。

学生へ
ブログに限らず、WEBで何かを公開するならちゃんと分析してKPIを意識しましょう。
KPIについてはこちら
理想のアジャイル開発から流行りのアジャイル論争に参入してみる - nigoblog
Google Analyticsの使い方 ~数字を追ってwebマーケティング~ - nigoblog

CASE5 : 学生「自分のサイトに独自のレコメンドアルゴリズムを入れました!」

ここまでのポイントをことごとくクリアしてきた優秀な学生。
最後の見せ場。レコメンドアルゴリズムを持って来ました。
こんな生意気な学生にはこのような質問を。

「おぉ! 独自のレコメンドということはオリジナリティがあるってことだよね? 単純に『距離による類似度計算』や『k平均法によるクラスタリング』をしているわけじゃないんだ。どんなアルゴリズムか教えてくれるかな?」

…最初に言ってしまう!黒柳徹子メソッドですね。
ここまで言ってしまうと学生は話すことがない状態です。
逆に
「そうですね。私はさらに類似度計算の高速化でこういうアルゴリズムを入れています」
などそんなレベルが来たらそれはもう優秀です。

ここでのポイントは
どっかネットで上がっているアルゴリズムをコピペしていなかをチェック。
最近はなんでもWEBで探せますからね。

学生へ
オリジナルのアルゴリズムを使うまでは行かないまでも、アルゴリズムくらいできるアピールをしましょう。
アルゴリズムについてはこちら
モンティ・ホール問題のシミュレーションをしてみる - nigoblog
プログラマーは今こそアルゴリズムを書くべき!!~モンテカルロ法でπを計算してみよう(コードあり)~ - nigoblog
レコメンドアルゴリズム超入門 - nigoblog

まとめ

今回はネタが多いのであまり本気にし過ぎないようにしていただけると幸いです。
それでも重要なこともいくつかあるので、何が重要かを見極めて、参考にしてください。

関連図書

Git・Githubに関してはこちら

WEB+DB PRESS Vol.69

WEB+DB PRESS Vol.69

  • 作者: 大塚弘記,渡辺修司,堤智代,森田創,中島聡,A-Listers,はまちや2,川添貴生,井上誠一郎,近藤宇智朗,ヒノケン,後藤秀宣,佐藤鉄平,mala,奥野幹也,伊藤智章,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/06/23
  • メディア: 大型本
  • 購入: 13人 クリック: 143回
  • この商品を含むブログ (18件) を見る

Railsのサーバー環境に関してはこちら

Ruby on Rails環境構築ガイド

Ruby on Rails環境構築ガイド

KPI分析に関してはこちら

ウェブ分析レポーティング講座

ウェブ分析レポーティング講座

レコメンドアルゴリズムについてはこちら

集合知プログラミング

集合知プログラミング

Githubの使い方 Rails編 ~railsプロジェクトをGithubのリポジトリにアップ~

Githubでプロジェクトを作成する場合、

  1. Github上でリポジトリを作成
  2. 作成したリポジトリを clone
  3. ローカルで開発

っていう流れ。

一方Railsでプロジェクトを作成する場合、

  1. rails newでプロジェクトを作成
  2. git initでgit環境構築

という流れでプロジェクトが別々に作成されてしまう!

という疑問が出てきたのでGithubのリポジトリrailsのプロジェクトを作る方法を説明します。

Githubでリポジトリを作成

普通に作成します。
特別なことはしません。
f:id:nigohiroki:20121230213819p:plain

Railsでプロジェクトを作成

通常通り

rails new project_name

で作成します。

Railsプロジェクトを作成するGitコマンド

というわけでここからが本番。
GithubにRailsプロジェクトを作成するコマンドを書いていきます。

cd project_name

Gitを開始

git init

.gitignoreに.DS_Storeを追加

vim .gitignore

で編集。

ファイルをコミット

git add .
git commit -m "initial commit"

次がポイント!

リモートのリポジトリを追加

git remote add origin git@github.com:nigohiroki/project_name.git

このままpushするとリジェクトされるので

git pull origin master

それから

git push origin master

これで完了!

作成したGithubのリポジトリを見てみると作成したプロジェクトがアップされています。

以上Githubの使い方Rails編でした!
Githubは好きなサービスなのでどんどん使い方書いていきます!

ちょっと進んだGit, Githubの使い方~ブランチ活用編~

f:id:nigohiroki:20120925223833p:plain

以前Gitの超入門的な記事を書きました。GitとGithubの使い方~超初級編~ - nigoblog

今回はそこから一歩進んで、これぞGitというような使い方を説明していきます。
この記事を読む前に最初に上の記事を読むことをおすすめします。

  1. ブランチとは?
  2. ブランチの作成

このような流れで説明します。

ブランチとは?

突然ですが、gitのロゴ(上部画像)の左側の図。何を示しているかわかりますか?
このロゴは

  • マスター
  • ブランチ

を表しています。

マスター、ブランチの使いどころ

例えばあるサイトに新しく新機能を追加させたいという時があります。しかし、既存のサイトになるべく手を加えないで完璧な状態で新機能をリリースしたいという状態になりがちです。リリース前ならば新機能の追加はそのままできるのに、ユーザーがたくさんいる状態ではなかなか既存のコードに手を付けられない。そういう時にブランチ機能を使います。

具体的には?

例えば、あるブログポータルサイトがあるとします。そこに新たにランキング機能を追加したい。その時に、ランキングブランチを作成します。ランキング機能はそのブランチのみにどんどん作っていき、最終的に完成したらマスター(既存のサイトのソースコードがある場所)にマージ(組み合わせ)します。
すると既存のサイトは通常運営しつつ新機能の作成がリスクなくできます。

ブランチの作成

というわけで早速ブランチの作成の方法をみていきます。
まずリポジトリがあるディレクトリで次のコマンドをうってください。

git branch -a

これはブランチを見るコマンドでオプションの 「 - a 」はリモートのリポジトリのブランチを見るオプションです。結果はつぎのような感じになります。

 * master
   remotes/origin/HEAD -> origin/master
   remotes/origin/master

緑の文字がローカルのリポジトリのブランチで
赤の文字がリモートのリポジトリのブランチです。

つまり現在はリポジトリにブランチが無い状態です。
では早速ブランチを作成します。

git checkout -b test origin/master

checkout はブランチ移動するコマンドでオプションに「 - b 」をつけることで新しくブランチを作りつつ、そのブランチに移動するというコマンドです。
また

git branch -a

で確認すると

  master
 * origin/test
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

となり、新たにブランチが作成されたことがわかります。
この状態で
index.html
などに変更を加えてみましょう。その後、それが正しく表示されているかどうかを確認してください。
次に、index.htmlをコミットします。

git add index.html
git commit

詳しくはGitとGithubの使い方~超初級編~ - nigoblogを参考に。

最後にリモートにブランチを追加します。

git push origin test

そして

git branch -a

で確認すると

  master
 * origin/test
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test

のようにリモートにブランチが追加されたことがわかります。
githubなんかでも確認してみるとよいでしょう。

確認後、よければマージしてマスターに機能を追加します。
それには次のコマンドを使います。

git checkout master
git merge test
git push

するとテストの内容がマスターに追加され、新機能として反映されます。


以上駆け足でしたが、ブランチの使い方でした。
ここまでが私が現在扱えるgitの使い方です。
これから新しく学んだ便利な使い方はどんどんブログにアップしていくのでよろしくお願いします。

GitとGithubの使い方~超初級編~

今日のテーマはGitとGithubの使い方!!
Git、Githubの順に説明します。




Git

Gitとは分散型のバージョン管理システムです。
次の図を元に簡単に説明します(落書き…)。

f:id:nigohiroki:20120911233446p:plain
図1. gitのイメージ

このようにローカルで開発したものをリモートのリポジトリに置くことによってバージョン管理を行います。
ローカルからソースコードを持ってくることもできます。

さらにgitはステージングエリアとリポジトリの段階があり、ステージングエリアにまず置いてから、リポジトリに置く。
リポジトリは本番環境みたいな認識でOKです。

また、それぞれローカルでもリポジトリを置くことができるのが分散型のメリットです。

ざっとリポジトリの作成からバージョン管理までのコマンドを説明します。
コマンドはいずれもプロジェクトのディレクトリで入力します。

リポジトリの作成
git init
ステージングエリアにファイルを追加
git add ファイル名
リポジトリにステージングエリアのファイルを追加
git commit

この時、vimが起動されるので追加したものや状況などをメモって下さい。vimの使い方については前回参照- vimの使い方~超初級編~ - nigoblog

ログや状態を見る
git log
git status

Github

Githubリポジトリを公開するためのwebサービスです。GitHub · Build software better, together.
コードを公開したり公開してるコードをみたりすることができます。

使い方は次の通り

  1. ユーザー登録をする
  2. リポジトリを作成する
  3. リポジトリをローカルにコピーする
  4. ローカルのリポジトリにファイルをアップする
  5. Githubリポジトリにアップする

以上の流れでソースコードを公開します。

ユーザー登録

ユーザー登録は最初の画面にでかでかと書いているのでアクセスするとわかります。

リポジトリの作成

リポジトリの作成もnew repositoryというようなところがあるのでそこをクリックします。
するとリポジトリの名前や公開、非公開などの選択をし、作成します。
これでGithubリポジトリが作成されました。

リポジトリをローカルにコピー

リポジトリを作成したいディレクトリ上で次のコマンドを入力します。

git clone リポジトリのURL

リポジトリのURLはgit@github.com:nigohiroki/LightsOut.gitのような感じのがリポジトリページの上の方にあるのでそれを入力します。

ローカルのリポジトリにファイルをアップする

先ほどのGitの説明を参考に。

Github上のリポジトリにアップ

次のコマンドを使います。

git push

以上を行うとGithubソースコードを公開することができます。

以上簡単にGitとGithubの使い方でした。


Githubにソースを公開するメリットは省きましたが、プログラマーの評価指標にもなるので、是非とも使いこなした方がよいと思います。

参考図書まとめ

WEB+DB PRESS Vol.69

WEB+DB PRESS Vol.69

  • 作者: 大塚弘記,渡辺修司,堤智代,森田創,中島聡,A-Listers,はまちや2,川添貴生,井上誠一郎,近藤宇智朗,ヒノケン,後藤秀宣,佐藤鉄平,mala,奥野幹也,伊藤智章,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/06/23
  • メディア: 大型本
  • 購入: 13人 クリック: 143回
  • この商品を含むブログ (18件) を見る
特集にてGithubの使い方が説明されています。
登録関連で躓いた方はこちらを

入門Git

入門Git

まずはこの本でそもそもGitとは何かを学びます。

Gitポケットリファレンス

Gitポケットリファレンス

慣れてきたら逆引き本の方が約に立つでしょう。