エンジニアチャレンジ

27歳営業マンからWebエンジニアを目指すブログです

エンジニア転職する前に

f:id:knmx1127:20180718202656j:plain

 

皆さまこんにちは!

未経験からエンジニア転職活動中のかなめです!!

このブログは、これからエンジニア転職を目指されている方向けに書いております。

 

今回は、エンジニア転職前に自分でやっておいた方が良いと思った事を、

3つに絞って紹介していきたいと思います!

 

 

1. LAMPの環境構築と利用

LAMP = LinuxApacheMySQLPHP

Web系・Sler系に関わらず、LAMP環境を使っている企業は本当に多いと感じます!

入社前にLAMPの環境構築をして自分で使いまくっておくかどうかで、

入社後スキルアップするスピード感は結構変わる気がします!

少なくともやっておいて損はしないはずなので、

自分でやっておく事をオススメします。

 

 

 

2.動的Webサービスをリリース

静的なポートフォリオなんかも無いよりある方が良いと思うんですが、

やはり動的な方が様々な技術や環境が必要なので、印象は良さそうです。

作ったサービスの質は一旦置いておいて、未経験の場合は

「常に学ぶ姿勢をもち、実際に自分で手を動かして作ってみる事」が

重要なのかなと感じます。

そして作ったサービスを実際にリリースまでできていれば尚良いでしょうね。

 

 

 

3.AWSを使う

就職活動をしていて、やはりどんどんクラウド化・サーバーレス化が進んでいるんだな

と感じます。

クラウドインフラ技術のニーズは高まっているので、このスキルを身につけて

おく事をオススメします!

中でもAWSは圧倒的なシェアを誇っており、利用方法も色んな記事が出ていて

始めやすいと思います。

現場でもAWSを利用している企業はとても多い印象なので、エンジニアを目指す方は

AWSを始めてみましょう!

AWSのアカウントを持っていれは、最近オープンしたAWS Loft Tokyoも利用できて

ますしね(^^)

aws.amazon.com

 

以上、エンジニア転職活動をしていてやっておいた方が良いと思った事を

3つに絞って書きました!

 

他にも、言い出したらキリがないぐらい勉強しておいた方が良い事はあるんですが、

この3つは転職活動中に本当にやっておいた方がと感じました。

後はやはり "どのぐらいアウトプットしているか?"はとても重要だと感じます。

 

学習したての事は何からやっていいのか分からない事もあり、

インプット中心になりがちかもしれませんが、

失敗や恥を恐れず、まずは自分から色んな事にアンテナはって、

どんどん手を動かしていく癖を付けると良いですね!

 

そうすると、きっと学びなからたくさんの事を身につけられます。

 

僕もまだエンジニアとしてスタートラインにも立ててないようなレベルですが、

自分から学び行動する事を大切に、どんどんスキルアップしていきたいと思います!

 

最後までご覧頂きありがとうございました(^^)

 

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

 

 

【Node.js】Mac版

f:id:knmx1127:20181013000006j:plain

 

こんにちは!

突然ですが、皆さんこの記事見ましたか?

jp.techcrunch.com

 

もしこれが実現したら、より一層JavaScriptが注目されそうな予感!

JavaScriptはフロントエンド・サーバーサイド両方で動くという事でも

人気が高まっていますが、サーバー側で動作するJavaScriptフレームワーク

Node.jsを使うには、まずインストールする必要があります。

 

ちょうど先程の記事が出る少し前に僕もNode.jsのインストールをしたので、

その手順を残しておこうと思います!!

 

JavaScriptに興味がある方は、良ければ参考にしてみて下さい^^

インストール手順

  1. Homebrewのインストール
  2. nodebrewのインストール
  3. Node.jsのインストール(Node.jsをインストールすれば、npmも一緒にダウンロードされる) 

・Homebrew...Mac用のパッケージマネージャ。ツールのインストール等を管理。

・nodebrew...Node.jsのバージョン管理ツール。
      複数のバージョンのNode.jsをインストールしたり、切り替え等が可能。

・npm...Node Package Managerの略で、Node.jsのモジュールを管理するツール。

 

 

Homebrewのインストール

・ターミナル で以下のコマンド実行

 

