プログラミングスクールで勉強している。

タイトルの通り、2月初旬ごろからフィヨルドブートキャンプというプログラミングスクールで勉強しています。 記録上は累計200時間ほど勉強しています。少ないですね。記録をつけていない日があったり、割と時間は適当に計測しているので実際のところは合計350時間ほど費やしているでしょうか。だいぶ勉強が進んできて色々出来るようになってきたので一旦の振り返りとしてこの記事を書いてみます。別にこの記事で報酬を貰ったりは一切していないので、完全に個人の感想です。 bootcamp.fjord.jp

自己紹介

W大学の文系学部を卒業後、2年と少しSierで働いている26歳の男です。一応ITエンジニアという分類にはなります。

経緯

文系の大学を卒業した後Sierに入社しました。そこは、残念ですが私が期待していたエンジニアリングをやっている会社ではなかったです。良い会社だとは思いますが、価値観が合いませんでした。この会社でエンジニアとしての能力を身に着けるのは厳しいかなーと思い、 独学で勉強して転職しようと思ってました。 しかし、独学で勉強していると結構困ることがあります。

  • カリキュラムがないので好き勝手気になることを勉強しがち
  • 期限がないのでダラダラ勉強してしまう
  • フィードバックがないので学んだことのアウトプットが正しいかわからない

以上が大きな問題になります。

そんなこんなで好き勝手ダラダラ勉強して時間が経つのに焦りを覚えていました。

ある時Vさんというソフトウェア開発会社の経営者さんがこんなtweetをしていました。

この発言については一理あると思いました。この人が言うなら信用できそうだなと思い、フィヨルドブートキャンプで勉強してみることを決めました。 (いろいろあって2021年2月からになりました)

感想

結論を先に言っておきますが、フィヨルドブートキャンプで勉強を始めたのは非常にいい決定でした。

どう変わったか

フィヨルドブートキャンプで学習を始める前の私はだいたいこんな感じでした。 だいぶ雑ですが、分かってない部分を中心に書いてます。分かってることは書いてません。

  • Javaで既存システムの改修はできる。新規にモジュールを作ると手続き型の酷いコードを書き始める。
  • 基本的なJavaScriptは書ける。クラスは使わず、非同期処理も適切に書けない。
  • DB設計は正規化していない滅茶苦茶なものを作る。
  • Linuxについてはcd, ls, pwdくらいしかわからない。
  • テストコードの書き方がわかってない。書いたことがない。
  • 一般的なweb application frameworkにあまり触れたことがなく、機能としてどのようなものが存在するか知らない。

いま時点ではこんな感じでしょうか。

  • 適切な抽象化をしてクラス分割をした上でRubyのコードが書ける。結果的にJavaでもオブジェクト指向に則って書けるようになった。
  • クラスに分割してオブジェクト指向に則った形でJavaScriptを書ける。async/awaitとPromiseを使って非同期処理に対して適切に対処ができる。
  • 適切に正規化をした上でDB設計を行うことができる。
  • Linuxパーミッション周りが分かっており、他にもsshで接続した上で必要なソフトウェアをインストールし、環境構築が出来る。
  • TDDの方法論について知っている、どのようなテストコードを書くことで要件を満たしていることのチェックが出来るか考えられる。適切にテストコードを実装できる。
  • Ruby on Railsにどのような機能が存在しているか知っており、要件に対してFrameworkの機能を使用することで実装が出来るか調査ができる。

他にも元々うっすら知っていて知識として強化された事柄は数え切れないほどあります。

他に技術と関係ない部分としては、フィヨルドブートキャンプでは基本的に勉強した日は日報を書くのですが、 書いていくうちに学んだことをアウトプットとして人にわかりやすく伝えることを意識するようになりました。これは結構大きな変化です。

フィヨルドブートキャンプで学んでいる人たちはプログラミング未経験であっても他の分野で優秀な人なんだろうな、と思わせることがあり、 根拠としては日報に考えをまとめるのが上手な人達が多いです。この点もかなり参考になります。

コードレビューがありがたい

フィヨルドブートキャンプでは皆さん優しくレビューしていただけます。頂いた指摘におかしなことはほとんど無いですし、間違っていたとしても(人間なので当然間違えることはあります)根拠を示せば皆さん納得して頂けます。このコードレビューで自分では気づかない部分で改善される部分が多かったです。

独学で学ぶデメリットは解消されるか

独学では以下のデメリットがあると挙げましたが、全て解消されました。

  • カリキュラムがないので好き勝手気になることを勉強しがち

よく考えられたカリキュラムがあるので、それに則って勉強を進められる。

  • 期限がないのでダラダラ勉強してしまう

明確な期限は無いのですが、他の方がガンガン進められているので、触発されて効率よく勉強するようになりました。

  • フィードバックがないので学んだことのアウトプットが正しいかわからない

アウトプットを確認していただけるので、間違っている場合はちゃんと指摘を得られます。

