paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

エンジニア目指す19卒向け・5分でわかる自社開発と受託開発の違い【業界研究・企業研究】

f:id:paiza:20180410160547j:plain
Photo by Ruiwen Chua
f:id:paiza:20140916135428p:plainこんにちは、谷口です。

ITエンジニアを目指す就活生の皆さんは、応募する企業をどんな基準で選んでいますか?

そもそも、業界研究・企業研究をして「企業ごとの違い」を理解できていますか?

たとえば「文系出身・プログラミング未経験者でもOK!」という求人と「開発経験や情報系の知識があることが必須・すぐに実務に入ります」という求人では、仕事で求められるスキルや将来的なキャリアパスなどは異なります。

プログラミングができればどこでもいいし、どこに入社しても同じでしょ」という人もいるかと思います。でも、そんな感じであまり考えずに就職先を選んでしまって、入社後に「思ってたのと違う…」と後悔する人や、そのせいで早々に転職を考えるはめになってしまう人が毎年あとを絶ちません。

今回は、そうならないためにIT業界の構造や、業種ごとに求められるスキルや仕事内容の違いなど、企業研究・企業選びに役立つ情報をご説明します。どんな企業に応募するか、どんな仕事を目指すかを考える際の参考になればと思います。

■開発エンジニアを募集している企業の種類とその特徴

今回は自社開発・受託開発の元請け・受託開発の下請けにおける開発部門のエンジニアという分類で説明していきます。

※このほかにも組み込みエンジニアや社内エンジニア、よりニッチな領域を研究開発をしているエンジニアなども含めると分類は非常に多岐に渡ります。また、大手企業では、開発部門以外にもインフラエンジニア、ネットワークエンジニア、セールスエンジニアなど職務が細かく分かれる場合もあります。より深く専門性を求められる求人は中途転職経験者の募集が多い傾向にあるため、今回は一般に新卒求人が多く、開発を担当する職種に絞ってご紹介します。

■自社開発

自社製品であるサービスやアプリケーション、ゲームやパッケージソフトなどを開発している企業です。B2B・B2C問わず多種多様なプロダクトがあります。

◆作るもの

  • Webサービス
  • スマホアプリ
  • パッケージソフト

など…

◆大手の自社開発企業

たとえば楽天、クックパッド、サイバーエージェントなどといった企業がこれに当たります。大手の中には情報系の知識がない人向けの育成枠を設けている企業もありますが、ほとんどの場合、開発エンジニアとしての即戦力が求められます。

◇メリット

  • 比較的自由な社風(私服通勤、裁量労働制、イヤホンOKなど)の企業が多い
  • ユーザー数が多い有名サービスやアプリなどの開発に携われる
  • 比較的新しい技術を使う企業が多い
  • 研修や福利厚生、昇給制度などがしっかりしている企業が多い

◇デメリット

  • 開発部門の人数が多いと、仕事が細かく分業されて、裁量が少ない場合もある

◇大手の自社開発企業で求められる資質

  • 開発スキル・情報系の知識(育成枠の場合も、採用時に論理的思考ができるか・地頭のよさなどが重視されます)
  • 新しい技術を追っていける感度(技術やモノ作りが好きであること)
  • 課題解決力(課題を見つける・対策を考える・対策を実施する)

◆小規模のスタートアップ自社開発企業

自社サービス開発企業と言われると前述のような有名サービスを提供している企業が思い浮かぶと思いますが、まだ数人~数十人規模の小規模スタートアップ企業も多くあります。paizaを開発しているギノもこちらにあたります。

小規模な企業の場合、かつては経験のある中途転職者の募集が中心でしたが、最近は「ある程度の知識やスキルがある人なら新卒も採用したい」というところもかなり増えています。

◇メリット

  • 大手と同様に比較的自由な社風の企業、新しい技術を採用している企業が多い
  • 幅広く裁量の大きい仕事に携われる