・インストールできたら以下のコマンドでHomebrewのバージョン確認

$ brew -v

Homebrew 1.7.2

Homebrew/homebrew-core (git revision bc19d; last commit 2018-08-26)

 

 

 

 

nodebrewのインストール

・Homebrewを使用して、以下のコマンドでインストール。
$ brew install nodebrew

・以下のコマンドでnodebrewのバージョンが確認。

$ nodebrew -v

nodebrew 1.0.0

Usage:

    nodebrew help                         Show this message

    nodebrew install <version>            Download and install <version> (from binary)

    nodebrew compile <version>            Download and install <version> (from source)

    nodebrew install-binary <version>     Alias of `install` (For backword compatibility)

    nodebrew uninstall <version>          Uninstall <version>

    nodebrew use <version>                Use <version>

    nodebrew list                         List installed versions

    nodebrew ls                           Alias for `list`

    nodebrew ls-remote                    List remote versions

    nodebrew ls-all                       List remote and installed versions

    nodebrew alias <key> <value>          Set alias

    nodebrew unalias <key>                Remove alias

    nodebrew clean <version> | all        Remove source file

    nodebrew selfupdate                   Update nodebrew

    nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version

    nodebrew exec <version> -- <command>  Execute <command> using specified <version>

Example:

    # install

    nodebrew install v8.9.4

    # use a specific version number

    nodebrew use v8.9.4

 

・環境パスを通す

ターミナルで以下コマンド実行
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile

実行したら一度ターミナルからexitして再起動。


これでNode.jsのインストール完了です!

皆さん、上手くできましたか??

インストールが完了したら、早速使ってみましょう!

 

Twitterもやっているので、フォローお待ちしています(^^)

 

エンジニアって結局何する人?

f:id:knmx1127:20181006104012j:plain


 

目次

【1】はじめに

【2】エンジニアの種類10選

  1. システムエンジニア(SE)
  2. プログラマー(ソフトウェアエンジニア/コーダー)
  3. インフラエンジニア
  4. ネットワークエンジニア
  5. セールスエンジニア
  6. Webエンジニア
  7. フロントエンドエンジニア・マークアップエンジニア
  8. サーバーエンジニア
  9. データベースエンジニア
  10. 制御・組み込みエンジニア
 【3】おわりに

 

 

【1】はじめに

こんにちは!未経験からエンジニア転職活動中のかなめです!

 

今日は、エンジニアが何をする人かについて書いていきたいと思います!

(注)この記事でいうエンジニア = ITエンジニアを指してます。

   ITエンジニア・・・ITに携わる多くのシステムや設備の技術者の総称。

 

エンジニアといっても、様々な種類のエンジニアがあるのをご存知ですか ?

当然のように知ってる!っていう方ももちろん多いと思いますが、

初めてプログラミングを勉強する時は、結構曖昧な方もいらっしゃるかと思います。

 

実際、業界未経験の僕は以前まで明確な違いを知らなかったので、

今回はこのあたりの違いを簡単にご紹介していきたいと思います!

 

初学者の方が、将来何をしたいか?その為には何をするか?

選択する際の参考になればと思うので、ぜひご覧ください(^^) 

 

 

【2】エンジニアの種類10選

ITエンジニアの中でも、代表的な10種類のエンジニアがあります。

 

 1.システムエンジニア(SE)

コンピュータシステム開発の場面において、設計・開発・テストまでを一貫して計画し、

進めていく存在です。一般企業でいう総合職のようなポジション。

主な仕事は、クライアントとの打ち合わせを通じてその要求を紐解き、

仕様を確定していくことです。

◆主な業務

クライアントの業務分析
システムの提案・要件定義
システムの設計書作成
システムの開発・テスト
システムの運用・保守
マニュアルの作成

 

 

2.プログラマー(ソフトウェアエンジニア/コーダー)

SEが作成した設計書(仕様書)をもとにプログラミングを行い、

機能を実装していくエンジニアのこと。

対応するシステムによって「アプリケーションプログラマ」「Webプログラマ」「制御・組み込みプログラマ」など、使用する言語によって専門的に分化しています。

◆主な業務

設計書に基づいて実装(プログラミング/コーディング)を行う

 

 