結論

まぁ、このように色々出来るようになりました。勉強していて楽しいし、真面目に勉強している人は多くて好感を持てるしでかなり良かったです。 あとは、実際に学習に使っているシステムをアジャイルで改善する課題があるのですが、こちらをやってみたいが為に入ったようなものなので、頑張りたいです。(現職はウォーターフォールのため、アジャイルのことは何もわからない)

SierでITエンジニアを始めてから二年で読んだ本

棚卸として書いておく。

Python

大体この本を読んだせいで今ITエンジニアをやっている。

上の本の流れで読んだ。Pythonはもう忘れた。

コーディング

  • これからはじめる プログラミング基礎の基礎

  • Webを支える技術

  • リーダブルコード

  • Code Complete 途中まで

  • 詳説 正規表現

  • プログラミングの基礎

おすすめ。関数型言語の入門に最適。プログラミングをする上での状態遷移やTDDやアルゴリズムやその他いろいろなことを学べる。

セキュリティ

  • 安全なWebアプリケーションのつくり方

Java

DB

  • SQL実践入門

  • すっきりわかるSQL

  • らくらくERDレッスン

  • 達人に学ぶDB設計

JavaScript

React

  • りあクト 1-3

Ruby

テスト

オブジェクト指向

unity

  • unity5入門

Linuxunix

まだまだ読んだはずだがめんどくさくなったので今度更新する。

好きなゲーム

本当に好きなものだけ。記憶を消してまた遊びたいものだけ。 何故書いたかというとouter wildsは本当に素晴らしいということを伝えたいから。

シングルプレイ

マルチプレイ

嫌いなゲーム

  • league of legends

徳丸本 33-001a:シンプルなリクエスト(CORS対応)にて CORS対応ができない

事象

徳丸本 33-001a:シンプルなリクエスト(CORS対応)にて CORS対応ができない

該当HTMLからXMLHttpRequestを行ったとき、

CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない

というエラーが表示される。

OWASP ZIPには以下のエラーが表示される

f:id:earthminami:20200823162622p:plain

error log

原因

api.example.netへの疎通が取れていないことが原因だった

 

解決策

hostsファイルのtypoを修正して解決

 

 

 

javaでxml parse実行時にjava.net.ConnectionException connection refusedエラーが発生する

事象:

java11にてDocumentBuilderを用いてxmlファイルをparseしようとした際に、

java.net.ConnectionException connection refusedというエラーが発生される。

 

原因:

DocumentBuilderはparse実行時にリモートにあるDTDというXML文書の形式を定義したファイルを読み取りに行く。今回の実行環境では、リモートファイルへのアクセスを遮断されていたため、事象が発生していた。

 

解決策:

以下を参考にし、DocumentBuilderの実行時にリモートDTDを読みに行かないようにインスタンスの定義を変更することで、解決することが出来る。ただし、リモートDTDを読み取ることが出来ないため、parse時に別の問題が発生する可能性がある。

 

https://qiita.com/yoshi389111/items/3d0da72b1f2ccd947052

 

振り返り:

なぜリモートDTDへのアクセスが遮断されていたか不明

リモートDTDへのアクセスが必要な理由が不明

リモートDTDの役割が不明

パース実行時にリモートDTDを読み込まないことによる影響が不明

パース実行時の動作が不明

 

初めてドメインを取得した

お名前ドットコムにて、初めてドメインを取得した。

chidimi.techというドメインである。

本当は.jp, .com, .netなどのドメインを取得したかったのだが、すでに取得済みだった。

取得済みでなかったとしても利用料金がかなり高いので、支払えなかったが…

.techというドメインは最近できたドメインで、tech企業などに人気らしい。

比較的安く取得できて、見栄えが良かったのでこのドメインにした。

Route53でドメインを登録し、ec2に接続できるようにしている。

こちらのドメインを利用して何かサービスをリリースできたら良いなと思っている。

 

AWSの無料枠を2年目以降に利用する

AWSには無料枠があり、EC2などの利用が月750時間まで無料になる。一ヶ月の時間は24*30で大体720時間なので、単一のインスタンスならば、起動したままにしても無料で利用できるようになる。複数インスタンスでも、チュートリアル終了ごとに終了しておけば、無料で利用可能になる。この無料枠は12ヶ月で終了になるが、実は別のルートアカウントを作ると、また無料枠の利用が可能になる。同一クレジットカードを請求先にした別のアカウントであっても、無料枠での利用が可能になる。そのため、無料枠を無駄にしてしまった場合であっても、別のルートアカウントを作成することが推奨される。私の場合、クレジットカード一つに付き無料枠は一つまでだと思っていたため、別のルートアカウントを作成せずに無料枠の切れたルートアカウントを利用して勉強し、2000円近く請求されてしまった。最初から別のルートアカウントを利用すれば請求されることはなかった。手痛い勉強代だった。