見習いエンジニア(仮)の学び場

未経験からエンジニア転職を目指す男が、プログラミング学習で学んだことを分かりやすくアウトプットするためのブログです。

テックキャンプ受講後の感想

今回は、私が受講したプログラミングスクール「テックキャンプ」の感想を書いていこうと思います。

 

私が受講したのは「エンジニア転職短期集中コース」という、3ヶ月間プログラミング学習に集中するコースです。

そのコースを受講して、その後エンジニアとしての転職を成功させることができました。

 

今回はその体験を踏まえて、テックキャンプの良かった点と懸念点を述べさせていただきます。

 

良かった点①「やらざるを得ない環境が手に入ること」

プログラミングを独学で学ぶと、大半の人が挫折します。

分からないことが多くて、一人だと挫けてしまうからです。

ですが、テックキャンプの学習はチームで行うため、ある意味強制的に継続せざるを得ません。

他の受講生の進捗に置いていかれないように学習を進めるので、学習をせざるを得ない環境が手に入るのがメリットかなと思います。

 

良かった点②「相談役のスタッフがいること」

テックキャンプの学習中は、主に2つのスタッフがいます。

1つ目は、メンター。この方々は、プログラミングで分からないことがあった時に教えてくれる人たちです。

2つ目は、ライフコーチ。学習を継続する上でのメンタル的なサポートしてくれる人たちです。

私は、よくライフコーチの方に相談していました。学習を継続する上では、学習内容よりもモチベーションの継続が大事だったりするので、その時に大変助かりました。

こういった、受講生のメンタルケアもしてくれるのも、強みの一つかなと思っています。

 

良かった点③「エンジニアに必要な思考習慣が身につくこと」

学習中は、メンターの方が最初から答えを提示することはあまりありません。

まずは受講生が「こうやってみたけど上手くいかなかった」といった、自分なりにやってみたことを言わないと、質問ができないようになっています。

実際の現場では、このような自分の頭で考える習慣が大切になってくると思うので、その練習ができたことは、非常に良かったと思います。

 

 

懸念点①「覚悟がないと学習をやり切ることは難しい」

正直、学習中は結構キツイと思います。

日々の学習時間も多いですし、他の受講生と自分を常に比較してしまうので、やり切る環境はあっても精神的に大変です。

「エンジニアに転職したい」という強い覚悟がないと、やり切ることは難しいかもしれません。

 

懸念点②「転職アドバイザーの質が担当者による」

テックキャンプの学習を終えると転職活動が始まるのですが、その転職をサポートしてくれるアドバイザーさんの質が人によって変わるという印象を受けました。

私の担当してくれたアドバイザーさんは凄く良かったのですが、他のチームメンバーの話を聞くと、「この人で大丈夫かな、、」と不安に思っている声も聞きました。

もし少しでも担当者に不安があれば、変えてもらえないか聞いてみた方がいいかもしれません。

人生を大きく左右する決断の、大事なパートナーになるわけなので。

 

 

以上、テックキャンプを受講して、エンジニアに転職することが決まった私の感想を述べさせていただきました。

総じてすごく良い体験をさせてもらったと思っているので、もし気になる人は無料カウンセリングでお話しを聞いてみたらいかがでしょうか。

最後まで、読んでくれてありがとうございました!

「N+1問題」って何??

今回は、Webアプリケーションの時に起こりがちな「N+1問題」の解説をしていきます。

 

 

N+1問題とは、アプリケーションのデータの量分処理が実行され、アプリのパフォーマンス低下につながる問題のことです。

 

例えば、Twitterでは、ツイート一つ一つに投稿者のアイコンや名前が表示されていますよね。あれは、「ツイート」と「投稿者」の情報を、アプリのデータベース上で関連付けて表示させているのですが、その時ある問題が起こります。

 

それが、一回一回ツイートと投稿者を関連付ける作業が必要となることです。