3.インフラエンジニア

 インフラエンジニアの「インフラ」とはインフラストラクチャー(infrastructure)の略で、「基盤」、「下部構造」といった意味があります。

サーバー構築やネットワーク管理・クライアント端末の設定など、

ネットワークの基盤となる部分を支えるエンジニアのこと。

◆主な業務

システムの提案・開発・導入
システムの監視・保守メンテナンス
ITサポート

 

 

 4.ネットワークエンジニア

ITインフラの中でも、特にネットーワークシステムの設計や構築、運用や保守を

専門的に行うエンジニアのこと。SEの一種ともされているようです。

ルーターやスイッチ・DNS・メール・ファイアウォールなど、

ネットワークに関する知識と技術が必要。

 ◆主な業務

ネットワークの設計
ネットワークの構築
ネットワークの運用・保守

 

 

 5.セールスエンジニア

エンジニアとしての技術的な専門知識を活かして、営業活動をメインで行うエンジニアのこと。

営業専門のスタッフに同行してクライアント先へ訪問し、

技術面から交渉や調整のアドバイスを行いつつ、導入を提案・販売していきます。

◆主な業務

システム導入の提案・販売
クライアントとの調整・交渉
技術面からの営業サポート

 

 

 

6.Webエンジニア

ECサイトなど、WebサイトやWebアプリケーションの設計や開発・運用や保守を

専門的に担当するエンジニアのこと。

ネットワークやセキュリティ対策などの知識も必要。

◆主な業務

Webシステムの設計
Webシステムの構築
Webシステムの運用・保守 

 

 

7.フロントエンドエンジニア・マークアップエンジニア

 ・フロントエンドエンジニア

 Webサイトの閲覧や操作など、ユーザーが直接みたり操作する部分を開発する

 エンジニアのこと。

 HTML、CSSJavaScriptPHPなどによる、Webサイトのコーディングを担当。

  ◆主な業務

  Webサイトの実装

  PHPの設計や実装

  

マークアップエンジニア

 コーダーやwebデザイナーと呼ばれることもあり、主にHTMLやCSSを使って

 webデザインを担当するエンジニア。

 エンジニアではなく、Webデザイナーの方がしっくりくるでしょう。

   ◆主な業務

  Webサイトのデザイン

 

 

8.サーバーエンジニア

 サーバーの設計や構築・運用や保守を専門的に担当するエンジニアの事。

 サーバー障害や負荷分散にも対応します。

◆主な業務

サーバの設計
サーバの構築
サーバの運用・保守
サーバのセキュリティ対策

 

 

9.データベースエンジニア

データベースの設計や開発・運用や保守を専門的に担当するエンジニアの事。 

◆主な業務

データベースの設計
データベースの構築
データベースの運用・保守
データベースのインストール・最適化

 

 

10.制御・組み込みエンジニア

家電製品や産業用機器などに組み込まれているソフトウェア(ファームウェア)の

設計・開発を行うエンジニアのこと。

スマートフォンなども外部アプリケーションだけではなく、

バックライトの自動調節や電話を掛ける仕組みなどに制御・組み込みの部分があります。

◆主な業務

制御・組み込みソフトウェアの設計
制御・組み込みソフトウェアの開発

 

 

 

【3】おわりに

以上が代表的なIT エンジニアの10種類です!いかがでしたか?

自分がなりたいエンジニアは見つかりましたか?

 

なりたい将来像を明確にする事で、勉強する内容や選択する道も

的確に捉える事ができると思います。 

この機会にぜひ、ご自身がなりたいエンジニアを見つめ直してみると

良いかもしれません。

SIer・SESについて知りたい方はこちらをチェック! 

 

最後までお読み頂きありがとうございました!!

  

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

 

 

【12週目】プログラマカレッジ(最終週)

f:id:knmx1127:20180717003803j:plain

 

プログラマカレッジ12週目。今週が、カレッジでの学習カリキュラム最終週でした。

最後の週ではアドホック試験というテストを実施し、

ECサイトの安全性・保守性の担保に努めました。

 

アドホック試験

AWSにアップしたサイトを使って、ランダムに実装していきます。

新しいタブで開いたりボタンを連打したり、

