100日後にエンジニアになるキミ - 100日目 - まとめ - 100日でエンジニアになる方法

昨日までのはこちら

[100日後にエンジニアになるキミ - 95日目 - 開発環境 - Docker について](https://qiita.com/otupy/items/4569ffc8a1bd90bcd0b9)

[100日後にエンジニアになるキミ - 94日目 - 開発環境 - 仮想化について](https://qiita.com/otupy/items/0b8db399900a5517eb97)

[100日後にエンジニアになるキミ - 91日目 - 運用 - 監視について](https://qiita.com/otupy/items/532d0f78b103d3b39b2d)

[100日後にエンジニアになるキミ - 90日目 - 開発 - CIについて](https://qiita.com/otupy/items/25786feaaa1b1f4d203f)

[100日後にエンジニアになるキミ - 88日目 - データ - データ転送について](https://qiita.com/otupy/items/e720e175c83a84e101c9)

[100日後にエンジニアになるキミ - 86日目 - データベース - Hadoopについて](https://qiita.com/otupy/items/0016a1b9f496627619b6)

[100日後にエンジニアになるキミ - 76日目 - プログラミング - 機械学習について](https://qiita.com/otupy/items/6a4f960ba4df06e27050)

[100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて](https://qiita.com/otupy/items/f53e2e7d16adf80b5acf)

[100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について](https://qiita.com/otupy/items/5828ac7450c5ba8d6931)

[100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1](https://qiita.com/otupy/items/0196897ae4d2134794fa)

[100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて](https://qiita.com/otupy/items/f1a5e81633b868f3b5ed)

[100日後にエンジニアになるキミ - 53日目 - Git - Gitについて](https://qiita.com/otupy/items/0abaad82a7f3fea73f1f)

[100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて](https://qiita.com/otupy/items/d1765f1541a104ed6133)

[100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて](https://qiita.com/otupy/items/7af17635d576677606dc)

[100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1](https://qiita.com/otupy/items/6d1e5453f530e07b7aec)

[100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1](https://qiita.com/otupy/items/2f71d5f9c754b29d9555)

[100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1](https://qiita.com/otupy/items/61a97863f6df14171994)

[100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1](https://qiita.com/otupy/items/cd2315dcb38671cfded0)

[100日後にエンジニアになるキミ - 1日目 - 目標設定](https://qiita.com/otupy/items/fd41e0f74cf845e336fa)

本日はこれまでのまとめです。

## 1日目:目標設定

[1日目 - 目標設定](https://qiita.com/otupy/items/fd41e0f74cf845e336fa)

まずエンジニアになりたいと思うかどうかですね。
なりたければそれなりにお勉強しないと難しいです。

エンジニアもいろんな職種があります。

フロントエンドエンジニア
サーバーサイドエンジニア
ゲーム開発エンジニア
組み込み系エンジニア
インフラエンジニア
セールスエンジニア
etc

職種によって求められるスキルセットがちょっとずつ変わってくるので
何をやりたいかを決めるのが一番最初に考えることだろうと思います。

ざっくり、エンジニアになりたいであれ、それぞれの職種で最低限求められることを
全て押さえておく必要はあるだろうと思います。

とりあえず`プログラミング`が出来れば、サーバーサイドで働くことは
可能だと思います。

目標がうまく定まっていない人は`プログラミング`だけでも
始めると良いんじゃなかろうかと。

## 2-5日目:環境構築

プログラミングとかをやるにしても
まずはじめは開発環境構築からやらないとダメですよね。

PCを買ってセットアップしましょう。

自分のやりたい言語が定まっているなら
その言語用の開発環境などをインストールしましょう。

特に言語の選択ができていない人は
`Python`言語がオススメです。

`Anaconda`をインストールしておきましょう。

また`コーディング`をするには
テキストエディターもあると良いです。

好みのテキストエディターもインストールしておきましょう。

## 6-9日目:HTMLについて

[6日目 - HTMLの基礎1](https://qiita.com/otupy/items/cd2315dcb38671cfded0)


いきなり`プログラミング`をする前に
準備運動として`コーディング`をしてみましょう。

これであなたの適性が分かります。

HTMLを勉強して`コーディング`に慣れてみましょう。
ここで`コーディング`にすらつまずく様であれば
あなたはエンジニアには向いていません。

エンジニアになることを諦めることをお勧めします。

コーディングはエンジニアリングのどの分野にも出て来ます。
・サーバーの設定ファイルを書く
・コマンドを考える、実行する
・シェルを書く
・プログラムを書く
etc

コーディングすら出来なければエンジニアの仕事はなりたちません。

`HTML`でコーディングに慣れて、特に問題なければ
次は`CSS`にチャレンジしてみましょう。

## 10-13日目:インフラやサーバー、コマンドについて

プログラミングの前に、システムで稼働しているプログラムは
PCで稼働している訳ではありません。

サーバーと呼ばれるマシンの上でプログラムが動いているので
そういったインフラ側の仕組みがどうなっているのかを
知っておくのも良いかと思います。

プログラミングだけではエンジニアとして仕事をするのは難しいので
エンジニアリングの仕事の一部を知っておくことも
今後の選択肢を考える上ではすごく役立つハズです。

サーバーの仕組みやコマンドなどを試してみましょう。

## 14-17日目:CSSについて

[14日目 - CSSの基礎1](https://qiita.com/otupy/items/61a97863f6df14171994)

`CSS`は`HTML`より少し難しくなります。
コードを書く量も増え、書き方も正しく書かなければならない部分が増えます。

HTMLとCSSを覚えるだけでも、ウェブデザイナーの仕事の一片にはなります。
普段彼らがどんな仕事をしているかは、ここで想像がつくんじゃないでしょうか。

## 18-23日目:Javascriptについて

[18日目 - JavaScriptの基礎1](https://qiita.com/otupy/items/2f71d5f9c754b29d9555)

`CSS`まで出来るなら`Javascript`に入りましょう。

一番先に覚える言語として`Python`を選択するなら
ここを後回しにして飛ばしても大丈夫です。

`Javascript`を覚えるとフロントエンドの開発をすることができる様になります。
加えてサーバーサイドでも用いられている言語ではあるので
そちらも対応できる様になります。

昨今のWEBの仕組みでは`Javascript`が使われていないものは
珍しいと思いますので、押さえておいて損はありません。

## 24-35日目:Pythonについて

[24日目 - Python言語の基礎1](https://qiita.com/otupy/items/6d1e5453f530e07b7aec)

言語としては`Javascript`を先にやるか、こっちを先にやるかで迷うかもしれません。
おそらく`Python`の方が簡単だろうと思います。

`Python`言語は`WEB開発`以外にも`機械学習`や`AI開発`の分野でよく用いられる言語です。

特に機械学習の分野では、専用のライブラリ群が充実しすぎており
他の言語を選ぶことが難しくなっています。

比較的文法も簡単な言語であるため、一番最初に学ぶ言語としては
適している言語だと思います。

学ぶ量は多いですが、ここでプログラミングを覚えてみましょう。

## 36-41日目:データベースとSQLについて

[36日目 - データベースについて](https://qiita.com/otupy/items/7af17635d576677606dc)

昨今のシステムでは必ずといって良いほど`データベース`を利用します。
その`データベース`を操作するための言語である`SQL`も押さえておく必要があります。

`データベース`自体は好みの`データベースを`インストールしましょう。
`SQL`は標準的な機能であれば`データベース`による違いはほとんどありません。

ここで`データベース`の仕組みと`SQL`を覚えておきましょう。


## 42-42日目:クラウドサービスについて

[42日目 - クラウドサービスについて](https://qiita.com/otupy/items/d1765f1541a104ed6133)

始めの方でサーバーやインフラの仕組みについてやっていますが
最近の開発では、自前でサーバーを買わずに、クラウドサービスを利用して
サーバーなどのインフラを構築することが増えて来ています。

そのため、クラウドサービスの仕組みなどを押さえておく必要があります。
クラウドサービスの名前や、役割などを覚えておきましょう。

## 44-52日目:プログラミングに関係する話

ここで取り扱っているトピックはプログラミングや
システム開発でよく出てくる事柄についてをやっています。

取り扱っているトピックは

```
ログ
ロギング
OS
クーロン
ネットワーク
通信
テスト
コーディング規約
正規表現
データ
ファイル形式
フレームワーク
学習サービス
```

こんなトピックについて触れています。
知らない部分はぜひ押さえておきましょう。

## 53-58日目:Gitについて

[53日目 - Gitについて](https://qiita.com/otupy/items/0abaad82a7f3fea73f1f)

`Git`は今では開発には欠かせないツールとなっています。
`Git`でソースコードを管理し、開発を円滑に進めることができます。

仕組みや、コマンドなどを押さえておき
大規模な開発に参加しても困らない様な知識を身につけておきましょう。

## 59-65日目:アルゴリズムやデータ構造について

[59日目 - アルゴリズムについて](https://qiita.com/otupy/items/f1a5e81633b868f3b5ed)

プログラミングができる様になったら、それをもう少し掘り下げていきましょう。
プログラムでは`アルゴリズム`や`データ構造`がとても重要になって来ます。

効率的なプログラムを書くために必要な手法や考え方を学んでおきましょう。

`アルゴリズム`を学ぶコツとして暗号があります。
暗号は`アルゴリズム`で出来ているものなので、暗号を学ぶことで
`アルゴリズム`というものが理解出来るんじゃないかと思います。

`確率`などもプログラミングではよく出てくる考え方なので
合わせて押さえておきましょう。

## 66-68日目:自然言語処理について

[66日目 - 自然言語処理について](https://qiita.com/otupy/items/5828ac7450c5ba8d6931)

プログラミングの中でも`自然言語処理`という分野があります。
日本語を取り扱うことはシステム開発の現場では欠かすことのできない事項ですので
どんなことをしているのか、ざっくりでも良いので知っておくことが必要かと思います。

## 70-75日目:スクレイピングについて

[70日目 - スクレイピングについて](https://qiita.com/otupy/items/f53e2e7d16adf80b5acf)

`スクレイピング`はWEBサイトからデータを取得するための技術です。
これを押さえておくと、データを集めるのが非常に楽になります。

通信の仕組みや、HTMLの解析の技術も身につくので
押さえておいて損のない技術体系です。
ぜひ覚えておきましょう。

## 76-85日目:機械学習について

[76日目 - 機械学習について](https://qiita.com/otupy/items/6a4f960ba4df06e27050)

ここからは長い機械学習についてのお話です。
機械学習自体は、学んでも学びきれないくらいの量があり
全てを完全に把握することは困難だと思います。

まずはざっくりと学んで、その道に進みたければ
再度詳細まで学ぶ方向に進めば良いと思います。

今や機械学習を使っていないサービスも少なくなって来たので
一般的な知識は押さえておいた方が良いかと思います。

この機械に勉強しておきましょう。

## 86-89日目:Hadoopやデータ周りについて

[86日目 - Hadoopについて](https://qiita.com/otupy/items/0016a1b9f496627619b6)

昨今ではサービス内で使用されるデータ量が1台のマシンで賄うことの出来る量を
はるかに超えています。

そのため大量データを取り扱う技術については押さえておいた方が良いかと思います。

`Hadoop`というものが何故利用されているのかということや
そのデータを分析の現場で活かすために、どうしているのかを
押さえていく必要があります。

`ETL`というデータ周りの仕組みも勉強しておきましょう。

## 90-93日目:運用や監視について

[91日目 - 監視について](https://qiita.com/otupy/items/532d0f78b103d3b39b2d)

[90日目 - CIについて](https://qiita.com/otupy/items/25786feaaa1b1f4d203f)

システム開発では`ビルド`や`監視`など
プログラムを書くこと以外の仕組みづくりも大事です。

運用や保守という仕事についてや、開発の見積もり方についても触れています。
コーディングをしない職種につこうと思っている方は
ここら辺の技術体系や仕組みを覚えておくと良いでしょう。

## 94-99日目:仮想化やDockerについて

[95日目 - Docker について](https://qiita.com/otupy/items/4569ffc8a1bd90bcd0b9)

[94日目 - 仮想化について](https://qiita.com/otupy/items/0b8db399900a5517eb97)

開発環境の構築作業は労働時間を圧迫していきます。

効率のより開発手法として`コンテナ`を用いた開発が増えて来ました。
ここら辺の知識を押さえておく必要があるかと思います。

`コンテナ`技術の代表格である`Docker`の仕組みを押さえておきましょう。


## まとめ

以上が100でエンジニアになる方法としてのまとめです。

結構覚えることいっぱいありましたねーー
これが必要最小限ですね。

これだけ覚えてようやくスタートラインですが
ここまでちゃんとやっていれば、あなたは
エンジニアになれる知識が身についているハズです!!!

明日からはエンジニアと名乗っても
問題ない！！！

エンジニアの仕事してなくてもねwww。


## 作者の情報
乙pyのHP：
http://www.otupy.net/

Youtube：
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter：
https://twitter.com/otupython