ツイートを表示させるごとに毎回その作業をしていると、アプリの動作も当然重くなっていきます。

このように、データの量分だけ膨大な処理が実行され、アプリのパフォーマンスが下がる問題を、N+1問題と言います。

 

 

この問題の対処法は、「includesメソッド」を使用することです。

includesメソッドは、一回のアクセスで関連づけられたデータをまとめて取得してくれるため、処理の回数を減らし、N+1問題を解消してくれます。

 

 

大規模なアプリを作るほど、N+1問題は対処が必要になるので覚えておきましょう!

セッションって何??

今回は「セッション」という単語について解説していきます。

 

セッションとは、Webページの情報を保存しておく仕組みのことです。

例えば、Amazonのショッピングカーには、一度商品を入れておくと、一度そのページを離れた後でも、商品が残っていると思います。

このように、webページに情報を保存しておき、ユーザーの利便性を高める仕組みをセッションと言います。

 

セッションと同じ目的で使用されるものにCookie(クッキー)」という仕組みがあります。

2つの違いとしては、下記になります。

セッション→サーバー側で保存する情報

クッキー→ブラウザ側で保存する情報

 

クッキーはブラウザ側で情報を保存するので、データを改ざんされるリスクがあります。

それに対してセッションは、サーバー側でデータを保存するので、改ざんのリスクが少ないというメリットがあります。

 

セッションの仕組みや、クッキーとの違いに関しては、ネット上にたくさん情報が乗っているので、よかったら調べてみてください!

 

 

 

 

Cookie(クッキー)って何??

今回は、Cookie(クッキー)について解説していきます。

 

Cookieとは、Webサイト訪問時に、ユーザーの個人情報を保存しておく仕組みのことです。

例えば、Twitterは一度ログインをしてしまえば、また再ログインすることなく利用できると思います。このように、ユーザーの情報を記録しておく仕組みのことをCookieと呼びます。

 

Cookieのメリットは、ユーザーの利便性が上がることです。

サイトを開くごとにIDやパスワードを入力することなく使えるので、かなり使いやすくなります。

 

逆にデメリットは、個人情報を第三者に知られる可能性があることです。

Cookieは、ユーザーが入力した個人情報をテキストにして、ユーザー自身のスマホやPCに保存しておくという仕組みで動いています。そして、ユーザーがサイトを開いた時に、そのテキストをサイトのサーバーに送信し、前回入力した内容を表示させているのです。

すなわち、Cookieの情報は一時的に使用した端末の中に保存されている状態と言えます。

なので、例えばスマホを盗難されたり、ネットカフェなどの共用PCでCookieを使用すると、その端末から個人情報を盗まれてしまう可能性があるのです。

 

 

まとめると、Cookieのメリットデメリットは下記になります。

 

メリット

・毎回入力する手間が省けるので、利便性が上がる

デメリット

・端末から第三者に情報を盗まれる可能性がある。

 

 

ちなみに、Cookieとよく混合される「キャッシュ」という言葉もあります。この2つの違いは、保存される情報の内容です。

Cookie→IDやパスワードといった個人情報を保存する

キャッシュ→頻繁に訪れるWebサイトに表示されている文字や画像を保存する

 

2つとも、ユーザーの利便性を高めるためという目的は一緒なのですが、保存する内容には違いがあるので、注意しましょう!

Javaってどんな言語??

今回は、企業でも採用されている率が最も高いJavaというプログラミング言語について解説していきます。

 

Javaは汎用性が高く、以下のような様々なものを開発することができます。

・会社の業務システム

Androidアプリ

・webアプリケーション(ブラウザ上で使えるアプリケーション)

・webサイト

・ゲーム開発(マインクラフトなど)

 

Javaの最大のメリットは、実行環境の自由度の高さです。

Java仮想マシンと呼ばれる、いわばどのPCでも理解してくれるように言語を翻訳してくれる環境上で処理を実行するので、どんなPCでもJavaを扱うことができます。