ブラウザの戻るボタンを使って様々な画面遷移をしたりと今までとは少し違う

動作確認をして修正、という流れを繰り返しました。

自チームのサイトを自チームで試験するのではなく他チームの方が試験をして

くれるので、ブラウザ上での動きで新たな発見もあり、とても勉強になりました。

 

そして迎えた最終日。ラスト1ヶ月間で作成したECサイトの制作発表会に臨みました!!

3チームあるうち、僕らのチームはトリ。

チームリーダーとして全員の前に立たせて頂き、

約80名の前で発表するのはさすがに少し緊張もしましたが、

途中から緊張さえも楽しんで発表できたのでとても有難い経験になりました。

 

また他チームの制作物も素晴らしく、それぞれ上手くチームカラーが出ていて

とても刺激を受けました。

 

 

◾️チーム開発をしてみて

 

「こうやってサービスは作られていくんだ」という事を少なからず学べたの思うので、

エンジニアとして実践現場デビューする前にチーム開発を経験できた事は、

本当に良い経験になったなと思います。

そして、シンプルにめちゃくちゃ楽しかったです!!

改めて自分はチーム開発に向いていると自負できるぐらい笑

僕は学生の時も社会人になってもチーム単位で動く事が多く、

少なからずリーダーの経験もしてきました。

なのでチーム開発でもそこまで追い込まれるといった事はなく楽しくできましたが、

技術レベルにおいて自分自身まだまだ未熟で、メンバーには本当助けてもらって

やり遂げられました。

 

チーム結成当初は、まだ誰とも喋った事がなく

名前さえ知らないような状況でスタートしました。

手探りもいいところ笑

それでもここまで全員が1つになってできたのは、全員の根底に

「プログラミングが好き」「良いサービスを作りたい」という、

素直な気持ちがあったからなんじゃないかなと僕は思っています。

 

制作発表が終わってみんなでいる時、全員が笑顔でいる姿がとても印象的で、

このチームで良かったなと感じさせてくれました。

 

カレッジで同じチームになったメンバーとは、場所は違えどこれからも仲間として

一緒にエンジニアデビューして、切磋琢磨していきたいと思います^^

 

 

◾️最後に

これで、プログラマカレッジの学習カリキュラムは終了しました。

本当にあっという間の3ヶ月でした。

毎日が楽しく、改めてプログラミングが好きになり、モノ作りが好きなんだなと

再認識できました!プログラミングに出会えて良かった!

 

来週からは、遂にエンジニアとしての転職活動がスタートします。

エンジニアデビューができる良いご縁を頂けるよう、

何を選択するかも重要ですが、自分が選択した道を強く生き抜いていきます! 

 

僕らのチーム制作物URLを貼っておきます。よければPCからご覧ください^^

(土日祝はサーバーを落としている事がありますのでご了承ください)

http://www.internousdev.com/bioral

 

 

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

 

【11週目】プログラマカレッジ

f:id:knmx1127:20180717003803j:plain

【1】はじめに

【2】11週目の学習内容

   2-1. スクール学習 -  ECサイト制作
   2-2. 個人学習

【3】おわりに

 

 

【1】はじめに

こんにちは!訪問ありがとうございます。

文系出身の元営業マンが、未経験からエンジニアを目指してます!

・プログラミングに興味がある方

・エンジニア転職したい方

・プログラミングスクールについて知りたい方などなど、、、

僕の体験談等もブログで書いているので、良ければ参考にしてみてください(^^)

 

 

【2】11週目の学習内容

 2-1. スクール学習 -  ECサイト制作

今週は画面実装といって、見た目の部分を作る1週間でした。

それと併行して、単体試験・シナリオ試験を実施しました。

 

◾️単体試験

テスト用のDTOを作成し、JUnitを用いて各機能の値やバグの数等をチェックしていきます。

これにより、使われていない値やそれに関する誤っている記述を発見できます。 

 

◾️シナリオ試験

IDEで作成したJavaプロジェクトをwarファイル化し、

SQLファイルと一緒にAWSを使ってアップ。

それを使ってブラウザ上で機能実装・画面実装を行い、動作確認をしていきます。

設計書通りになっているか?エラーはないかを一項目ずつくまなくチェックしていきます。

