見出し画像

エンジニア採用初心者が1年かけてキャッチアップした 「これだけは覚えておきたい」言語とフレームワークの特徴

当社、ポテンシャライトは創立3年で約100社以上のエンジニア採用をご支援してまいりました。

どのように運用したらスカウト返信をいただけるのか?

当社は、毎日数字と向き合いながらあれこれ考えています。
レジュメを見て、職種ごとに使う言語のこともわかる。
「プロダクト思考」か「サービス思考」かもわかる。
在籍企業を見れば、どれくらいのスキルを持っているかもわかる。
他にどんなことを知っていればいいんだろう…?

言語ごと使われているフレームワークのことが分かればより良いスカウト文面がかけるのではないか?という仮説の元、今回はフレームワークについてを調べてみました。


1. Web言語の種類っていくつある?

まず、当社がエンジニア採用においてよく依頼される開発言語を整理してみました。大体こんな感じでしょうか。(見覚えのある綴りばかりだと思います)

画像1


フロントエンド/サーバーサイド/iOS/Androidとポピュラーな言語から最新の言語まで、企業ごとにお願いされています。
フレームワークを調べていくうちに、多くのフレームワークがある言語とそうでない言語があることがわかりました。

そのため、まずはプログラミング言語の歴史を図式化してみます。

画像2

図式化してみると、言語が誕生してから世の中に広く認知される前に時差が発生していることがわかります。

つまり、誕生してから時間が立っているもので、フレームワークやライブラリの数が多ければ多いほど世の中で広く使われるサービスへとなっているということです。Rubyの使い勝手が良いことがなんとなくわかりますね。
では、まずは各言語の説明から。

- Ruby

Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語(スクリプト言語とはプログラミング言語の一分類)。
日本で開発されたプログラミング言語としては初めて国際電気標準会議(IEC)で国際規格に認証された事例となった[4]。

- Python

Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。

- PHP

PHP(ピー・エイチ・ピー)は "The PHP Group" によってコミュニティベースで開発[1]されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページ作成するための機能を多く備えていることを特徴とする[2]。 名称の PHP は再帰的頭字語として、 "PHP: Hypertext Preprocessor" を意味[3][4]するとされており、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。

- Java Script

プロトタイプベースのオブジェクト指向スクリプト言語であるが、クラスなどのクラスベースに見られる機能も取り込んでいる。ウェブブラウザ上で動作し動的なウェブサイト構築やリッチインターネットアプリケーションの開発に用いられる。また、2010年以降はnode.jsなどのサーバサイドJavaScript実行環境や各種ライブラリの充実により、MEANに代表されるように、Web開発の全ての領域で活用されるようになってきている

- Go

2009年、Googleで[4]Robert Griesemer、ロブ・パイク、ケン・トンプソンによって設計された[5]。Goは、静的型付け、C言語の伝統に則ったコンパイル言語、メモリ安全性、ガベージコレクション、構造的型付け(英語版)、CSPスタイルの並行性などの特徴を持つ[6]。Goのコンパイラ、ツール、およびソースコードは、すべてフリーかつオープンソースである[7]。また、軽量スレッディングのための機能、Pythonのような動的型付け言語のようなプログラミングの容易性、などの特徴もある。Go処理系としてはコンパイラのみが開発されている。マスコット・キャラクターはGopher。

- Swift

アップルのiOSおよびmacOS、Linuxで利用出来るプログラミング言語。Worldwide Developers Conference (WWDC) 2014で発表された。アップル製OS上で動作するアプリケーションの開発に従来から用いられていたObjective-CやObjective-C++、C言語と共存することが意図されている[2]。
Swiftは、マルチパラダイムのコンパイラプログラミング言語であるが、XcodeのPlaygroundsの上やターミナルでインタラクティブにデバッグする事が可能である。LLVMコンパイラが使われており、ライブコーディングに対応していることが特徴[3]。