大手に比べると人数が少ないぶん、企画や分析にも携われるなど、サービスの企画・開発・運営に関するさまざまな業務に幅広く携われるのが魅力かと思います。

◇デメリット

  • 安定性には欠ける
  • 新しい企業だと研修や会社の制度が整っていない場合もある

すでに「大企業なら絶対安定!」という世の中でもないですが、やはり小規模なスタートアップのほうが安定性には劣ります。また、これまでになかった新しいサービスを作って、軌道に乗せるのは、夢がある反面かなり大変な仕事です。

加えて、これはメリットともデメリットともなるポイントですが、明確なキャリアパスが用意されているわけではないため、将来的に自分でどんな方向に進むのか(例えば開発チームをまとめるリーダーポジションを目指すとか、そうではなく専門性を深めていくとか……)は自分で考えなければなりません

与えられた仕事をしていれば出世コースに乗れる、みたいな仕事ではありませんが、開発スキルとキャリアビジョンがあれば、自分の判断で転職や起業なども実行に移しやすい環境です。

◆スタートアップの自社開発企業で求められる資質

  • 開発スキル
  • 技術を追う感度
  • スピード感
  • ユーザーなどの調査、分析、企画スキル

研修などが用意されていない企業も多く、即戦力レベルの開発スキルが求められます。また、作ると決まった機能をすぐに開発してリリースして反応を見て改善して……といったことがよくあるため、そのスピード感についていけるかどうかも重要です。

■受託開発

顧客となる企業から依頼を受けてシステム開発をやっているのが受託開発企業です。(システム インテグレーター、SIer、SIと呼ばれることも多いです)

例えば、銀行ではATMで作動するシステムが必要です。そこで、銀行からの「こういうシステムを作ってください」と注文を受けて、その通りに作るのが受託開発企業の仕事です。(銀行から直接注文を受けたのが元請け企業で、この元請けから注文を受けて、大きなATMシステムを分割したパーツごとにプログラミングして作っていくのが下請け企業となります)

◆作るもの

  • 金融系・官公庁系・医療系のシステム
  • 民間の非IT企業のサービス(メーカーの通販サイトなど)

など…

B2Bやバックエンドのシステムが多い傾向にありますが、B2Cサービスの依頼を受ける場合もあります。

◆元請け企業

元請け企業の場合、主に前述のATMのシステムのような大規模開発で、プロジェクトマネージャーとして開発担当者たちをまとめてシステムを作り上げるのが仕事です。社員は入社後大体1~2年ほどで、プログラミングをするよりもマネージャー側の管理業務を任されるようになります。

受託開発は、顧客から依頼を受けた上で「この日までにいくらでこういうシステムを作ってください」と契約を交わした上で開発業務に取り掛かるため、基本的にはシステムができあがればお金は入ってきます。また、元請け企業は大企業が多く、経営が比較的安定しているところも多くあります。

◇メリット

  • 上位請けは大企業で経営が安定していることが多い
  • いろいろな開発案件を経験できる
  • 明確なキャリアパスがある

元請けに近い上位企業になるほど、大手企業で経営が安定していたり、研修制度や昇給制度、福利厚生なども充実していたりします。また、仕事がマネジメント中心になっていくキャリアパスも用意されています。

◇デメリット

  • プログラミングする仕事は数年でなくなる
  • 仕事で新しい技術を使えないことが多い

前述の通り、キャリアを積んでいくと、そのぶん開発よりもマネジメント業務が中心となっていくため、仕事を通して開発スキルを磨くのが難しくなっていきます。

また、使用できる開発環境は顧客や既存システムの都合で限定されることも多く、「仕事で最新技術をがんがん使いたい」という人にはあまり向かないかもしれません。

◇元請け企業で求められる資質

  • 顧客とのすり合わせや交渉ができる
  • スケジュールや人員を管理できる
  • システムを設計するスキル
  • 技術選定ができる

受託開発の場合、何としてでも期日や予算を守ってシステムを完成させなければなりません。そのため、プロジェクトの人員やスケジュールを管理するスキルが必要となります。