これをする事で、より厳密に要件定義・設計書との差異が発見できます。

僕らのチームのシナリオ試験で一番多かった発見は、正規表現の漏れでした。

正規表現は多くのパターンがあり、チェックし切れていなかった箇所・ちゃんとコード

を書いていたつもりが一部誤りがあり、仕様書通りの動作をしていなかった箇所など 

を見つけ修正する事ができました。

これを、全てのバグが修正できるまで何回も繰り返します。

 

このように、機能実装・画面実装後にテストを何回か繰り返し行い、

ECサイトの精度を高めていきました。

 

 

 2-2. 個人学習

今週はWebに関する基本的な事など含め、以下のような事を

あらためて振り返ってみました。

分かりやすくて参考にしたサイトを貼っておくので、

まだ漠然としている方は是非ご覧頂くとみるといいかも知れません^^

blogs.mcafee.jp

 

 

  • DIコンテナ

qiita.com

 

 

www.sejuku.net

 

 

blogs.itmedia.co.jp

 

 

qiita.com

qiita.com

 

 

  • GETメソッドとPOSTメソッド

qiita.com

 

 

【徹底解説】Javaを学ぶべき人とPHPを学ぶべき人 | CodeCampus

 

 

  • OAuth

qiita.com

www.slideshare.net

 

 

www.webprofessional.jp

https://wa3.i-3-i.info/word1104.html

 

 

  • AI(人口知能)って結局何?

www.sejuku.net

 

 

 

【3】おわりに

来週は、チーム制作の発表会があります。

僕はチームリーダーとして登壇するのですが、まだまだ詰められるところがたくさん笑

来週で一旦カレッジでのカリキュラム自体は終わるので、

やり残す事ないようやり切ります!!

 

最後までご覧頂きありがとうございました!!

 

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

【10週目】プログラマカレッジ

f:id:knmx1127:20180717003803j:plain

 

訪問ありがとうございます!

プログラマカレッジというプログラミングスクールで、

エンジニア転職を目指しているかなめです(^^)

 

◾️スクール学習

先週に引き続き、スクールではチームでECサイトを構築中です。

今週でなんとか機能実装が一通り完了しました!

 

今週末には講師の方がコードレビューをして下さり、

何十個とフィードバックが返ってきました(笑)

実装できるかどうかには直接影響しないようなところまで隅々チェックして頂き、

改めて基礎とリーダブルコードは大切なんだなと思いました。

 

今っていろんな情報が取れる分あれもこれもと目移りしがちなんですが、

基本を確実に身につける事・時には基本に立ち戻る事も

忘れないようにしないとですね!

 

基本といえば、機能実装をしていて一番感じた事があります。

それはエンジニアを目指す人なら、GitHubを使いこなせるのはマストという事。

 

エンジニアをしていると共同開発をする機会があると思うのですが、

GitHubをうまく共有できないと業務効率が大幅に落ちるな〜と感じました。

特にオンラインや独学でプログラミング学習をしているとGitで共同開発をする機会が

まだあまりないかも知れませんが、GitHubはやっといて確実に損はないですね^^

 

 

 

 

◾️スクールへ通おうとしている方へ

講師の方に伺っていると、やはりどんどんプログラミングスクールの需要は

伸びているようですね(^^)

実際スクールに通ってみて、

個人的にスクールへ入る前にやっておいた方が良いと思う事を

3つだけ紹介したいと思います。

 

  • 基礎を知っておく

スクールは結構未経験者を対象としているところが多いと思います。

なので、大体はどこもHTML/CSSといったマークアップ言語から入り、

プログミラングとは何か?どういう仕組みで動いているのかを学んでから

プログラミング言語の学習をしていくと思います。

 

ここまでで最低1週間は取られると思うのですが、

こういった基本的なことを事前に抑えておくと理解度が全く違ってくるだけでなく、

その分カリキュラムを前倒しで進めることができます。

カリキュラムを前倒しでやった分、自分で成果物やポートフォリオの制作をして

就活に備えるとより良いんじゃないでしょうか。

 

僕も最近ポートフォリオを作ったので、参考になれば幸いです^^

portfolio-e61a9.firebaseapp.com

 

 

基礎を初めてやる方には、Progate