JavaのようなソースコードをPCが学習可能な言語に翻訳してから処理を実行する言語を、コンパイル言語と言います)

 

また、その仮想マシンの内部で実行してからPCに指示を与えるため、処理能力も速く、セキュリティ性も高いというメリットもあります。

 

続いてデメリットですが、他の言語よりもルールや難しい記述が多く、習得難易度が高いことです。

また、Javaを実際に動かせるようになるための準備も大変なので、使えるようにするまでに時間がかかるというデメリットもあります。

 

 

まとめると、下記になります

Javaのメリット

・実行環境の自由度が高く、どの環境でも使用できる

・処理速度が速い

・セキュリティ性が高い

 

Javaのデメリット

・習得難易度が高い

・使えるようになるまでの準備が大変

 

 

Javaは習得難易度が高い分、企業からの需要が高い言語なので、よかったら学習してみてください!

PHPってどんな言語??

今回は、プログラミング言語の一つである「PHP」について解説していきます。

 

PHPとは、動的なWebページを作る時に使用される言語です。

動的なWebページとは、ユーザーの状況によって表示されている内容が変わるWebページのことですね。

 

例えばAmazonのページでは、ログインしているユーザーが買い物カゴに商品を入れていると、カゴの中に数字が出てきたり、買い物カゴをクリックすると自分が選択した商品が表示されたりしますよね。

その買い物カゴのような仕組みを、PHPを使えば作成することができます。

 

PHPでは他にも、お問い合わせフォームや掲示板といったページを作ることができます。

 

また、PHPの特徴としてサーバーサイド側で処理を行う言語である点も挙げられます。

 

サーバーサイドとは、Webページの大元のことだと思ってもらえれば大丈夫です。Amazonの例であれば、私たちがスマホやパソコンで見ている画面を表示させている、Amazon側の大元のサーバーのことです。

 

このサーバーサイドで処理を行うメリットとしては、データの保存や書き換えができる点です。

サーバーにはデータベースと呼ばれる、ユーザーのデータや商品データが保存されている倉庫のようなものがあります。そのデータベースとやりとりをすることで、ユーザーの情報を編集したり、商品情報を追加する操作ができるようになります。

 

 

まとめると、PHPとはこのような言語になります。

PHPは動的なWebページを作ることができる言語

ECサイトの買い物カゴや、お問い合わせフォームといった機能を作ることができる

・サーバーサイドで処理を実行するため、ユーザーのデータの更新などができる。

 

PHPは需要が高い言語のようなので、良かったらprogateなどで気軽に学習してみてください!

データベースで使われるインデックスって何??

今回は、データベースで使われるインデックスという言葉について解説をしていきます。

 

まず、そもそもデータベースが何なのかというと、「アプリのデータを保存しておく場所」のことです。

例えばTwitterであれば、ユーザー名、アイコン画像、ツイート内容といったあらゆるデータを全て保存している場所がデータベースだと思ってもらえればオッケーです。

 

 

そしてインデックスとは、データベースに保存されているデータの索引のことを指します。

いわゆるGoogle検索して、必要な情報を取り出しやすくしたようなものですね。

 

 

インデックスを使用する一番のメリットは、「処理速度が速くなること」です。

例えば、1冊の本があって自分の知りたい情報が書いてあるページを探す時に、1ページ目から順に読んでいくよりも、索引か目次を見て知りたい情報が書いてあるページを確認してから探す方が、圧倒的に速いはずです。

この例のように、データベースにインデックスを設計してあげると、処理速度を格段に向上出せることができます。

 

 

インデックスの効果が発揮できるのは、データベースに保存されているデータ量が多い時です。

データ量が多いと、インデックスなしでは取得したいデータを探すのに時間がかかってしまうため、インデックスを導入することで処理速度向上が見込めます。

 

 

もしアプリ開発をする際に、データベース内のデータが多くなりそうな時は、ぜひインデックスを導入してみてください!