また、「受注したシステムをどんな技術を使って作るのか?」を決める技術選定をする機会もあるため、開発から離れてもある程度の技術的な知識は必要となります。

◆下請け企業

元請けから仕事を受注して、実際の開発を行うのが下請け企業です。ややこしい構造ですが、大規模な開発案件の場合、顧客から元請け企業が受注し、大きなシステムのパーツを分割してさらに二次請け、三次請けへ発注する……というプロセスで作られるものがほとんどです。この二次請け、三次請け……n次請け……とおりてくるのが下請け企業です。

◇メリット

  • 未経験でも入社でき、研修でプログラミングを学べる
  • 開発要件は決まっているので、実装だけに集中しやすい
  • 元請け企業よりも手を動かしていられる期間が長い

◇デメリット

  • 元請けと同様に、開発環境が限られているため仕事で新しい技術を使えないことも多い
  • スケジュールのしわよせを受けて激務になることもある
  • 元請け企業や顧客企業で常駐して開発する仕事が多い

元請け企業や顧客企業の都合に合わせるため、自社ではなく常駐先での開発が非常に多くなります。また、期限どおりに作ることが要求されるため、スケジュールの厳しいプロジェクトに入ると業務量のコントロールがしにくく激務になってしまう場合もあります。

◇下請け企業で求められる資質

  • タスクを管理できる
  • 納期までに作りきる
  • 設計書などのドキュメントを読んで理解できる

決められた技術を使って、仕様に沿ったモノを期日どおりに作ることが求められます。

■まとめ

同じ開発エンジニアでも、業務の進め方や求められるスキルはこのように異なります。

どちらがよい・悪いということではなく、「自分がどんな仕事がしたいか」「どんなエンジニアになりたいか」を考えて応募先を選ぶのがよいでしょう。また、応募する前に業務内容や特徴を把握できていれば、入社してから「思ってたのと違った」「こんなはずじゃなかった」といったミスマッチも減らせます。

新卒向けエンジニア求人について、詳しくはpaiza新卒の掲載求人をごらんください。
paiza新卒


また、動画でプログラミングが学べるpaizaラーニングでは、「ITエンジニアの就活準備」講座を公開しています。IT業界の構造やエンジニアの働き方についてさらに詳しく学べるレッスンや、就活で使えるポートフォリオの作り方を学べるレッスンが【完全無料】で見られます。

詳しくはこちら




paiza新卒では、プログラミング問題を解いて規定のランクが獲得できていれば、事前の書類選考なしで確実に企業の面接を受けることができます。また、paiza新卒が応募者と企業の間に立って面接の日程調整などを行うため、わずらわしいやりとりに時間をとられず、スムーズに就活を進めていけます。

Skype面接OKの企業も多数掲載しておりますので、自宅にいながら面接を受けることも可能です。「東京の企業に就職したいけど、就活は交通費がかかりすぎる」「研究で忙しいのに、就活は移動に時間がかかりすぎる」という方もぜひご利用ください。

さらに、paiza新卒では「就活支援金制度」を実施しています。スキルランクが高い学生の就活をサポートするため、最大3万円分を補助する制度です。こちらもぜひチェックしてみてください。

「就活支援金制度」の申請について、詳しくはこちら
paiza就活支援金とは | ITエンジニアを目指す学生の就活サイトpaiza新卒

paiza新卒

初心者向け・C#が動画で学べる!プログラミング学習コンテンツ7選

f:id:paiza:20180409121037j:plain
Photo by romana klee
f:id:paiza:20140916135428p:plainこんにちは。谷口です。

C#初心者の皆さんは、普段どうやって勉強をしていますか?

  • Web上で学習サービスを探す
  • 教えてくれる人を探して聞く
  • スクールに通う
  • 書籍や学習サイトに書いてある情報を読む

などの方法があるかと思いますが、「学習サイトやYouTubeなどの動画」でも、C#について学ぶことができます。

