takayucky’s tech blog

業務系パッケージの開発エンジニアがWebエンジニアへの転職を目指して勉強したことについて技術ブログを書き始めた、時を同じくしてニューヨーク・クイーンズ地区出身のラッパーが突然姿を消したが、一体何が起きようとしているのか…

勉強を継続するための3つの方法

現在私が実践している勉強を継続するための方法について書いていきます。皆様方それぞれ異なる生活スタイルがあるかとは思いますが、その一例として参考にしていただけたらと思います。

まず、なぜ勉強を継続するための方法について能動的に考えたかというと、単純ですが私自身もなかなかプログラミングの勉強を継続することができなかったからです。私の心境としては、熱意はあるのになぜか続かない、といったところでした。今の職場だといつまでたっても技術が身につかないだろうから転職したい、そのために自分のスキルを高めておかなきゃ、あと単純にもっとコード書きたい!熱意はあったつもりです。でも続かなかった。

それは熱意が足りないんだよ、という意見の方もいると思います。私も一時期そうなのかなと思っていました。でも、この考え方って全然ダメなんです。全くもってダメ。なぜなら全く建設的ではないからです。熱意が足りないんだよ、の後にじゃあどうすれば勉強を続けられるか、という話につながっていかないんです。というわけで考えをあらためて、勉強が続かなかった→じゃあどうしたら続けられるか→続けるための仕組みを考えなきゃ、という風になり、私は勉強を継続するための方法について能動的に考えることになりました。

 

長い前置きがやっと終わって、いよいよ本題です。

私が大事にしていることは3つだけです。

  1. 先に勉強時間を確保すること
  2. アウトプットすること
  3. 勉強仲間を作ること
ひとつめですが、余った時間で勉強するのではなく先に勉強時間を確保する、ということです。昨日は早く帰れたから1時間勉強したけど、今日は帰りが遅かったから勉強できなかった、といった感じではその日の帰宅時間に勉強時間が大きく左右されてしまい、勉強するという習慣を確立できません。なので、先にこの時間は絶対勉強する、といった感じにした方がだいたいうまくいく気がします。例えば、私の場合だと、たいてい帰る時間は遅いので、帰って余った時間で勉強してする、というスタイルでは勉強が続きませんでした。なので、早朝に勉強時間を確保するようにしました。帰る時間は不定ですが、出社時間はたいてい一定です。特に、私は出社時間は比較的遅め(9:30頃までに出社すればよい)なので、この方法がハマってます。

ふたつめですが、キレイにまとめなくてもいいからとにかくアウトプットする、です。まず、アウトプットした方が、自分がやってきたことの履歴を後で確認することができるので、長く続けていく場合には絶対にやっていた方がいいと思います。また、巷ではもはや常識ですが、アウトプットした方が理解が深まります。さて、キレイにまとめるとは、自分が学んだことをちゃんと説明するようにブログにまとめる、といったことです。最初のうちは私もそうやろうと思っていましたが、なかなかアウトプットが続かなくなりました。だってちゃんとまとめようとするとそこそこ時間がかかるもん。というわけで、最初のうちは単純に自分がやったことをそのままアウトプットすればいいんじゃないかと思います。楽ですし。慣れてきたところで、単純にやったことを書いた下書き、と、ちゃんとまとめた下書き、を用意して並行して書いていくようにしたらそこそこ長続きするんじゃないかと思います。すぐ出す用のアウトプットとちゃんとまとめたアウトプットを両方用意しておく、といった感じです。アウトプットのハードルを低くしましょう。ミクシィは一瞬で飽きたけどツイッターは長く続いている人は多いのではないかと思います、これはきっとつぶやくという行為のハードルが低いからではないでしょうか。


みっつめですが、これが一番大事だと思います。正直、これがあれば、最初のふたつはいらないんじゃないかと。人は社会的な生き物ですので何かを長く続けていくためには他者との関わりが必須です。ここだけすごいいいこと言ってる風です。例えば、周りのオタクを見てください。たいてい群れてます。みんなで集まってわいわい話した方が楽しいからです。たまにソロプレイする人もいますが、そんな茨の道をわざわざ歩く必要はありません。誰かと一緒にやった方が楽しいですし長続きします。これはプログラミングでも他の趣味でも同じだと思います。私の場合だと、仕事の帰りが遅くなかなか勉強会のようなコミュニティに参加できてはいませんが、幸いにも同じようにプログラミングを始めた友人がいるのでモチベーションを高く保つことができています。それでも、やはり関わる人が多いに越したことはないので、早く帰れる日にはぜひ勉強会に参加したいとは思っています。


