プログラミングを2か月間、日本人エンジニアの下でマンツーマンで学んできた

Webエンジニアに転職するために、独りで勉強を進めていましたが、
独学のデメリットを埋めるべく、[Value Space of Cebu](http://value-space.net/)に参加してきました。
私の結論として、参加して非常に良かったと思っています。

この投稿は、これへの参加経緯や2か月間の感想等になります。

※複雑なバックグラウンド持ちのエンジニア転職志望者による投稿であること、ご理解ください。

![DSC_0516.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/b650717e-7046-394d-a7bc-25b4e7676689.jpeg)
※2か月間セブなのに、海も観光も１回ずつのみと、部屋に缶詰(※自主的）でした。

## 経歴
- 2017年3月　九州の国立大学農学部植物系の学科を卒業
- 2017年4月　新卒採用で、畜産系の前職入社
- 2018年8月　前職を退職
- 2018年12月~　オーストラリアでのワーキングホリデー
- 2019年3~4月　セブでのプログラミング勉強
- 2019年5月~　豪に戻り、働きながら、独学再開。年内に転職したい(場所は問わず)

大学は農学部植物系学科ですが、農業生産システム工学研究室に所属し、卒論は自動除草ロボット用の『雑草中の作物列検出する方法』の研究でした。使用言語はC++、ライブラリとしてOpenCVを用いました。非情報系なのでCSの知識は無く、C++学習もオライリー本とWebしか頼る島がなく、まあ大変でした。

# 私について
## 機材＆環境
現機材：Lenovo X280
大学時代もWindows機で、Appleに触る機会は無かったです。

## 大学卒業以降のプログラミング勉強具合
最初は、web表示等の基本が知りたく、wordpressブログを開設し、HTMLとCSSを弄っていました。
その後Progate等を知り、HTML&CSS、wordpresで使われてるPHP等をしていきました。
申し込みから参加までに、ProgateでRubyonRailsとComandLine、Git、SQLをしました。

# 参加講座について
## 応募／参加経緯
プログラミングについて調べている中で[『プログラミング道場』](https://programming-dojo.com/)というブログを知り、そのブログ主の[ジョージさん](https://twitter.com/monkey_d_george)さんが2か月間の講師でした。3月からセブでプログラミング講座をするというtweetを見、参加しました。
『セブ』の理由は、海外転出届提出していたので、日本国外であることが税制上等で勝手が良かったのです。
オーストラリアに居るのも、同様です。

### 応募する際にしたこと
以前には侍云々があったため、まず講師がどのような人か／エンジニアか、[ポートフォリオ](https://programming-dojo.com/%E7%A7%81%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AA%E3%82%AA/)や[SNS](https://twitter.com/monkey_d_george)等を見ていきました。私が開講1番目ということで当然レビューはなく、たとえポートフォリオ見ても初学者で異業界出身の身には判断は難しかったです。
というわけで、『取り敢えず1か月間だけ』と言って、2か月目も継続しました。

2か月で終えた最大の理由は、金欠です。参加が予定外だったもので。。
金欠でなければ、3か月目突入し、そのまま日本で転職活動もアリだったかと思ってます。

## 参加目的
1. 独学によるデメリットを少しでも埋める（独学だと、どうしても知識にムラや抜けが出てしまう。
2. Rubyを学ぶ
3. ProgateレベルのHTML、Git、ComandLineから、さらに理解を深める
4. Webエンジニアに会ったことがないので。

当然、これらの目的、プログラミング学習は、転職と転職後の先の為にあります。

## 場所
フィリピンのセブ島のすぐ下のマクタン島に滞在してました。
白浜、青い海、サンゴなどと連想する島 ”セブ”も、セブ空港も、実はマクタン島なんです。
住所はCebuなので、タイトル詐欺ではないです。
![makutanjpg.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/5864672b-89da-a6ec-5c41-6091e96ca0a1.jpeg)


## 講座開始前にしたこと。
入校する前に、課題が指示されました。
1. 仮想環境（CUI）の構築、RubyonRailsの環境準備
2. Ruby、Html、Git、ComandlineをProgateで一通りやること。

私の使用機材がWindowsであるためでした。構築はドットインストール等を利用して出来ていましたが、RubyonRailsの環境準備で少し躓いていました。常にCUIの仮想環境上で進めました。
序にGUI環境とDocker用の仮想環境も作ってみたりしました。

## 講座内容
毎日したことを[アウトプットとして、Qiitaに投稿](https://qiita.com/OriverK)していました。内容詳細については、下の時間割とその投稿で見てくださると有難いです。

### 1か月目：
時間割に沿って行われました。１週目で学友？が消え、マンツーマンとなりました。
![セブ3月時間割.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/8e2b88fe-a131-9b3e-2ff6-d0c33f0678e5.jpeg)


今回のメイン言語であるRubyは、開始前にProgateで一通りやっただけだったので、最初はプログラミング全般とRubyの基礎等の確認から始まりました。その後、Scaffoldを利用し、次に利用せずにアプリ作成し、Bootstrap。DB、Git類と移り、RailsTutorialやアプリ構築へと移行していきました。

#### 『Ruby認定試験』
[Ruby認定試験のアウトプット](https://qiita.com/search?utf8=%E2%9C%93&sort=&q=OriverK+Ruby%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93)

Slack上で講師がRuby認定試験に則した問題を出し、私が回答するという流れでした。
『試験』の問題なので、Progateやってても出てこない事、単純にマイナーな部分も出題されるので、分らない内容は全くさっぱりで、落ち込みそうになるくらいでした。。

```:terminal
※ファイルdataの内容はabcdefg
File.open("data") do |io|
  while not io.eof?
    print io.read(1)
    io.seek(0,IO::SEEK_SET)
  end
end
```
答え
![io class.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/20aca7c1-1a4f-2d8f-e4fb-87269d1c8c22.jpeg)

アウトプット投稿が膨大になる等、苦しみましたが、『分かってないぞ』ということが、明白に突きつけられるので、それでよかったと思います。

#### 『Scaffoldなしの掲示板』
BootstrapやDBを組み合わせ、生徒データ情報一覧になりました。
![大学データER.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/58f9099f-3008-072c-86ed-374f9649e0cc.png)
　
![cebu_college2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/0d09f4aa-00a9-9fec-1a5e-08ec85277191.gif)
一部、Bootstrap等を適用してないページがあるが、気にしない。

#### 『MySQL』
RubyonRailsによるWebアプリ作成の最初から何となくDBを触っていたのですが、『MySQL』の内容は、Railsを使わずにMySQLを操作するものでした。
[6日目：MySQL操作](https://qiita.com/OriverK/items/8c35aae3cbe05a1a28ce)

途中からは、Herokuにアップする関係でPostgresqlを使い始めました。
[12日目：PostgreSQLを用いたログイン機能付きサイト](https://qiita.com/OriverK/items/ef1883408ea924376c1c)
[15日目：アプリをネットに公開したく、Herokuを使ってみた。](https://qiita.com/OriverK/items/03c39ffbccb13c653d92)

今は未だMySqlの方が好きです。USキーボードだと、<kbd> \ </kbd>が<kbd>Backspace</kbd>と<kbd>Enter</kbd>に挟まれており、打ち難かったりします。

#### 『RailsTutorial
[RailsTutorial](https://railstutorial.jp/)の、テストの最初段以降を除いて、時折技術サポート受けながら、最初から最終章までしました。1か月目後半頃だったので、『既にやったぞ』という箇所が多かったです。
が、章終わり事にキーの説明をよく求められたのですが、『説明できるレベル』には、まだまだと再認識させられました。

### 2か月目：
主に基本情報技術者試験のセキュリティとDBの設問に費やしました。特にDBに関しては、[H30秋午後設問3](https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_2/2018h30a_fe_pm_qs.pdf)を利用してwebアプリを作成しました（未完）
[18日目：トランザクションって](https://qiita.com/OriverK/items/2359c9159b55c74f15d1)
[21日目：H30秋基本情報技術者試験の問3データベース](https://qiita.com/OriverK/items/6efe454be2d6be84ceb5)
アウトプットはこの2つだけなのは、このWebアプリ作成で、〇日目といった具合に区切って書くのが個人的に難しかったからです。

※コンサートチケット申込購入サイト
![transparent modified.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/b3f62973-9ed7-55fc-47a9-1b072a52331f.png)


![concert ticket sys.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294402/60bc5d1d-e602-2a9d-c199-9227a7ff8e56.gif)
※Bootstrapやデザイン、は私のメイン事項ではないので、最小限に抑えてます。
あと、このgifの中だけでも突っ込みどころ満載なのは、自分で分かっています。
まだ、追加したい機能もありますし。JS等、追加で勉強しなければと感じています。

## 2か月を終えて
### 私が良かったなと思える点
- 触ったことのなかったRubyを、上のサイト程度までには触れるようになった。
    - まあ、まだまだであるが。
- SQLやGit、ComandLineのProgateレベルを脱することができた。
    - これも、まだまだであるとは思うが。

まあ、良かったことというのは、どれだけやったか次第、または技術レベル次第なで、羅列しても仕方ないね。

### この2か月間で、ああしとけば、今思う事。
- ぐいぐい質問すればよかった。マンツーマンで、精神的に萎縮してしまった感じもする。
    - 最終的には自己解決が必要なのですが、勉強する場なのだから、遠慮せずに、と。
    - transactionの説明時に、実装の理解度が微妙だったのを伝えればよかった。
        - 結果として、transaction実装方法が微妙なまま2か月を終え。お陰様で後日また本腰を入れてやる予ご予定。『簡単じゃん』という言葉は意外に重い。

# 私の今後
ワーホリビザは11月末期限ですが、それを待たずにWebエンジニアとして転職したいと考えています。
農学部出身、他業種出身からの未経験採用となり、非常に困難そうですが、やるしかないのです。
希望を言える身ではありませんが、言えるなら、寒すぎない所が良いです。
別に、日本じゃなくても構いません。奨学金等返済が出来るなら。

まあQiitaに書いても、転職は決まらないですね。
あったら、飛びつきます。

## 今回関連で、すること
- コンサートチケット申込購入サイトを完成させ、Heroku等にあげる。
    - ツイッター登録やトランザクション実装、Topページ追加、デザイン修正、メール、バッチ処理の追加等々。。。
- RubyとGit等の理解をさらに深めるべく、勉強の継続。
    - オリジナルのWebアプリを作成するなりして。

## 転職に向け、すること
- ポートフォリオ作成
- 他言語や、AWSやDocker、コンピュータサイエンス等の勉強
- 転職サイトなど（そういや転職について何も知らない）

# 参照
- [Value Space of Cebu](http://value-space.net/)
- 講師ポートフォリオサイト　[プログラミング道場](https://programming-dojo.com/%E7%A7%81%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AA%E3%82%AA/)
- 私のGithubアカウント　[oriverk](https://github.com/oriverk)

注）『転職』といった形で恩を返す？事が出来ないので、今回の投稿となりました。