prog-8.com

が断然おすすめです!

解説がとてもわかりやすく見た目も可愛らしいので、無理なく進められます。

やればやるほどレベルが上がっていくので、ゲーム感覚でできるのも良い点です。

僕も今でもお世話になっていますよ^^

 

 

 

  • 情報収集と発信手段を準備

これはツイッターとブログ(もしくはQiita)を準備するところから始めると

良いと思います。

これをしているとどんどん新しい情報やイベント情報等を収集できるだけでなく、

自分と同じような状況の方・現役エンジニアの方と出会う事も可能です。

エンジニアの方は結構ツイッターをしている方も多いようなので、

よりリアルな情報を得られるきっかけにもなります。

また、コミュニティやイベント情報があれば積極的に参加する事をおすすめします。

今まで出会う事がなかった方々と出会え、とても刺激を受けますからね( ´ ω` )

そして学んだ事や気付いた事は、

些細な事でも恥ずかしがらずどんどん発信していきましょう!

 

 

  • 最低限の貯蓄

 スクールに通う場合、およそ2ヶ月〜3ヶ月ぐらい無職の期間ができます。

その間の最低限の生活費は貯蓄しておいた方が良いです。

 

僕の感覚的に、約2〜3ヶ月無理なく生活するには80万ぐらい用意していれば

大丈夫じゃないかと思います。

実際僕もそれぐらいで、スクール以外にも友達とご飯行ったりホットヨガに行ったり、

リフレッシュもできて満足いく生活が送れています。

 ※ちなみに僕は東京都中野区に一人暮らしをしていて、

  毎月奨学金の返済や光熱費等もあります。

 

その他プログラミングの書籍や嗜好品を買う余裕もあるので、

あれば20代男性の場合は大体80万ぐらいあれば生活できるのではないかと。

女性の場合はもしかしたら化粧品等でもう少しかかる方もいるかもしれませんが、

1つの目安にしてみてもらえればと思います(^^)

 

  

 

 ◾️最後に

スクールでは、来週から作ったワイヤーフレームをもとに画面実装に入ります!

同じ機能でも見せ方によって印象は全く変わってくると思うので、

チームメンバーと一緒に全力で頑張っていきます!!

 

個人的に進めているちょっとしたWebアプリもグレードアップさせて、

公開できるように追い込み時期になりました。

いま、毎日が本当に充実しています。

これからプログラミング学習を考えている方、ぜひ一歩前へ踏み出してみて下さい^^

【9週目】プログラマカレッジ

f:id:knmx1127:20180717003803j:plain

 

こんにちは!プログラマカレッジというプログラミングスクールで

エンジニア転職を目指しているかなめです!

 

今月で、スクールでの学習はラスト1ヶ月に入りました。

最後の1ヶ月では、7名ほどのグループでECサイトを1から構築します。

 

今週はチーム開発の初週でしたが、実は僕のチームは全員ほぼ話した事がない

メンバーの集まりでした(笑)

僕らはお互いの事を知るところからだったので

1からというか0からのスタートぐらいでした(笑)

そんな中僕はチームリーダーを任してもらっているのですが、

皆とても協力的で建設的な話ができるので、日々いい刺激をもらってます(^^)

 

最初の週では、まずチームビルディングで

・サイトコンセプト決め

・実装機能決め

・担当する機能の振り分け

・スケジューリング

などを行いました。

 

 

僕らのチームが実装する機能は主にこれら↓

・ユーザー登録機能

・ログイン’認証機能

・パスワード再設定機能

・ユーザー情報更新機能

・ユーザー削除機能

・商品一覧機能

・商品詳細機能

・商品検索機能

・商品削除機能

・商品登録機能

・商品情報更新機能

レビュー機能

・カート機能

・宛先情報選択機能

・宛先情報登録機能

・決済完了機能

・マイページ機能

・商品購入履歴機能

・ログアウト機能

・管理者機能

 

これらの機能を振り分けて、スケジューリングを行いました。

ちなみに僕が担当したのは、

・管理者機能

レビュー機能

・商品削除機能

・商品登録機能

・商品情報更新機能

・ユーザー情報更新機能

・ユーザー削除機能

あとデータベース設計もやらせてもらいました!

 

進捗やナレッジ・その他共有事項等は主にSlackを用いて共有し、

今のところスムーズに行えている状況です。

 

チーム開発をしていると人それぞれの個性が見えてきます。

それでも皆共通しているなって感じたのは、

「プログラミングが好き・エンジニアになりたい」という正直な気持ち。

 

なので、どんなに個性があっても1つのモノづくりに対して全員が

同じ方向を向いてるなと感じられます!

この環境にいれてリーダーできている事がありがたいです。

 

そんなチームメイトと話していて最近勉強できたのが、

SQL文の実行のために使っていると思っていた「PreparedStatement」が、

SQLインジェクション対策のためでもあるという事!!

今更!?と思われてしまうことかも知れませんが(笑)

SQLインジェクションとは

 

あとはJavaにおけるMVOの役割をあらためて図にして見返してみたり!

メンバーと話していると、全員が初学者だからこその視点で話せたり、

新しい気付きや勉強方法など色んな情報を共有できるのでとても為になります(^^)

 

来週から機能実装。画面実装に向けてワイヤーフレーム作成などに取りかかりますが、

スケジュールがなかなかカツカツなので気合いいれていきたいと思います!!

 

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

 

【8週目】プログラマカレッジ

f:id:knmx1127:20180717003803j:plain

 

こんにちは!未経験からエンジニア転職を目指しているかなめです^^

プログラマカレッジに通い始めて、早いもので2ヶ月が経ちました。

本当にあっという間で、毎日が充実してます。

 

来週からは、ついにチーム開発が始まります!!

まだメンバー発表されていませんが、なんと僕はありがたい事に

講師の方からチームリーダーに指名して頂きました!!

前職や部活動でもリーダー役をする事があったので、その経験を活かせられればと

思いますが、何せ今回はプログラミングを用いたサービス開発のチームリーダー。

今までとは全く違うジャンルなので、恐らく苦労する事も出てくると思います。

それでもまた本当に良い経験ができると思うので、精一杯やり遂げようと思います!!

 


学習経過について

スクールでは頂いたsample-webに管理者画面を作り、

ログイン時の情報でユーザーと管理者、

それぞれに返す画面を切り替えられるようにしました。

 

管理者画面では、

商品一覧確認・商品削除・商品更新・ユーザー一覧確認・ユーザー削除・ユーザー更新

が行える仕様にしました。

 

その他個人的に学習した事はこんな感じです。

 

それぞれ分かりやすいなと思って参考にしたサイトをリンクにしておくので、

ぜひ参照してみてください^^

それ以外にも最近は以前にも増してアウトプットに時間を割いて、

ちょっとしたアプリ開発もしています。

書いたコードはGituHubに随時あげているので、もし良ければご覧下さい。

 → GitHubへ 

 

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

 

【7週目】プログラマカレッジ

 

f:id:knmx1127:20180717003803j:plain

 

スクールでの学習

先週に引き続き、ECサイトを作っていってます。

実は先週で1つ作り終えたので、

今週は講師から新たに1つサンプルとなるECサイトの見本を頂き、

それの写経から入ってそこに機能を追加していきました。

 

改めて写経していると、つい1-2週間前まではちんぷんかんぷんだった

処理の流れ・コードの意味などが写経しながら理解できている事に驚きました。

それでもまだまだ新しい機能やリーダブルコードの書き方など学ぶ事がたくさん!

僕は学んだ事や残しておきたい情報なんかは、

全てその場でEvernoteに記録して、学習内容を後からでも振り返られるようにしています。

 

今週頂いたサンプルウェブで、新たに実装した機能は主に以下の通り。

 

  • 商品のカテゴリ分け
  • サイト内検索機能

 

ジャンル毎のプルダウンとサイト内検索窓で、

商品をカテゴリ別に表示できるようにしました。

DBにカテゴリ用のカラムを追加しそれで判別、

SQLのセレクト文で部分一致を抽出する事でこの機能が実装できます。

このあたりからコードが今までより長くなったので、

書く切った後により綺麗なコードへするためリファクタリングも行いました。

 

見やすさ・分かりやすさを意識するだけで、

翌日以降にそのコードをみた時のモチベーションが変わりました(笑)

やっぱり綺麗なコードだと、周りも自分も分かりやすいだけでなく、

次の作業に気持ちよく取りかかれる気がしました。

 

 

 

スクールの専任キャリアアドバイザーと面談スタート

このあたりから、就活に向けての準備は少しづつ始まりました。

今週は担当のキャリアドバイザーの方に面談して頂き、

今後の流れや色々なすり合わせを行いました。

目指す目標を明確化し、頑張っていきます!!

 

 

 

スクール外での学習

 

JavaScriptPHPを用いた簡単なアプリをいくつか作ってみる事にしました。

どれも初歩的なものだとは思いますが、今週は以下4つにチャレンジしました。

【Web会議システムアプリ】

【チャット機能】

【お問い合わせ機能】

【ToDoリスト】です。

 

【チャット機能】【お問い合わせ機能】【ToDoリスト】

PHPを用いて、DBの処理を行いました。

ToDoリストアプリでは、LaravelとBootStrapに初挑戦しています!

Macに環境構築するところから実装まで。

こんなにも簡単にDB設計や見た目を整えられるのかと最初はびっくりしましたが、

実装に至るまではエラーの山(笑)

途中センスないんちゃうかと思うぐらいでしたが、途中から

もはやエラーさえも出た!という感じで面白くなってきました(笑)

それでもなんとか実装できたので、近々GitHubにプッシュしたいと思います^^

 

 

【Web会議システム 】

完成イメージは、Skypeのようなものです。

話した内容が音声認識によって自動的にテキスト化されるような機能もつけて、

チャット機能 × 音声機能 × ビデオ機能を掛け合わせて1つのアプリにしています。

 

ここで新たに挑戦したのは "API" と "Firebase"。

Web Speech API音声認識を出力し 、

RealTimed Databaseを使ってリアルタイムチャットを作成しました。

 

まだエラー続きでデプロイまでいってませんが、

なんとか来週中にはFirebase Hostingを使ってデプロイまでこぎつけます!!

 

 

 

最後に

9月に入ったら本格的にチーム開発がスタートします。

個人開発を選ぶ事も可能なのですが、実際の開発環境を疑似体験できると思い

僕はチーム開発を選択しました。

平成最後の夏も残りなってきましたが、

自分のやるべき事を改めてリストアップし、

計画性をもって1つ1つ着実に前進していきます!!

 

 

ツイッターもやっているので、こちらも是非フォローお願い致します(^人^)

【Laravel】 Specified key was too long; max key length is 767 bytes

◾️エラー概要

Laravel5.5でmigrationを実行したところ、以下のエラー発生。

 [Illuminate\Database\QueryException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 
Specified key was too long; max key length is 767 bytes 
(SQL: alter table `users` add unique `users_email_unique`(`email`))

[Doctrine\DBAL\Driver\PDOException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 
Specified key was too long; max key length is 767 bytes

  [PDOException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 
Specified key was too long; max key length is 767 bytes

 

 

◾️原因

Laravel5.4から、標準charasetがutf8mb4に変わった。

標準charasetがutf8mb4となったことで1文字あたりの最大byte数が4bytesに増えた。

MySQLではユニーク制約を付けたカラムには767bytesまでしか入らない。

MySQLではPRIMARY_KEYおよびUNIQUE_KEYを付けたカラムには、

768bytes以上のカラムに対するインデックスキーは設定できません!

※5.7.7以降のバージョンだと解消されているみたい。

 

Laravelの場合、データベースのcharasetは「config/database.php」で定義されているので確認してみましょう。

Laravel5.3までは、以下のようにUTF-8

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

UTF-8は1文字が3bytesのため、

varchar(255)は255文字 × 3bytes=765bytes。

問題なくインデックスを設定することができていました。 

Laravel5.4からは、utf8mb4が標準になりました。

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

utf8mb4は1文字4bytesとしてあつかわれるため、

制限の767バイトを超えてしまい、MySQLのエラーが出力されるようになりました。

 

 

 

◾️解決策

app\Providers\AppServiceProvider.php】の、boot()を下のように書き換えて上書き。

一度MySQLを落として、再度migrateしたら無事解決されました。

 

php|AppServiceProvider.php
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}