動画を使えば、無料、もしくは安価で楽しく・効率よくC#について勉強できます。

今回は、そんな動画やスライドなどを見ながらC#を学べる学習コンテンツを7つご紹介します。


【目次】

■C#が動画やスライドで学べる学習コンテンツ

Microsoft Vitual Academy

※日本語対応
f:id:paiza:20180130125234j:plain
Microsoft DeveloperNetwork(MSDN)が提供する提供のオンライン学習サービスです。動画やスライドを見ながらC#の書き方やVisualStudioの使い方などを学べるコースが公開されています。

◆Brackeys:How to program in C# - Beginner Course

※英語
www.youtube.com
主にゲーム開発に関するいろいろなチュートリアルが多数紹介されている動画チャンネルです。C#の初心者向けチュートリアルコースがあります。

◆thenewboston:C# Tutorial For Beginners

※英語
www.youtube.com
さまざまな言語のチュートリアル動画が公開されているチャンネルで、もちろんC#のチュートリアル動画もあります。動画数が大変多いですが、割と音声が小さめなので音量注意。

◆9cubed:【プログラミング講座(C#)】

※日本語
www.youtube.com
C#の初心者向けのプログラミング動画講座です。動画は現在140本もあり、説明も丁寧でわかりやすいです。

ドットインストール

※日本語
f:id:paiza:20171205170439j:plain
動画を通してC#の書き方、環境構築方法などが学べます。

paizaラーニング「C#入門編」

※日本語

オンラインでプログラミング学習ができる「paizaラーニング」には、C#はもちろんJava、Python、Ruby、PHP、C言語、JavaScript、HTML/CSS、SQLなどなど多数の言語から、Webアプリ開発入門、ITエンジニアのキャリア入門などのレッスンもございます。

一部有料だった「C#入門編」が今年から【全編無料】となっております。ご興味のある方はぜひごらんください。

コードガールこれくしょん

※日本語

paizaが公開しているコードガールこれくしょん略してガルこれは、ナビゲーターと一緒にプログラミング問題を解き、「コードガール」を集めながらストーリーを進めていく、プログラミング学習ゲームコンテンツです。C#はもちろんPHP、Java、Pyhton、Ruby、C、C++、JavaScriptに対応しています。

ゲーム内ではクエスト報酬やログインボーナス・ミッションクリア等の各種特典として手に入る「コイン」や「ダイヤ」を使って、ガチャでさまざまな「コードガール」を収集することができます。クエストで有利になる特殊スキルを発動させたり、「これくしょん」に入れてマイページに飾ったりと、コードガールをたくさん集めるほど楽しみ方が広がります。


■まとめ

C#はサーバー用のプログラムやゲーム、アプリ開発、企業向け業務システムなどに幅広く利用されているプログラミング言語ですが、特に近年はゲームエンジン「Unity」とC#を使えば個人でも簡単にゲーム開発ができるため、ゲームエンジニアを目指す人からの人気も高まっています。

「興味がわいてきた!」という方は、学習サイトでも、書籍でも、自分が気になるところから挑戦して、ぜひC#に触れてみてください。

そしてある程度の基礎が身につきましたら、ぜひpaizaでご自分のスキルをはかってみてくださいね。


paizaラーニング」では、今まで一部有料だった「C#入門編」を、今年から【全編無料】で公開しております。





paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのスキルチェック

現役エンジニアが使っているSublime Textの超便利プラグインと設定21個

f:id:paiza:20180404182624j:plain
Photo by Antonio Tajuelo
長田です。

みなさんコーディングするときのエディタって何を使ってますか?

paizaはRubyで作られているので、中のエンジニアもRubyMineを使っている人が多いんですが、今年入社した私はSublime Text派です。Sublimeはいいぞ…。

今回は、Sublime Textを使うメリット・デメリット、実際に開発で使っていて便利なプラグインや設定の小技とかを書きます。Sublime仲間の皆さんや、Sublime使ってみたいなっていう人の参考になればうれしいです。


■Sublime Textを使うメリット

◆シンプル

Sublime Textは、有志が作るパッケージなどで自由にカスタマイズできますが、そのぶん最初はあまり機能が充実していません。

これはデメリットに感じる人もいるかもしれませんが、私は「いろいろやってくれるけど初期状態からすでに重くて、設定をいじらないと軽くならない」タイプのリッチなエディタが嫌いなので…。

「自分が必要な機能だけを付け加えていく」ことができて、シンプルで軽い状態を保ちやすいところはメリットに感じています。

◆速い

正規表現を使った全文検索や、プロジェクト間のファイル検索・移動など、標準機能の動きがとにかく速いです。パッケージもほとんどが軽くて速い。

◆ カスタマイズが自由

後述するパッケージもそうですが、その気になればすべてのショートカットキーを自分好みに変えることもできます。

◆コマンドパレットが豊富

`Command + Shift + P` で開ける「コマンドパレット」で、実行可能なコマンドを簡単に探して実行できます。

Sublime Text上でできることはほぼすべて網羅されているので、とてもわかりやすいです。

Command Palette — Sublime Text Unofficial Documentation

◆パッケージが豊富

メジャーどころは今でも定期的にアップデートされています。

◆設定ファイルが全てJSON形式のテキストファイル

テキストファイルなので、新しいPCや環境に移行しても設定を移植しやすいです。ほかの人の設定を適用したいときも簡単にできます。

◆右側のミニスクロールバー

編集中のファイルの、大体の形を把握しながらスクロールできます。巨大なファイルを編集する際にはとても役立ちます。

◆無料でも使える

たまに「寄付する?」という表示は出ますが、基本的に無料で使えます。

■Sublime Textのデメリット

◆日本語だと不自然な動作のときがなくはない

最近はだいぶマシになりましたが、全文検索時に「変換確定のEnterキー」を押したときに検索が走っちゃうときがあります。

↓回避方法もあります。(私はもう慣れたのでしてないですが…)
Sublime Textの検索窓に日本語を入力する方法 · GitHub

◆日本語化しづらい

単純にプラグインを入れて終わり…とはいかないので、注意が必要です。

参考記事
qiita.com

◆最近落ち目…

最近は日本での人気が下がってきているのもあって、日本語の情報が徐々に少なくなってきている気がします…。

■Sublime Textの便利なプラグイン

◆Sublime Package Control

Installation - Package Control

これがないと始まらない。パッケージの管理をUI的にするためのものです。

(逆に言えばこれだけは、公式からインストール用のPythonコードをコピペして実行しないといけないです。エンジニアっぽい!)

◆AlignTab

github.com

コードの整形を簡単に実現してくれます。

参考記事
qiita.com

◆SFTP

wbond.net

Sublime Text上からSFTPを使ってサーバ上のファイルを直接いじったり、ローカルの作業ディレクトリと同期させて作業できたりします。

◆Boxy Theme

github.com

見た目を簡単におしゃれにしてくれます。7つぐらいあるテーマの中から1つ選ぶだけ。面倒くさがりでも手軽におしゃれにできます。

◆SublimeLinter

Welcome to SublimeLinter — SublimeLinter 4.0.0 documentation

Lintツール(ソースコード静的解析・エラー検出)をSublime Text上でできるようになります。このパッケージにひもづいた「SublimeLinter-rubocop」などを一緒にインストールすると、対応するLintツールが使えるようになります。

◆Sublimerge 3

www.sublimerge.com

異なるファイルをマージするためのツールです。2つのファイル間の差分を表示するのによく使ってます。

◆All Autocomplete:

github.com

標準のオートコンプリート強化。

◆AdvancedNewFile

github.com

新規ファイルや新規フォルダの作成を補助してくれる。

参考動画
www.youtube.com

◆AutoFileName

AutoFileName - Packages - Package Control

ファイル名の補完。

◆BracketHighlighter

github.com

`[]`、`()`、`{}`、などのかっこ表示の強調化

◆ConvertToUTF8

github.com

SJISファイル等をUTF8に変換してくれます。(Sublime Textは標準でSJISを取り扱っていないので…)

◆Git

github.com

Sublime Text 上でGit操作が可能になります。

◆GitGutter

github.com

Git管理ファイルにおいて、変更行を視覚化してわかりやすくしてくれます。

◆random-sublime-text-plugin

Random Everything - Packages - Package Control
ランダムのテキストを生成してくれます。

◆Sublime Files:

Sublime Files - Packages - Package Control

ファイル操作をSublime Text上のコマンドパレットでキーボード主体で実行できます。

◆SyncedSideBar

github.com

サイドバーのスクロールが現在編集中のファイルに追随するようになります。

参考動画
www.youtube.com

◆TodoReview

TodoReview - Packages - Package Control

サイドバーで開いているコード内にある「TODO: 」を検出してくれます。設定で自分好みにできます。

◆Trimmer

github.com

余分な空白を削除してくれます。保存時ではなく、自分のタイミングでしたい時に使います。


そのほか、開発する言語に応じてスニペットの追加やコード整形のパッケージをインストールしています。

■設定

◆terminalからコマンドで開くようにする

下記リンク先を見てコマンドを叩くだけで、 `subl` コマンドが使えるようになります。

OS X Command Line – Sublime Text 3 Documentation

これを使えば、terminal上で `subl hogehoge.rb` や`subl project_directory/` とすると、Sublime Textで開けるようになります。

◆インデントし直し(Reindent)のショートカットキー追加

`Preferences > Key Bindings - User` を開いて下記設定をすると、ショートカットー発で選択箇所のインデントが振り直されます。`command+ctrl+i` の箇所はお好みで…。

[
  ...
  { "keys": ["command+ctrl+i"], "command": "reindent" ,"args": {"single_line": false}},
  ...
]

◆ 設定ファイル

設定ファイルはJSON形式のテキストファイルなので、「Sublime Text Settings」などでググって、先人の設定をパクるのもありです!

下記は私の主な設定です。

`"auto_complete": true,`

自動補完。

`"copy_with_empty_selection": true,`

選択をしていない状態でコピーやカットをすると、現在行全てに対して適用される。

`"detect_indentation": false,`

起動時にtabとspaceの自動認識をしない。

`"detect_slow_plugins": false,`

プラグインが重い時に出てくるポップアップを消す。

`"ensure_newline_at_eof_on_save": true,`
`"index_files": true,`

対象のフォルダ内のファイルを全てインデックスする。高速なファイル間移動などを実現。

`"translate_tabs_to_spaces": true,`

保存時にtabをspaceに変更する。

`"trim_trailing_white_space_on_save": true`

保存時にむだなspaceを削除する。

■まとめ

Sublime Textは「The text editor you'll fall in love with」(恋に落ちるエディタ)というキャッチフレーズがついているんですけど、実際それぐらい使いやすいと思います。シンプルで軽くて速いし、プラグイン多いからカスタマイズしやすくて便利だし。興味のある方は、ぜひ使ってみてください。

www.sublimetext.com






paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのスキルチェック





※このブログで紹介しているキャンペーンやイベント、およびサイト内の情報については、すべて記事公開時の情報となります。閲覧されたタイミングによっては状況が変わっている場合もございますのでご了承ください。

ITプログラマー・エンジニア転職・就活・学習のpaiza

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編

エンジニアのためのプログラミング転職サイト|paiza転職

プログラミング スキルチェックエンジニア求人一覧

未経験からエンジニアを目指す人の転職サイト|EN:TRY

プログラミング スキルチェックエンジニア未経験可求人一覧

エンジニアを目指す学生の就活サイト|paiza新卒

プログラミング スキルチェックエンジニア求人一覧

ブラウザを開くだけで エディタ、Webサーバ、DB等の開発環境が整う|PaizaCloud