- Kotlin

Kotlin(コトリン)は、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、静的型付けのオブジェクト指向プログラミング言語である。

※上記は、wikiのコピペなのでより深く知りたい方はwikiをご覧ください。

これらの言語を用いて開発を行うのですが、より早く正確に開発するために使われる【雛形】がフレームワークです。フレームワークを利用することで、ソフトウェアの骨組みを用意してくれるため少ないコードで機能やデザインが実現できたりとメリットが多々あります。
その中から今回は、数ある言語の中から「Python」と「Ruby」にフォーカスを当て、解説していきます。

2. 開発言語を更にフレームワークにブレイクダウンして考えてみる。

画像3

 2-1. Pythonを事例に考えてみる

Pythonを用いることで、WebアプリやAI・機械学習を用いたデータ解析、マーケツール、ゲームなど様々なものを開発することができます。

Pythonのフレームワークは、以下2種類に分類されます。
 ※ポピュラーなものを抜粋しています。


## Webフレームワーク
## 機械学習系フレームワーク

## Webフレームワーク
 - Django
 - bottle
 - Flask
 - Tornado
## 機械学習系フレームワーク
 - Tensorflow
 - Keras
 - Pytorch
 - Jubatus
 - Chainer

画像4

分類するとこんな感じ。
 ※あくまで非エンジニアの所感
 ※円の大きさが世の中で流行っている量を明示しています。。完全に感覚です。

では実際に、Wantedlyの候補者をみていながらスカウトを考えていきましょう。

 2-2. 実際にスカウトを送付してみる。

※前提として、Pythonで機械学習系の事業会社と仮定してスカウトを送付しています。

画像5

この方はPHP/Nuxt.js/Djangoをスキルセットとして持っていらっしゃるので、サーバーサイドエンジニアの可能性が高いです。
こういった場合、このような文面で送るのはいかがでしょうか…?

サーバーサイドの開発を多数従事していらっしゃったのですね。
当社は一貫してPythonで開発を行っており、○○様のような方のお力をお借りしたくご連絡差し上げました!もし、Pythonがお好きであればより技術を高めるために機械学習よりの技術も高めてみませんか…?
当社は未経験でもデータサイエンティストを募集しておりますが、〇〇様のようなPythonのご経験があれば早期的にお力を発揮していただけると思います。まずは、お話でもと思っておりますので、ご返信いただけますと幸いです。

画像6

このかたはAIの部門に知見のある方だとわかります。
機械学習とディープラーニングの違いはディープラーニングを訳すと深層学習となるため、広義な意味で上位概念だと捉えて良いと思います。
こういった場合、このような文面で送ってみるといいかもしれません。

最初はKerasから入られてより上位概念を学ぶためにTensorflowへと移行していったのではないかとお見受けし、特に機会学習系の技術がお好きな方ではないかなと思います。当社は機械学習における日本有数のトップランナーとして走り続けるために、技術への投資は惜しみません。現在ご興味のある技術について意見交換でもいかがでしょうか。

画像7

この方は、モバイル/サーバーサイド〜フロントエンド/機械学習と技術への知見が相当ある方なのでそこを訴求した文面が良さそうです。
フルスタックなスキルセットやディープテックへの知見と多くのスキルスタックをお持ちでいらっしゃり大変技術に明るい方だなと思い、ご連絡差し上げました。当社、機械学習の部門に力を入れ、さらなる事業成長を遂げていきたいと考えておりますが…如何せん上位概念に知見のある方がおらずでして…〇〇さんのような方にお力をお借りしたく思っています。
まずはカジュアルにお話でもいかがでしょうか。ご返信お待ちしております!

画像8

現在広義にある機械学習はPythonで研究/開発が行われることがほとんどですが、統計や解析をし良質なデータを得るためにはR言語を使用するケースも増えています。

