Aggressive Style 5

読者です 読者をやめる 読者になる 読者になる

Aggressive Style 5

昨今はコミケ関係を中心に書いています。同人やニコニコ動画方面で活躍される方の相互リンクをお待ちしています。

Web業界等の面接対策:自発的に行動し、その証拠(ソースコード)を他人に見せられる人程面接を制する

数ヶ月前に書いた就職対策の記事「Web系企業の面接対策に、各企業の方向性の違いをまとめてみた」が好評のようだ。さらにトライフォートと言う会社の代表でおなじみの小俣(Twitter:@taimeidrive)氏のTwitterに紹介され、大変嬉しい限りだ。そこで今日は調子に乗って面接対策記事を書いてみた。とまずは面接の前に自分の生い立ちを話そうと思う。



自分の生い立ち

面接対策の前に軽く自分の生い立ちから。今を遡る事数年前の大学院時代では、C言語+OpenCV+Visual Studio .netを使って、画像から人物を切り出すと言った研究をしていた。主に画像を確率や統計などの手法を用いて類似のピクセルの小さい領域(部分集合)に分割する。このとき過分割された部分の領域同士を統合し、結果的に背景の領域と人物の領域に分ける事で切り出せないか?と言う事をやっていた。色の色相などを統計的に処理して分割するので、複数の色の入った画像の場合だと過分割になってしまった。

ちなみに現状はこんな感じだ。さてこういった研究は画像の領域分割といい、応用できる範囲は二つ考えられる。まず一つ目は画像認識の前処理が考えられる。例えば昨今ではテンプレートマッチングなど画像の特徴のある点(特徴点)に着目し、顔認識などが行われている。あらかじめ顔に不必要な部分を前処理で取り除いておけば、処理の精度向上につながるかもしれない。二点目は画像の領域分割を応用することで、洋服の色などを自動でタグ付けする事が出来るため、検索用のデーターベースに登録する手間が省けたり、あるいは「赤 xx(ブランド名)」と検索すれば、赤の全ての洋服が出力する事だって可能となる。

そしてSONYなど大手家電メーカーに就職しようとするも失敗。就職浪人を経験し1年半、PHP+SQLiteを用いたシステムの改修、設計を担当する会社に入社。そこでデーターベースに興味を持ち、2社目、3社目とMySQLCakePHPなどデーターベース関連のアプリケーションに必要な知識を習得していった。こうした知識を取得していく中で「データーベースのレコードから必要な情報を抽出、分析する」技術、つまりデーターマイニングやクラスタリングなどに興味を持ち今日に至る。

面接前に準備するべきもの

さてここから本題と行こう。まずは面接前の準備の話で、面接前には以下の4つを準備しておくと良い。

  1. 履歴書(志望動機、自己PR)
  2. 職務経歴書(過去に担当した案件、業務外の取り組みなど)
  3. gitHubアカウント(作ったプログラムのソースコード)
  4. 作ったアプリケーションのURLないしはプレゼンできる環境

面接でソースコードを用意する理由

そもそも何で面接にソースコードを用意するのだろうか?それはソースコードを話の種に具体的な面接をするためだ。例えばあなたが花火を見に行った光景を人に話すとしよう。そのとき花火の写真や動画があれば、相手と一緒に花火を見る事ができ、より相手にその情景を伝える事ができるはず。今回はそれがソースコードに置き換わっただけだ。面接者がソースコードを見せる事に依って、面接官が面接者の現状をより把握できる利点がある。論より証拠。百聞は一見に如かず。面接で技術的な事を聞くより火を見るより明らかに相手の実力を読む事が可能なのだ。又ソースコードは自分の実力の内容証明なので、写して作った箇所がある場合は面接官に正直に言った方が良い。

さてお年寄りな会社程過去の実績で人を判断するが、若い会社程ソースコードや創作物で人を判断する事もあり、こういう点を面接の判断材料にしてくる可能性も高い。ここまで自分を出す事で面接の段階でお互いのミスマッチが減り、入ってからお互いに取って良い

さらに面接前の応募フォームに自分の作ったアプリケーションのURLとgitHubを公開しておくのも有効だ。過去お世話になった「Webプログラマーを志す学生さんがやっておくべきことは、目に見えるアウトプットを公開することだけid:anatooのブログ」に依れば、


動くコードを予め見せておくとどうなるかというと、予め採用側のエンジニアがそのコードを読んで、勝手にその人の実力を見積もってくれる。面接に先立ってその人への評価の目安みたいなものが構築される。ぼんやりした評価とは違って、こういうコードを書くんだからこの人は最低でもこれぐらいの実力は持っているだろうと考えてくれる。その上で面接するときにはそのコードをネタにして採用側のエンジニアの方から色々話しかけてくれるようになる。なぜなら面接する側は志望者を見極めるための質問に飢えているから。どれぐらいの期間で実装したのとかなんでこの辺こんな感じで実装したのとか、単に履歴書から突っ込める内容とはより実のあるところから色々話せる点が増える。あとは実際に面接がうまくいくかどうかは自分の実力次第になる。 (「Webプログラマーを志す学生さんがやっておくべきことは、目に見えるアウトプットを公開することだけid:anatooのブログ」)