私が意識している、勉強を継続するための方法は以上です。ネットにも溢れてるような当たり前のことかもしれませんが、当たり前のことってやはり大事だなと思います。勉強することに対してなかなかモチベーションを高く保てないという方がいたらぜひ参考にしてみてください。

JavaScript 始めました

基礎知識を全然学んでこなかったので、とりあえずどんどん始めてます。次はJavaScript 始めました。
おなじみのドットインストール - 3分動画でマスターする初心者向けプログラミング学習サイトでHTML入門、CSS入門、JavaScript 入門の順番でやっていきました。やってみての感想はこの順番でやるべきだなってところです。HTMLはCSSでもJavaScript でも使用するからです。

を電車の中で読みながら復習してます。普通にわかりやすい本です。

初めてのHTTP

自分の理解のため、そして、ネットで探してみても自分がしっくりくる説明がなかったので書いてしまおうってことで、HTTPについて説明していきます。(理解が誤っている箇所もあるかもしれませんが、ご了承ください。)

 

そもそもHTTPとは

そもそもHTTPって何でしょうね。まずWikipedia で見てみましょう。(以下、httpと小文字で記載します。)
Hypertext Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル、略称 HTTP)とは、WebブラウザとWebサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコルである。 ハイパーテキスト転送プロトコルとも呼ばれる。
httpは略称なんですね。WebブラウザとWebサーバがメッセージをやりとりする際の間を取り持つ何かってことも分かりました。ここまではわかったんですけど、通信プロトコルってなんやねん、という疑問が浮かびました。プロトコルとか日常生活でまず使わない単語ですし、スッと理解できません。というわけで、次は通信プロトコルについてWikipedia で調べてみました。
 
通信プロトコル(つうしんプロトコル、Communications protocol)、あるいはネットワーク・プロトコルは、ネットワーク上での通信に関する規約を定めたものである。「通信規約」や「通信手順」と訳す場合もある。

ここまで来るとちょっとわかってきました。httpとは、WebブラウザとWebサーバとの間でメッセージをやりとりするときのルールである、と。メールに例えると、

メールを送信するときのルールとして、タイトル、宛先、本文、が必要。ただし、本文は空でもいいけど宛先は必須。

といったところでしょうか。では、httpで決められているルールを見てみましょう。httpではメッセージをやりとりするときに、以下の形式でメッセージを構成することが決められています。
 
  • スタートライン
  • ヘッダー
  • 空行
  • ボディ
1行目がスタートラインと呼ばれています。2行目以降はヘッダー。空行が間に入って、次にボディとなります。(ボディは記載されない場合もあります。)これだけだとよくわからないんで具体的に見ていきましょう。ブラウザでChromeを使用している場合だと、Google Developer toolsを使用することで簡単にhttpメッセージを確認することができます。
 
例として以下のサイトを見ていきましょう。

(公社)日本ボディビル・フィットネス連盟

 

筋骨隆々なボディビルダーの写真とまるでおじいちゃんがパソコン教室で作成したかのようなサイトが表示されたかと思います。(ちなみに別にボディビルをdisってはないです。むしろ私はボディビルはこれから来るんじゃないかと思ってます。)

 

それでは右上の設定から、その他のツールデベロッパツールを選択してください。Google Developer toolsの画面が表示されたかと思います。

f:id:takayucky:20160409221828p:plain

Networkタブを選択し、Nameのところで一番上の「http://www.jbbf.jp/」を選択してみてください。すると、右側にResponse HeadersとRequest Headersが表示されたと思います。(WebブラウザからWebサーバに送ったメッセージがRequest Headersに、WebサーバからWebブラウザに返ってきたメッセージがResponse Headersに対応します。)初期表示としてはparse(整えられた)されたhttpメッセージが表示されていますが、view sourceをクリックすると、httpメッセージ本文が表示されます。Request Headersを見ていきましょう。

 

  1. GET / HTTP/1.1
  2. Host: www.jbbf.jp
  3. Connection: keep-alive
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  5. Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
  6. Referer: https://www.google.co.jp/
  7. Accept-Encoding: gzip, deflate, sdch
  8. Accept-Language: ja,en-US;q=0.8,en;q=0.6

 1行目の「GET / HTTP/1.1」がスタートラインに対応します。2行目以降がヘッダーです。今回の場合、ボディはありません。このように、Chromeを使用していれば低いハードルでhttpメッセージを確認することができます。

 

以上で、こんな感じでWebブラウザとWebサーバはメッセージをやり取りしてるんだ、というのがなんとなくわかったかと思います。ただし、「1行目のGETってなに?」とか「どんなときにボディにメッセージが書かれるの?」とかまだまだ疑問は残るかとは思います。私も全てを理解できているわけではないので、継続して理解を深めていきたいです。今回は初めてのHTTPということで、私がここ1週間くらいで初めてHTTPについて理解したことを書いていきました。続編があるかはわかりませんが、今後も定期的に自分が理解したことを、自分の理解のために、説明していくつもりです。