PythonフレームワークからR言語まで、一貫して機械学習系の知見がおありの方だとお見受けしました。
R言語を学ばれているとのことですが、統計/解析などのデータサイエンス〜実際に機械学習に落とし込むところまで一貫性を感じますね。
当社は、まだまだスタートアップになりますので、今まで培ってこられたご経験を生かしよりリアルなデータを扱ってみませんか?
まずはカジュアルにお話しいただけますと幸いです。


3. 開発言語を更にフレームワークにブレイクダウンして考えてみよう。~Ruby編~

画像9

 3-1. Rubyのフレームワークについて

Rubyはサーバーサイド周りの開発言語であり、多くのサービスに使われている世界的にも有名な言語です。


Rubyのフレームワークは、以下2種類に分類されます。
 ※ポピュラーなものを抜粋しています。

## webフレームワーク
## マイクロフレームワーク
の二種類に分類されており…

## webフレームワーク
 - RubyOnRails
 - Hanami
 - Sinatra
 - Padrino
## マイクロフレームワーク
 - cuba microframework
 - Camping
 - Ramaze

画像10


分類するとこんな感じ。
 ※あくまで非エンジニアの所感
 ※円の大きさが世の中で流行っている量。完全に感覚です。 
では実際に、Wantedlyの候補者をみていながらスカウトを考えていきましょう。
 

 3-2. 実際にスカウトを送付してみる。

※サーバーサイドがRubyでフロントエンドがJavaScriptで開発を行っている会社としてスカウトを送ると仮定します。

画像11

使用言語をみる限りではありますが、サーバーサイドとフロントエンド両方の知見をお持ちでいらっしゃる方だと思います。

汎用的な技術を学ばれている印象を感じ、当社のスキルスタックとの親和性を感じご連絡差し上げました。
当社はサーバーサイドをRuby、フロントエンドはVue.jsで開発をしています。この理由としてはスピード感を持って開発をやりたい反面大規模なサービスに今後していきたいという気概を込めています。
一緒に盛り上げていただける仲間を募集しています、少しでもご興味をお持ちいただけるようであれば、カジュアルにお話しいただけますと幸いです!

画像12

柔軟性が高く小規模なアプリケーションに特化したフレームワークインストールは簡単に行える反面、拡張性はあまりない「Sinatra」を使用している方です。

また、技術に関しての興味が分散している可能性があるので、そこの確認を含めカジュアル面談をしたいという導線を作ります。
多数の言語に知見をお持ちでいらっしゃり、多方面へのご関心が高い方だなとお見受けいたします。また、私はRubyが好きなのですが…Sinatraでの開発は柔軟性が高くて走りだしはとてもいいですよね。
現在は、より拡張性を持たせた開発を進めており…
多方面に興味がおありかと思いますので、まずは現在のご状況をお伺いさせていただきますと幸いです。それではご返信お待ちしております!


4. 最後に

いかがでしたでしょうか?

今回、非エンジニアの僕がネットから拾ってきた情報 × 独断と偏見でフレームワークをある程度プロットし、それに合わせた訴求をするスカウト文を送るためのnoteを書かせていただきました。

エンジニア採用がうまくいかない事例はそう珍しくないと思うのですが、その一つに採用側の知識が足りていないことがあるのではないかととふと思いました。

言語とか分からないから履歴書を読んでもスキルセットが分からない。
のではなく、分からないなりに勉強することとで履歴書の見方からスカウトの文面から変わるのではないかと思います。

技術の進歩は目覚ましいので、これを知って満足せず最新技術をキャッチアップしていかなければなりませんね。

※当社の採用/人事組織系支援にご興味がある方はお気軽にお声掛けください。

▼ 採用支援事業について

HRインキュベート事業
スタートアップ/ベンチャー企業向けの採用支援を行なっています。 ​ ​

お問い合わせはこちらから


当社のサービスに関するお問い合わせは、以下のフォームよりお願いいたします。


いいなと思ったら応援しよう!