手持ちのアプリケーションが無い場合は作る

手持ちのアプリケーションなんて無いよと言う場合は、自分で何か真似して作ってみるのも有効だ。自分の場合は業務で携わった給料計算のアプリをもじって、小遣い帳のアプリを作成した記憶がある。その当時改修などの業務をメインにやっていたので、全部一から作るわけじゃないから案外アプリ全体を理解できてない事が分かって来た。それを解決できるようになるまで数ヶ月位の時間を要した記憶がある。ちなみにトライフォートの小俣氏の過去の記事でも同様の事を言っており、


とにかく自分が「こんなサービスを創ってみたい」と思ったのであれば、一度、自分自身で作りきることが大事です。

作りたいモノをひと通り作ってみると、各工程で色々な壁にぶち当たります。「URLってどうやって発行すればいいんだろう?」「サーバやDBはどうするか?」こうした問題を一つずつ解決していくことによって、一連の全体像が見えてくる。この時にはもう、自発的に自分で問題を解決しようという意識が芽生え、単に言われた課題を解決するだけのエンジニアからはすでに脱却できているかと思います。(イノベーションを起こせないエンジニアに価値はない─トライフォート小俣氏が語る、優秀なエンジニアの条件|CAREER HACK)

自分の場合最初の頃は「MySQLPHPをどう連動させれば良いの?」「ID毎に表示結果が変わるには、どうやってPHPSQL文を書けばいいの?」と言う壁にぶち当たった。最初の会社では実際に動いているアプリの書き方を真似して、見よう見まねで改修をして行った記憶がある。その当時会社ではフレームワークを採用してなかったので、一から全て自分で書いた記憶がある。以下は初めてで勉強する人の参考になるかは分からないが、勉強の為にアプリケーションとgitHubを公開したい。

苦手を補う為にインターン、セミナーに行って来る

又学生のうちは歳をごまかしてでもインターンに行って、技術を覚えて来るのも手だ。HTMLやCSSに触った事のある人ならば、実際のアプリ製作の現場に飛び込んでも良いだろう。以下は株式会社メイプルシステムズという会社のインターン風景をまとめたブログから、行った感想を引用してみた。


インターン生の私に課せられた業務はある社内システムのスマホ版を作ること。

ブログのテーマを一から自作していた経験もあり、HTML/CSSの知識はありましたのでそれに加えて社員の方や社長からcakePHPMySQLを少し教えてもらい作業を進めました。
半分程完成している社内システムの外観をスマートフォン用に整えるのが主な作業だったのですが、「せっかくのインターンなので普段やっているHTML/CSSだけじゃなくて中身の処理の方もやりたい!」ということで後半一週間は中身の方にもだいぶ触らしてもらいました。(『株式会社メイプルシステムズ』さんに二週間のインターンシップに行ってきました。:インサイド五目あんかけぶろぐ)

インサイド五目あんかけぶろぐ

URL:http://gomokuankake.com/


彼のブログデザインがシンプルで上手い。絶対俺より伸びしろがあるよ(笑)。この段階でPHPMySQLを知ってると、数学とかと連携してより強力なWebアプリとか作れそう。自分の大学時代はと言えば、「Photoshopを超えてやるぜ!」とアホな目標を立てつつ、「自分のアプリをWebアプリとして公開じゃ!」と野望に燃えていた。しかしながらあの当時はImageMagickも無かったし、しかもMySQLのテーブル設計はもちろんPHPも知らないと言う状態だった。彼は俺より数年も早く先を行っているのが羨ましいし、よくぞ飛び込んだと応援したい。面接官に依っては「CakePHPなどの技術は誰でも出来るから、画像処理などに注力すれば良い」と言われた事もあった。しかし自分で一つでも多くの事ができるにこす事はないし、こういう地に足の着いた技術も大切にするべきなのだ。

勉強する為のサイトを探してみた

PHPで簡単WEBサービス入門1 | codeIgniterでブラウザにページを表示する(Qiita)

URL:http://qiita.com/yoneapp/items/1e6cea29f6d84f695adc


ゲームプログラマになる前に覚えておきたい技術

え?なんでWebの話をしているのにゲームなんだ?とお思いの方もいらっしゃると思うが、Webを覚える傍ら違う事にも挑戦してみるのもいいんじゃない?と思って掲載した。人に無い技術を身につけると言うのも有効な手段だ。

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

最後に

そして自発的に行動するための一番いい方法は、「(プログラムの中で)自分のやりたい事を見つける事」「見つかったら没頭する事」の2つ。それらがどういう時期に見つかるのかは最早その人次第だし、見つからない時期に受ける面接は辛いはずだ。俺はなかなかそれが見つからなくて失敗したクチだ。

最初の記事は、俺が3社目の面接対策の為に書いた物だ。あまりに色々受けたので会社の特徴を掴んで面接する為に書いたものだが、ここまで反響を受けるとは思わなかった。そして本記事がそうした面接のスランプを脱するきっかけになる事を心より願う。最後に本ブログを紹介して下さった@taimeidrive氏及び、各読者の皆さんに感謝する次第である。

過去記事(数学、プログラムに関する技術)