HTML 始めました

つい先日にRuby on railsを始めたばかりですが、HTML始めました。

 
rails触り始めて薄々感じてはいたのですが、Progate | プログラミングの入門なら基礎から学べるProgate (プロゲート)Ruby on railsコースの初級編を終えても、やっぱりビューに何書いてるのかが全然わかんなねえなあってことで、HTMLやんなきゃなあって思い至りました。
 
あと、Web関係の技術を入門するにあたって参考になりそうな記事を見つけました。
これにも最初にHTMLやりなよって記述があったので、素直な私はやっぱりHTML やんなきゃなあって改めて思い至りました。
※HTML の前にrailsをheroku pushしろとはあったんですが、herokuが何かわからないのでとりあえずスキップしました。
 
ドットインストール、初めて使いましたがよさそうですね。自分が視聴した動画を自分で視聴済チェック入れられるので、進捗管理に便利です。

Ruby on rails始めました

タイトルの通り、Ruby on railsを始めました。

 
です。ざっくり言うと、Ruby on railsは余りにも強力すぎるフレームワークだから作れるけど基本的な知識がまるで分かってない、みたいな状態に陥るから気をつけなさいとのことでした。
私の会社にもJavaの自社フレームワークがあるんですが、それ使ってもJavaのこと一切わかんない状態に私が実際になってるので、言ってることは理解できました。
 
でも始めます。楽観的なので、ソース公開されてるみたいだしそこも読んで理解していけばいいんでしょ、くらいの感覚で始めました。
 
に従って、環境構築から簡単に動かすまでをやりました。ざっくりMVCモデルに関して理解できたかなと思います。

Ruby始めました

しばらく自分が覚えたこと、学んだことのメモとしてブログ書いていこうと思います。

 
Ruby始めました。
 

感想

  • Macで始めると標準でRubyが入っているので、環境構築のコストが低くて始めるハードルが低い
  • Webに初心者向けの記事やサービスが多い
  • 書きやすい。javaみたいにいちいちセミコロン文末にうたなくていいし、必ずしもクラス作らなくてもよいので。

ちなみにProgate | プログラミングの入門なら基礎から学べるProgate (プロゲート)Rubyの基礎編、応用編を無料で勉強できました。なので、一通りやりました。

あと、書籍はたのしいRuby 第5版:Amazon.co.jp:本を買って辞書的に使用していきました。

 

今後

次はrails始めてみます。あと、脱テキストエディタします。atomを使おうかとは思ってます。
一通りさらっとこなしたらJava scriptとhtmlも眺めたい。

技術ブログを始めようと思った経緯

はじめまして。

タイトルの通り、技術ブログを始めようと思った経緯、について書いていきます。

まず、簡単に自己紹介すると、私は入社3年目(今年で4年目になる)の業務系パッケージ作ってるシステムエンジニアです。お客さんのとこで働くいわゆるSEではなく、パッケージ自体を開発してる側の人間って感じです。
プログラミングをちゃんと始めたのは入社してからで、大学時代は機械系の制御工学を専攻してました(なので計算用のプログラムは書いたことはありましたが、オブジェクト志向やらは入社してから知りました)。ちなみに今はJavaOracleを主に触っています。

さて、本題ですが、入社して1年、2年経つごとに自分の中で焦りが出てきました。
「あれ、おれってエンジニアとしての技術が全然身についていないんじゃ。。。」
私は業務系パッケージにおける業務ロジックを開発しています。業務ロジックって技術的なこと知らなくても書けちゃうんです。せいぜいOracleのチューニングするくらいで、Javaデザインパターンなんて聞かれても「なんじゃそれ」状態。
このままじゃ技術知らないエンジニアなるしマズい、何かしなきゃ、じゃあ何をすればいい?って悶々と過ごしてましたがつい最近こんなブログ読みました。


ブログを読んで、

  • 自社サービスの知識ばかり身につく
  • 社外に出るとエンジニアとしてやっていけないのでは
という点がとても共感でき、自分が最近考えていることと同じだと思いました。

そして、それを解決するために汎用的な領域を意識し、その部分をアウトプットすることが重要!っていう学びを得ました。

というわけで、技術的なことをアウトプットするための第一歩として、今回技術ブログを始めようと思うに至りました。

ちなみに、なんではてなブログか、に関しては技術ブログやってる人ははてな使ってる人多いし流れに乗るか、くらいの理由です。

以後、よろしくお願いします。