Title TBD

中途未経験からエンジニアを目指してエンジニアになりました。学んだことなど中心に書いていきます。最近はもっぱらnoteで書いてます。https://note.com/toshi65811

プログラミングスクール入る前にやってた独学について

ここ一週間体調がずっと悪いです。トシです。

最近、以前通っていたQuelcodeについて質問を受けることがありました。

それをきっかけに、過去自分がエンジニア転職するまでにやってきた独学などを思うと、随分と長い年月がかかったなーとしみじみしてました。

 

ですが、自分のTwitterプロフィールを見ると

f:id:toshi3arai3:20190907195855p:plain

スクール入ってちょろっと勉強してエンジニアなれたっぽく見える

実際半年しかスクール行ってないですが、未経験から半年の学習で転職したっぽく見えるなと。

でも自分としては、今に至るまで何度も挫折などあってやっとエンジニア転職して2ヶ月って感じなので、そこを勘違いされるのはなんかちょっと悲しいなと思って。

プログラミングスクール入るまでにこんなことをしてきたよ。ってことについてまとめてたいと思いこの記事を書いてます。

プログラミングスクール入るまでにやっていた独学の内容等は連続ツイートして、モーメントにまとめました👇

プログラミングスクール入る前にやってた独学の内容

 

目次です

 

ただプログラミングに憧れていた20代前半

 

プログラミングには元々興味がありました。どのように興味を持ったかというと、アフィリエイトサイトを作ってお金を稼ぎたい。という魂胆です。

それと同時に、プログラミングに対してかっこいい、という憧れを抱いていました。

ただ、最初に興味を持ったのは10年くらい前の話。周りにエンジニアもおらず、Twitterも当時はやってなく、プログラミングに対しての情報はとても少なかったと思います。(自分のググり力もなかった)

過去のAmazon購入履歴を見ても、プログラミングのテキストは買っていないので20代前半の僕は本当にただ憧れてただけで何もしてなかったと思います。

 

プログラミングを学び始めた20代中盤

 

 

初めて少し本格的に勉強をしたのは、2012年です。地元の職業訓練校に3ヶ月通いました。

最近まで東京で職業訓練校に行っていた人の話を聞くと、かなりカリキュラムもしっかりしていてすごく良さそうでした。

ただ、私が行っていたのは7年も前で、本当に田舎の小さな場所で学びました。

周りは給付金目当ての、およそプログラミングとは関係のなさそうなおじさん・おばさんばかりでした。

そこで、短期間・初歩的な内容でしたが初めてHTML/CSS, 少しだけJavaScriptを学びました。

私は高卒で、これまで大した専門性のある仕事もしてこなかったので、プログラミングを仕事にしたいと思いました。

また、当時は英語を勉強して少し経ったくらいでTOEICは600台と、今思うと全然出来ないやつですが、周りからは「英語とプログラミング出来るようになれば強いじゃん!」と言われて自分もその気になってました。

 

プログラマーのなり方が分からず挫折

 

プログラマーになってみたい。とは思いましたが、結局当時は無理でした。

 

地元は本当に仕事が少なくて、また求人媒体も当時はそんななく(自分の探し方が悪かったのもある)、未経験者歓迎!みたいな開発会社は見つけられなかったです。

 

そして、「未経験者は実力を示すためにポートフォリオが必要!」とある記事で読んで、ポートフォリオがないと駄目なんだ。と思い込んで、結局ポートフォリオをどう作ったらいいか分からずに、モチベーションはなくなりプログラマーを目指すことは諦め、前職と同じくコールセンターで働くことにしました。

 

でも今思うと、自分で一応サイトは作ってみたので、もしかしたら当時でも未経験から採用してもらえたかもしれません。

ただ、その会社で潰れていてプログラマーなんて一生やりたくない。となった可能性もあったので、あの時プログラマーになれなくて良かったのかなと結果的に思います。

 

 

今振り返ってみると当時は、プログラマーにどうやってなるのか?の情報をあまりにも僕はもっていなかったし調べようとしていなかった。

 

何も分からず同じようなを失敗を繰り返していた日々

 

その後は英語を勉強しながら仕事を続け、英語はある程度順調に伸びてきました。

英語はちょっとずつ話せるようにはなってきたけど、自分の仕事はコールセンターのオペレーターという英語も活かせないし、専門性もない仕事をしている自分に焦りと苛立ちを感じていました。

そして、ずっとプログラマーへの憧れは持ち続けていました。

 

 

なので、こんな感じで色んなチュートリアルや、ブログなどで紹介されているプログラミングテキストを買ったり色々やった。本当に色々やったし、どれも続かなかった。

 

 

今思うと、当時プログラミングを教えてくれる人・正しい情報があればもっと違った結果になってたと思います。

当時の僕は、「初心者はJavaScriptをやるべき!」という記事があれば、JSをやる。Pythonが熱い!という記事があれば、Pythonをやる。ってことをずっと繰り返していました。

自分が何をしたいのか分からないし、今学んでいることをどう活かすのか?もわかっていなかった。

いざテキスト買って、テキストどうりに進めても、テキストに書いてないエラーが出たら解決できなくて諦める。

じゃあ、Progateとかエラーが出ないような安全な環境でプログラミングを勉強しても、その先にどう進めばいいか分からない。

基礎文法だけは身につくけど、どうやって自分でサイトを作ったりすればいいか分からない。

同じような所をぐるぐるぐるぐる回っている感じで、本当にもどかしかったです。

 

それに加えて、当時は腱鞘炎を患っており、勉強すればするほど、タイプすればするほど指や手首が痛くなって勉強できなくなるという状態にもありました。

あれは本当に辛かったですし、こういった身体的理由もあり、自分は絶対プログラマーになれないと思っていました。

ただ、仕事でパソコンを使っていたのでブラインドタッチは問題なく出来るようになっていました。

 

ちょっとした人生の分岐点

 

少し話は変わりますが、プログラミングには何度も挫折しつつ、英語も学習を続け(これも何度も挫折しました)、TOEICは800点を超えてずっと夢だった海外で働く。という事が現実化しそう。

と思っていましたが、無知な僕はここまで来てからやっと海外で働くにはビザが必要→ビザを取得・サポートしてもらうには特殊な技能が必要。という事に気づきます。

 

プログラミングを出来るようになれば世界どこでも働ける!という夢は当時もありましたが、自分には無理。きっとインドや中国人など、英語もプログラミングも出来る人が増える。なので、日本人であることも活かすために寿司学校にいって寿司職人になろう!

と夢見て東京に引っ越してきました。当時27歳くらいです。

実際に寿司学校に行き、寿司屋で働きましたがあれは僕みたいな中途半端な覚悟の人間がやるものではなかったです。

 

年齢からくる焦り

 

飲食をやめてから、派遣社員として生活をしていましたが、それも専門性が身につくものではありませんでした。

また、派遣は3年の縛りがある(人や状況による)ので、1年、2年と勤続年数を重ねる毎に将来への不安は増して行きました。30歳を超えているのに何の専門性もなくこのままではまずい、と強烈な焦りを感じていましたし、今でも自分の専門性のなさに常に焦りを感じています。

 

 

こういった状況に追い込まれて、やっぱりプログラマーを再度目指してみよう!と決意しました。

プログラマー以外にやってみたい仕事や、ここまで何年も憧れていたものは他になく、どうしても諦めることは出来ませんでした。

 

やっとプログラミングスクールに通うことを決意

 

スクールに行こう!と決めたのは2018年のことです。

それまでも興味はあったので調べてはいました。ですが、金銭的な問題もありなかなか通う決意が出来ませんでした。

当時どのようにプログラミングスクールを調べて、体験に行って、最終的にQUELCODEを選んだかはこちらにまとめてます。

 

toshi65811.hatenablog.jp

 

スクール通うにも金銭的な問題があったので、副業でTOEICコーチをしたりしてお金を貯めました。

そして、最大の悩みだった腱鞘炎もここでほぼ治すことが出来ました。

これまで、色々な整骨院カイロプラクティックに行ったりして治療を受けてきましたが5年以上治りませんでした。

ですが、自由が丘にあるクリニックに2回行っただけでほぼ完治しました。

長年腱鞘炎だと思っていた私の症状は、手根管症候群という症状で適切な治療を受けてすぐに良くなりました。

このクリニックには今でもすごく感謝しています。

jiyugaoka-c-c.com

 

それに加えて、Realforceと出会えたのも学習を続ける上でとても大きいです。

指や手首の痛みがよくなっても、長時間タイプすると痛みが出てきます。

今このモデルのUSキーを使っていますがとても軽いタッチで入力が出来るので、長時間のタイプも苦にならなくなりました。今ではなくてはならない存在です。

 

転職成功とまとめ

 

ここまで長かったですが、やっとこれでプログラミングスクールに通い、半年で転職することが出来ました。

 

 

今振り返ると本当にしつこいくらいにプログラミングには挑戦して、挫折して。を繰り返してきたので、まだまだ未熟ですが、今プログラミングを仕事に出来ていること、日々勉強できていることがとても嬉しいです。

 

長く書いてきましたが、まとめとしてはこれです。

プログラミングスクール行かなくてもプログラマーにはなれると思います。でも僕は結局行かないと無理でした。

ですが、もし若い人なら未経験から雇ってくれる会社は探せば沢山あると思います。また、30代で全くの異業種から、独学もせずに未経験でエンジニアになった知り合いもいます。 

今は色んなプログラミングスクールもありますし、稼げそうな印象はありますが、ネット上にある情報だけを信じるのではなくて、自分で調べて、経験して、何が正しくて、何が自分に合うのか。

焦らずに、そういった事を見極めるプロセスを大切にしてほしいなと思います。

エンジニア転職をして2ヶ月が経ちました

こんにちは。大胸筋下部のトレーニングに興味があるToshiです。

さて、タイトル通り異業種からエンジニア転職をして2ヶ月が経ちました。

簡単なまとめ・振り返りをしたいと思います。

 

基本的にこの記事は、後で読み返した時に自分が「あーあの時の自分はこんなことで悩んでたんだなー。」ってノスタルジックな気持ちになるための記事なので、あまり読んでも参考になったりする箇所は少ないと思います。

 

2019年9月8日追記:エンジニア転職をはたすまでに行っていた独学・挫折などについても記事にしたのでご興味あれば読んで頂けると嬉しいです。

 

toshi65811.hatenablog.jp

 

最近業務でやってること

ざっくりと最近業務でやってることを書いてみると

こんな感じです。

 

入社した7月は、現在アサインされているプロジェクトが本格始動しておらず、会社の独自フレームを使ってCRUDを作る練習などしてました。

 

それに加えて、ワイヤーフレームの作成もしていました。ほぼ7月は開発らしい開発はしていなかったと思います。

 

7月末あたりから確か現在取り組んでいるプロジェクトにアサインされて、独自フレームワークを使って開発をさせてもらえるようになりました。

 

今は基本開発メインで、変更が必要であればワイヤーフレームを編集したりという流れで日々過ごしています。

入社したての頃

今覚えている限りでいうと、入社したばかりの頃は自分の出来なさに本当に心が折れそうになりました。

 

独自フレームワークを使って、CRUD作ってみて!と課題をもらったのですが、独自フレームワークなので使うためにはコードを読んでどんな処理をしているか理解する必要がありました。

 

これまで殆ど他の人のコードを読むという経験がなく、本当に最初は苦労しました。

 

また、プログラミングスクールで生のPHPCakePHPというフレームワークも勉強しましたが、PHPは2月ころ、CakePHPは4,5月ころに勉強していたので、そこから大分期間が空いてしまい殆ど覚えていませんでした。

 

教えてくれる人がとても丁寧に優しく教えてくれたので、徐々に分かって行きましたが、プログラミングスクール通ったのにこの程度のことも分からないのか、と結構最初は自分の不甲斐なさに落ち込みました。

 

そういった事がきっかけで、もう一度生のPHPを勉強し直そうと思い、スクールで使っていたこちらのテキストで再度学習しました。

 

よくわかるPHPの教科書 【PHP7対応版】

よくわかるPHPの教科書 【PHP7対応版】

 

 

 

学習していた当時は結構難しい本だなー。くらいにしか思っていませんでしたが、生のPHPCRUDをちゃんと書けるようになりたい。という自分には最適な本でした。

 

正直、スクールに通っている時はCakePHPなどフレームワークを理解することが大切。と思っていましたが、生のPHPCRUD処理をちゃんと書けるほうがよっぽど先にやらないといけなかったなと反省しました。

 

また、上記の本をやり直した時に、過去取り組んだときよりも理解がすっと出来たのはSQLの勉強を他でやっていたのが理由だと思います。

 

プログラミングスクールでは、SQLの勉強は上記本の中に出てくる1チャプターのみしかやりませんでしたが、スクール卒業後にProgateやこちらの本でSQLを勉強しました。

 

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

 

 

SQLを少し勉強したことにより、PHPのテキストをやってても「このSQLは何をしてるんだろう?」みたいな引っかかる箇所が少なくなり、PHPの学習に集中できるようになったなと実感しています。

 

SQLはプログラミングスクールでは前述の通りあまり勉強しませんでしたが、とても基礎的で大切な部分だなと最近強く感じるので、現在はこちらの本を使って再度学習しています。

 

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

 

 

前述のSQL本は問題が多すぎてちょっと取り組むのに疲れてしまったので、こちらで基礎理解をしっかり固めてから再度取り組もうと思っています。

 

現状の課題としては、独自フレームワークの習熟度が低い。生のPHPの習熟度が低い。SQLの習熟度が低い。というあたりがメインの課題です。

 

SQLは前述の本を使用する。

PHPはパーフェクトPHPで学習を進めています。

独自フレームワークに関しては、業務で使いながら、それぞれの関数をしっかり読んでどういった処理をしているのか。を理解するようにしていきます。

 

それと、最近すごく思うのは、「エンジニア初心者向オススメ本」みたいな記事で紹介されている本がとても面白いし役立つなということです。

 

ちょっと違いますが、ノリとしてはこんな感じの記事です↓

 

techblog.yahoo.co.jp

 

例えば、「ReadableCode」や「Webを支える技術」などの本をスクール時代に読もうとしたのですが、イマイチ内容がピンとこず。

 

大切そうなんだけど、いつ生きるのか分からない。という理由で買ったはいいものの全然読んでませんでした。

 

今であれば、実務に即活かせることが多く(特にReadableCodeは辞書的に使ってます)読んでてすごく楽しいです。

 

なので、過去の自分には、それらの本を無理やり読もうとするより、まずはCRUDできるようになれ、コードもっと書け、テキストばっかりやるな。と伝えたいです。

 

またこれから1ヶ月がんばります。

第2回 Readable Codeを英語で読む会を主催した感想と分からなかった単語

こんにちは。Toshiです。最近脇の脱毛をしようと考えています。

先日、「第2回 Readable Codeを英語で読む会」を開催しました

connpass.com

前回はなかなか参加者が集まらず、イベント中止になるんじゃないかとハラハラしました。
ですが、今回はイベントを公開直後に前回参加者さんなどの申込みがあり、あっという間に6名の枠が埋まりました。
周囲の人から、枠増やしてもいいんじゃない?と言われ、調子に乗って少し増やしたらそれも埋まりと有り難い状況でした😂
前回より参加者も増え、英語もエンジニアリングもどちらも深い知識を持った参加者さんがいらっしゃり、とても多くのことを学ぶことが出来ました。本当にありがとうございます!

また、2回イベントをやってみて、0を1にするのは大変だけど、1を1.1にするのはそんなに大変ではないんだなと学べました。
2回目のイベントの感想と反省ですが、今回は前回の反省を生かしていくつか改善をしました。
そして、それら改善点が比較的うまくいったのではという実感があるので、成功といっていいんじゃないかなと思っています。
どういった点を反省点があり、どう改善したかは以下のとおりです。

前回の反省点①:アイスブレイクをしなかった。そのため、全体の雰囲気が固く、気軽に英語を話せる安心な場所ではなかった。
改善策:前回は自己紹介からいきなり始めたが、口と舌のストレッチを全員で一緒に行いました。

超低速メソッド英語発音トレーニングという本に載っているストレッチをやりました。

f:id:toshi3arai3:20190812163317j:plain

f:id:toshi3arai3:20190812163328j:plain

口や舌の普段使わない筋肉のストレッチなので、ちょっと辛さがあります。
こういうみんなで同じ痛みとかを経験すると距離は近づきやすいかなと思いました。
また、英語を話すいい準備にもなったかなと思います。

前回の反省点②:参加者同士のつながり・交流などを生むことが出来なかった。
改善策:今回はペアを組んでお互いに自己紹介をしてもらう→その後全体に向けて他己紹介をしてもらいました。これはいいアイスブレイクにもなったかなと思います。
また、ペアワークとして、ReadableCodeのChapter 1で出てきた単語問題、Chapter 2の理解度テストを用意しました。

用意に多少時間はかかりましたが、ペアワークは参加者同士話す機会が増えてとても良かったなと思いました。

次回以降もこういった問題は作ろうと思います。また、理解度テストを行うことで今日何を学んだかが認識でき→このイベントからは学びが多かったな。と感じてもらえると、イベント参加への満足度が上がりリピートしてもらえるかなと感じました。

問題はGoogle formを利用して作成した、比較的かんたんなものです。

Readable code chapter 1 単語問題

Readable code chapter 2

前回の反省点③:意味調べと、調べた内容を全て自分でやろうとして進行に手間取ってしまった
改善策:意味調べは極力自分でせず、参加者にしてもらいました。 そして、調べた内容をHack MDに書くのも参加者に協力をしていただきました。 これによって、参加者からの発言も増え、進行に集中することができました。


さて、前回の反省点を生かして、良い改善が行えたと思いますがまた新たな反省点が出てきました。それは、時間内に範囲の音読が終わらなかったことです。

Chapter 1に比べて文量が大幅に増えたので、時間内にChapter 2を読み終えることができず結果的に、半分以上の範囲がダイジェストでお送りするような形になってしまいました。
今後扱うチャプターも文量は多いので同じ状況が起きると思います。
今後の対応としては、2回目と同じようにダイジェストにするか、もしくは読める所まで読んで続きはまた次のイベントで。という形にしようかなと思います。

さて、長くなりましたがここから調べた単語です。
本文→分からなかった単語という構成になっています。


本文: What would you expect the Size() method to return? The height of the tree, the number of nodes, or the memory footprint of the tree?
分からなかった単語 memory footprint
単語の意味 メモリー消費量

本文:Don’t be afraid to use a thesaurus or ask a friend for better name suggestions.
分からなかった単語 thesaurus
単語の意味 類義語辞典

本文:Names like tmp, retval, and foo are usually cop-outs that mean “I can’t think of a name.”
分からなかった単語 cop-outs
単語の意味 責任逃れ

本文: Attaching extra information to a name, by using a suffix or prefix.
分からなかった単語 suffix
単語の意味 語尾につける言葉

本文:Avoid Generic Names Like tmp and retval.
分からなかった単語 generic
単語の意味 汎用的な

本文: In this case, the variable is accumulating the sum of the squares of v.
分からなかった単語 accumulating
単語の意味 足していく、蓄積していく

本文:The variable’s sole purpose is temporary storage, with a lifetime of only a few lines.
分からなかった単語 sole
単語の意味 唯一の

本文: Instead, a name like user_info would be more descriptive.
からなかった単語 descriptive
単語の意味 描写的でわかりやすい

本文:Prefer Concrete Names over Abstract Names
分からなかった単語 concrete
単語の意味 具体的

本文:They appear cryptic and intimidating to those new to the project.
分からなかった単語 cryptic
単語の意味 秘密の

本文:They’re most important in places where a bug can easily sneak in if someone mistakes what the variable is, especially if the consequences are dire, as with a security bug.
分からなかった単語 dire
単語の意味 恐ろしい

本文: This style has the benefit of being easily distinguished from #define macros, which are MACRO_NAME by convention.
分からなかった単語 distinguish
単語の意味 区別する


最後に宣伝ですが、Hack MDの編集を手伝ってくれた Nobu📖エンジニア (@nobubump0) | Twitter さんが来月英語でLTをするイベントを開催しますので、よければご参加ください!

try-english-lt.connpass.com

以上です。もし良ければ第3回目も開催予定ですので、ぜひご参加ください!!

Readable Codeを英語で読む会を主催した感想と分からなかった単語

久しぶりにブログを書きます。 前回書いた記事が5月25日で、あれから約2ヶ月が経過しました。 この間に

  • 就活に成功して内定をもらった。
  • 内定企業で働く前に1ヶ月別の企業でインターンをさせてもらった。
  • 7月から内定先で働き始めた。

など色々ありました。 その辺りはいつか書きたいですが、多分書かない可能性は高いです。
要約すると、今伝えたいことは「ポートフォリオなしでも就職できるよ」ってことです。

さて、なんで今日久しぶりにブログを書いたかというと、先日初めて自分で「英語でリーダブルコードを読む会」というイベントの主催をしました。

最初は全然参加者がおらず、イベント中止かなと思っていましたが最終的に枠が全て埋まりました🙇‍♂️
その会で出てきた分からない単語を調べたのですが、それを公開する場所がないなーと思ってブログにしようと相成ったわけです。

ざっと感想ですが。

イベントの主催って大変。準備が結構ある。

みんな無事会場につくかな、キャンセルでないかな、みんな満足してくれてるかな、満足してくれたかな。など非常に胃が痛くなるようなことばかりでした。

結果的に、そこそこ満足してくれたんじゃないかなっていう感触は得られたのでやってよかったなと思います。

2回目開催を案内したら、前回参加者の約半数が再度参加をしてくれるとのことなので、それが前回ある程度満足してもらえた証左かなと思っています。
分かんないけど、これって僕がキャバ嬢でフリーでキャバクラに来てくれたお客さんの半数が次回指名してくれたって意味と同じですよね?(キャバクラのシステムがわからないのにキャバクラで例えようとする)

みんな英語で話すより、読みが出来るようになりたいって感じだった

これは結構想定外でした。この会をやろうと思った発端が、過去私が英語のイベントとかに言っても一般的な話しかしない(趣味や自己紹介など)ことにうんざりして。

もっと実のある話がしたい、エンジニアに関連する英語を話したい。と思いイベントをすることにしました。

ですので、同じように思っている方が来るかな。と思っていましたが、まずは英語を読めるように・ドキュメントを読めるようになりたいという人が大半でした。

確かに、実際の業務で英語でエンジニアリングについて話す機会のある人はかなり少ないと思うので、ドキュメントを読めるようになる方が優先度は高いですよね。
これは読み違えてました。

今後は読みを強化する方向に少しずつシフトしていきたいと思っています。

あんまりディスカッションが弾まなかった

全体的に、自発的な意見が出ることが少なかったなと思っています。

これはアイスブレイクなどをしていなかったせいで、心理的安全性が確保されなかった点が大きいのではと思っています。

ですので、次回はアイスブレイクの導入・ペアワークなどしてもらいより話しやすい・失敗をしても大丈夫。と思ってもらえるような環境づくりをしていきたいです。

Pre lessonがあると良かったのかも

英語を普段ほぼ話さない・聞かない人が、いきなり英語を話せ、聞け(私はなるべく英語で進行するようにしていました)と言われてもやはり難しいですよね。

次回は可能なら、希望者に30分くらい前に来てもらって、ちょっとした英語のレッスンをしてから回に臨むようにしてもらうといいかなと考えています。

自分のこの会のターゲット・目的が曖昧だった

自分自身の、このイベントの成功の定義がありませんでした。

そのため、誰に向けたものか分からないフワッとしたものになってしまったかなと思います。

今後は、「英語初心者・初中級者が英語を読めるようになる、簡単な会話の受け答えが出来るようになる」 をゴールにしようかなと思います。 今パッと思いついたので変わるかもしれませんが、思いつきにしては悪くないかなと思います。

なぜなら、このゴールの基準に達している人は正直かなり少ないと思います。(どっちか出来るけどどっちか出来ない or どっちも出来ない人が多いかなという感想)

そして、どうやって勉強をしたらいいか分からない。という人が大半だと思います。

そんな人達の手助けが出来るようなイベントにしていけたら嬉しいです。

さて、長くなりましたがここから調べた単語です。
本文→調べた単語という構成になっています。

preface

aesthetics:美学

本文:And when we say “code,” we literally mean the lines of code you are staring at in your editor.

literally: 文字通り

star: じっと見る

Readable Code Chapter 1

本文:What we noticed is that all of the principles stem from a single theme.

stem from: come from

本文:But before we begin, we’ll elaborate on this principle and justify why it’s so important.

elaborate: explain in detail

justify:〘法〙(行為について)十分な根拠[理由]を示す

本文:The first version is more compact, but the second version is less intimidating.

intimidating:怖がらせる、臆病にする

本文:Which criterion is more important? In general, how do you decide which way to code something?

criterion: 基準、尺度

本文:And when we say “understand,” we have a very high bar for this word.

high bar: 高い基準

本文:But remember, when in doubt, the Fundamental Theorem of Readability trumps any other rule or principle in this book.

fundamental = basic

theorem = theory = rule

本文:Also, some programmers have a compulsive need to fix any code that isn’t perfectly factored.

compulsive = やめるにやめれない悪い習慣

本文:You might be thinking, What about other constraints, like making code efficient, or well-architected, or easy to test, and so on?

constraints = restrict doing something

以上です。もし良ければ第2回目のイベントも開催予定ですので、ぜひ申し込みをお待ちしております!!

connpass.com

SESのことちょっと分かった気がする - リベラルエンジニアズに行ってきた

だいぶお久しぶりな記事になってしまいました。

高気圧と共に私の記事がやってきましたよ。Toshiです。

 

さて、先日SESのリベラルエンジニアズさんにお話を伺いに行ってきました!

 

社名を間違えるという失態を犯したので再ツイートしました😂

実はここ最近、就活なるものを少しずつ始めていまして。

就活を始める前は、SESは絶対やめよう!って思っていました。

ですが、色々調べてたり、お話を聞いていくうちにそこまで悪いものではないんじゃ?と考えが変わってきました。

そんな時に、リベラルエンジニアズ代表の金子さん@skaneko414 から直接SESとは何か。というお話を聞いて、SESがどんなものか。どう利用するのが一番いいか。などがちょっと見えてきたので、それをまとめてみます!

業界未経験者でSESってよく分からん。という人に少しでもお役に立てたら嬉しいです!

f:id:toshi3arai3:20190525002807j:plain

【目次です】

SESを使うべき人、使うべきではない人

そもそもSESって何?ってちゃんと知りたい人は、私みたいな未経験者の記事じゃなく、こういうの読むと良いと思う。

note.mu

 

今から書くのは、金子さんの話を聞いて感じたことね。

まず、SESは助っ人的な感じで現場に行って仕事をする。

なので、こういう事ができる人が欲しい!って場所に、そのスキルを持った人がいく。のが最適、というか当たり前。

なので、この当たり前を無視して何もスキルのない未経験者が入ると、すぐに助っ人として出来る事がかなり限られてる。

でも、派遣するだけで会社はお金がもらえるからめっちゃおいしい。なんとしても社員を現場に送りたい!

そんな、「プログラミングとか分かりません!」って人ができることって何?ってなると、誰でも出来るExcel業務や、サーバーをただ目視で見るだけの保守作業。という仕事しかできないのは当然の原理だよね。

それを知らずに、「未経験者でも大丈夫です!」なんて会社に入って、実際は何のスキルも身につかない現場に入れられて、そのまま塩漬けにされてしまう。そんなケースもあるみたい。怖すぎる。

つまり、SESを使うべき人は、すでにある程度何か出来る人。価値を提供できる人なんだね。

逆にSESを使うべきじゃない人は、何も出来ない人。価値を提供できない人だね。

未経験者にとってのSES

じゃあ、僕みたいな業界未経験者は絶対にSESはやめたほうが良いのか。

となると、それは多分ちょっと違って。

多少でも何らかの価値を提供できるように自己学習をしてからSESに入るのは良いかもしれないね!

まず未経験者は、未経験のタグを外すことが大切。ってほんとに色んな人から言われるので、自分は絶対にこのサービスに携わりたい!とか強烈な拘りが無い限りは、まずは業界に入ることを目指したほうが良いのかも知れない。

そういう意味で比較的入りやすいSESは、ちゃんと準備をしたのであれば最初の入り口としては悪くないのかもしれないね!

繰り返しになるけど、何にも勉強してないのに、未経験でも育ててくれるっていうからここにしよー。ってのはちょっと危険かもね!ってお話。

SESのメリット

SESのメリットとして、色んな環境に触れられるとか、大規模なサービスに関われるというのは大きなメリット。

あとは、現場の人が合わなかった場合に案件を変える事も出来るのはメリット。

何だかんだ、仕事が嫌になるのって業務内容が嫌って言うより、周りの人が嫌ってケースが多いからね。

ちょっと合わない人がいるなーって時に現場を変えられるのは、受託や自社開発の会社に比べてメリットかもしれないね。

でも、現場ってそんな簡単に変えられるの?と聞いたら、それはSESの会社によるらしい。

例として、1,2社の企業と強く繋がりがあるところだと、相手企業の言いなりみたいな感じになりがちで、そんな簡単に現場は変えられないかもね。とのこと。

ここに書いてないメリットも沢山あると思うから、それは各自ググってね。きっとすぐ答えは見つかるはず。

※かなりSESのメリットを強調した記事にはなるけど、この記事でインタビューを受けているのりきさんは実際にお会いしたことがあって、エンジニアとして結構すごい人っぽいです。(僕が業界未経験なのですごさの計測ができない。)

shingekilog.com

SESのデメリット

メリットとしてあげた、色んな環境・言語に触れられるのは良いことだけど、数年して器用貧乏みたいな感じになる恐れもあるよね。

なので、まずは1つの言語、フレームワークを着実に身につける。例えば、自分はLaravelエンジニアです!と言えるようにした方が市場価値は高まる可能性はありそうかなと感じました。

他にもデメリットとして、例えば自分ひとりで現場に入って、周りに全然聞ける人がいない。みたいになる可能性もあるしね。それが結果としてスキルが伸びないってことにも繋がることはあるみたいだし。

ここに書いてないデメリットも沢山あると思うから、それは各自ググってね。デメリットの記事はきっとすぐ見つかるはず。笑

自分の足で情報を集めよう

とりあえずざっくりと、金子さんとお話したSESについての感想は以上です!

ちょっと話は変わるけど、改めてTwitterとかネット上の情報って取捨選択が難しいなって思う。特に初学者にとっては本当に難しい。

SESはとにかく絶対ダメ!SESやめますか?人間やめますか?的な声も聞くけど、使いようによってはすごく良いと思う。

自社開発最高!みたいな空気感あるけど、友人の自社開発で働いているエンジニアは1年働いてみてもう飽きちゃった。転職したい。って言ってるしね。

それぞれの考えやステージがあるから、その時一番最適なものを考えて選ぶようにしないと、すごく後悔しそう。

SNSで単に声の大きな人を信じてはいけないし、そもそもこの記事が間違いだらけな可能性は大いにあるしね!笑 自分の頭で考えないといけない。

それと、直接話しを聞きに行くとTwitterでは書いてないようなことも沢山聞けるから、やっぱり気になったら直接話しを聞きに行くのが大切だなって思います。

今さら、リベラルエンジニアズって何。的なまとめ

あ、気になる人もいるかもだけど、リベラルエンジニアズは未経験者を採用するのか?ってところに関しては、その人次第みたい。

リベラルエンジニアズは、エンジニアの芸能事務所みたいな位置づけで。会社の帰属意識なんていらないから、お互いのバリューを生かして、その対価としてしっかりお金を稼ごうぜ!みたいな、すごくさっぱりとした潔い会社だなって印象を受けました。

なので、未経験者でも十分にバリューを発揮できる!って人なら採用されるのかもしれない。僕みたいに、未経験者だしプログラミングも全然でバリュー発揮できないな。って人は多分厳しいね!笑

でも、いつか自分がバリューを提供できるような状態になったら、一度リベラルエンジニアズに所属して働いてみたいかも。って思いました。ここで働くと楽しそうだな!ってシンプルに思わせてくれる会社でした。

ちょっと話は変わるけど、リベラルエンジニアズを何故設立したか。というお話を聞いて、原体験として代表の金子さん自身が過去にSESで働いていた時の苦しみや悩みがあって、リベラルエンジニアズ設立に至ったらしい。

そういった原体験があるからこそ、僕に話してくれるときも、SESはこういうメリデメあるから、お前はちゃんと考えて失敗しないようにしろよ!って心遣いがすごく感じられた。

特に利益も生まないのに、僕の就職の悩みにも色々相談に乗っていただいて、あっという間の40分でした!なんかすごいステマ。というか全然ステルスしてない宣伝記事っぽいけど、本当にお話聞いてよかったと思ってます。笑

 

SESに興味あるけど、周りに聞ける人もいないし、そんな気軽に相談に行って良いのかなー。って人はとりあえず問い合わせしてみるといいかも!

liberal-en.jp

CakePHP 超入門 Chapter 3のちょっとしたまとめ

 

世間はGWで楽しげな雰囲気に満ち満ちていますが、派遣の私にはGWなんて関係ありません!つらいね!

さて、現在「CakePHP超入門」を使ってCakePHPの学習をしています。

CakePHP 超入門

CakePHP 超入門

 

 前回、Chapter 1,2の簡単なまとめを書いたので、今回はその続きとしてChapter 3のまとめを書きました。まとめというかほぼテキストそのまま書き写したと言ったほうが正しいかもというレベル。

まとめてみた結果として、今テキスト3周目ですが大切な部分が全然理解できてなかったなという感想です。この記事がお役に立てば嬉しいです。

モデルの役割とは

コントローラーからモデルにデータを取るよう要求すると、モデルからデータベースへSQLコマンドが送られる。

モデルは、PHPのプログラムとDBの間で命令やデータを翻訳し送受する役割を果たしているので、モデルは「SQLPHPの同時通訳」といえる。


phpMyadminを使おう

テキストではphpMyadminを使うとなっていますが、MAMPを使わずもしvagrant環境でやるなら、Sequel proという無料のアプリを使ってデータベース、テーブルの作成をするといいかもです。ダウンロードはこちらから。

DBの接続設定はこれでできました。

f:id:toshi3arai3:20190427120312p:plain

SSH Passwordはvagrantのversionによって変わるみたいですが、僕の場合はvagrant 2.2.3で、passwordはvagrantでした。

Sequel proの使い方は特に難しくないです。テーブル作ってデータ入れるだけなので、phpMyadmin使ったことある人なら直感でなんとなく使えると思います。

CakePHPのデータベース設定について

作成したデータベースとテーブルをCakePHPのプログラム内から使えるようにするために、configフォルダ内にあるapp.phpというファイルの設定を変更する必要があります。この辺は事前に一度ドットインストールをやっておくと何をするのかのイメージがつかみやすいと思います。

テキストでは画像のように変更するよう指示がありますが、もしvagrant環境でやるなら、usernameはroot、passwordは空欄に設定すればOKです。

f:id:toshi3arai3:20190427120420p:plain
なぜそのようにするかと言うと、ここではMySQLに接続する必要があります。先程Sequel Proで利用したMySQLのUsernameとPasswordを入れる必要があります。

私の場合、rootにはパスワードを設定していませんでした。ですので、ここではPasswordは空欄で問題ないです。(間違えていたらすみません。また、バージョンによってはrootでパスワードが初期設定される事もあるようです。)

コードはこのようになります。

f:id:toshi3arai3:20190427120451p:plain

ドットインストールやれば分かると思いますが、timezoneは+09:00にするとChapter6の時にいい感じになると思います。(多分)

app.phpの設定変更前と変更後でこのように変わります。無事接続できていますね。(CakePHPのversionによって表示が変わると思います。)

f:id:toshi3arai3:20190427120834p:plain

これが

f:id:toshi3arai3:20190427120852p:plain

こう!!



エンティティが俺を悩ませる

テキストによると、モデルという部分は実は存在しなくて、モデルとはテーブルとエンティティという2つのクラスを組み合わせとして用意される。とのことです。なんのこっちゃ。

f:id:toshi3arai3:20190427121129p:plain

テーブルは理解できるけど、エンティティがよく分からず(未だによく分かってない)苦しみました。今は、テーブルのデータを変更とかするのに必要なもの。という雑な認識でいます。

さて、テーブルとエンティティのクラスを作りましょう。この辺は特に問題ないと思う。唯一気をつけるのは、エンティティのクラス名は、使用するテーブル名の単数形にするということ。

今回People(人々)というテーブル名なので、単数形のPerson(人)という名前になることを留意しよう。

イメージ的に、テーブルはレコードの集まりなので複数形。エンティティは各レコード(単数)を扱うので単数形の名前になる。と考えるとわかりやすいかな。

次にこれらテーブルとエンティティを使ってデータベースにアクセスするコントローラーを用意する。

コントローラーを作ったら、ビューテンプレートの用意が必要。その際に、Templateフォルダ内にPeopleというフォルダを作成して、その中にindex.ctpというファイルを作る。この一連の流れ忘れがちな私です。

ここまでやったらブラウザでpeopleテーブルに保存したレコードが一覧で出てくるんだけど、こっから色々理解しないといけないことがある。

f:id:toshi3arai3:20190223221220j:plain

 

PeopleControllerの中でこんなコードがある。

$data = $this->People->find('all');

これはPeopleテーブルから全エンティティ(レコード)を取り出す処理を行っている。

モデルと連携したコントローラーでは、テーブルクラスと同じ名前のプロパティ(この場合Peopleのこと)が自動的に用意されて、そこにテーブルクラスのインスタンスが組み込まれるようになっているらしい。

このPeopleControllerは「Peopleモデルを扱うコントローラー」です。

Peopleモデルは、PeopleTableというテーブルとPersonエンティティとして作成されている。(モデルはテーブルとエンティティという2つのクラスを組み合わせとして用意されるってあったね。)

PeopleControllerクラスには、このPeopleTableクラスのインスタンスが「People」という名前のプロパティとして組み込まれるんだって。

そういうCakePHPのルールなんだろうね。だから、このあたりの名前の付け方のルールは覚えておかなきゃだね。

テキストの画像を見ると一番理解しやすいと思う。

f:id:toshi3arai3:20190427121257j:plain

findメソッドについて

ここではfindというメソッドを使って、データを呼び出している。

$変数 = $this->テーブル->find('all');

引数にallを指定しているから、そのテーブルの全エンティティ(今回だとPeopleテーブルだね)をまとめて返してくれている。

この後に、これをベースにして色々検索方法を試していくから、これはしっかり覚える必要がある。ただ、これまでMySQLとかやってきた人ならそんな難しくないと思う。

 

返り値は「Query」

findメソッドを使って返されるのは「Query」というクラスのインスタンスで、データベースから情報を受け取るのに使うもの。今は、「findを呼び出すとオブジェクト(query)が取り出せて、そこから検索したエンティティとかも取り出せる。」という基本的な流れを抑えておく。

 

toArrayメソッド

index.ctpにこんなコードを書きました。

<?php foreach($data->toArray() as $obj): ?>

toArrayメソッドは$dataに保管したオブジェクト(Query)から、レコードのデータだけを配列にまとめて取り出すもの。

配列として取り出せば、後はforeachで順に値を取り出して処理することが出来る。
toArrayは今後よく出てくるので覚えておいたほうが良いです。

ここで何をやってるかはこの画像を見ると流れが分かりやすい。

f:id:toshi3arai3:20190427121425j:plain

 

テーブルクラスの基本設定

ここでは、PeopleTable.phpのクラス部分をいくつか修正するんだけど、1点だけ分からないところがあった。

public function initialize(array $config)

このコードの引数に(array $config)とあるが、なんで引数が2個?2個あるならカンマで区切るのでは?と思っていたけど、これは$configというはarray(配列)じゃなきゃだめ。と変数の型指定をしている。

PHP 型宣言」とかでググると出てくるが、こういった機能があることを知らずに結構悩んだ。一応Qiita貼っておく。

qiita.com

 

エンティティの$_accessible設定

$_accessibleという変数は、「値の一括代入」を行うのに必要なもの。

例えば、フォームなどから値を送信してエンティティを作成するときに、送られたフォームのデータをまとめてエンティティに設定することが出来るので便利。

英語を意味を理解すると、この変数の働きも理解しやすい。

accessibleはaccess + ableが合わさったもの。

access(アクセス) + able(〜できる)なので、アクセスできるという意味になる。
ここのableは中学英語のbe able to(なになに出来る)のableと同じです。

$dataの内容を調べる。というところで、print_rという関数が使われています。
これはPHPマニュアルを見ると

print_r — Prints human-readable information about a variable

と書いているので、変数について人間が読めるような形でプリントをしてくれる関数ですね。

PHP: print_r - Manual

getでエンティティを取り出す

$data = $this->People->get($id);

「get」メソッドは、引数に指定したIDのエンティティを取り出すメソッド。引数にはプライマリーキーの値を指定する。

返される値は、エンティティのインスタンスで、配列などになっていない。
getによるエンティティの取り出しはエンティティ取得の基本中の基本なので、しっかり覚える。

エンティティの作成

エンティティは新たに作成して保存を行うことで、それがデータベーステーブルにレコードとして保存されるようになっている。

新しいレコードを追加するときは、新しいエンティティのインスタンスを用意し、保存のメソッドを呼び出すだけ。

 

ビューテンプレートの作成

fromタグ生成部分で、最初の引数に$entityという変数が設定されている。これは、コントローラー側で用意するエンティティのオブジェクト。
これを設定しておくことにより、エンティティの値が自動的に入力フィールドに割り振られていく。
「エンティティの作成用フォームをフォームヘルパーで作る場合は、必ずエンティティのインスタンスを第1引数に設定する」ということは覚えておく。

フォームの値を取り出す

$data = $this->request->data['People'];

add.ctpのフォームでは、nameフィールドはtext('People.name')となっている。

Peopleがフォームの名前、nameがフィールドの名前と考えると分かりやすい。
こうすると、data['People']['name']に値が保管される。

まず、data['People']という値が用意されて、この中にフォームの値が連想配列としてまとめて保管される。なので、data['People']を取り出せば、Peopleフォームから送られたデータがまるごと取り出せる。

新しいエンティティの作成

$entity = $this->People->newEntity( );

エンティティのインスタンスは、対応するテーブルクラスの「newEntity」メソッドを使う。

テーブル->newEntity(データ);

とすることで、テーブルに保管されるエンティティのインスタンスが作成できる。

引数には、そのエンティティに保管するデータを連想配列にまとめたものを用意する。
request->data['People']で取り出したものをそのまま引数に渡せばOK.

ここでは引数に$dataを指定していて、$dataには$this->People->find('all')でもってきたDBの全データが配列で入っている。

リダイレクトについて

return $this->redirect(['action'=>アクション]);
これでリダイレクト出来る。

エンティティの更新

ここ重要なのにあんまり分かってなかったです。説明は画像が分かりやすい。

f:id:toshi3arai3:20190427121916j:plain

URLを生成するためのメソッド

$変数 = $this->Url->build(['controller'=>'〇〇', 'action'=>'xx']);

これで指定のコントローラーの指定アクションへのURLが作成される。

 

フォームの値でエンティティを更新する

送られてきたフォームの値を使ってエンティティの内容を更新する際はテーブルクラスの「patchEntity」というメソッドを使う。

$this->People->patchEntity($entity, $data);

第1引数のエンティティの内容を、第2引数の値で更新できる。

エンティティの更新は「patchEntityでエンティティを更新、saveで保存」という流れで行う。

おわりに

語尾がかしこまった感じのところはほぼテキストそのままコピーしたんだなって察してください!ちょっとまとめるつもりが、分かっていない所が多すぎて膨大な量になってしまいました。引き続きがんばりましょー。

CakePHP 超入門 Chapter 1, 2のちょっとしたまとめ

Quelcodeというプログラミングスクールに通い始めてから早4ヶ月が経過し、自分の成長の遅さに日々震えていますが皆様はいかがお過ごしでしょうか。

先日よりCakePHPに取り組んでおり、とりあえずテキストを1周したのでこれは覚えなあかんってことをまとめますね。

CakePHPって何?って人は自分で調べてね!多分Ruby on RailsPHPでやる。みたいな認識でOKっぽいよ!

あと、CakePHPやる前にオブジェクト指向に関してはもう一度振り返ったほうが良いかも!

多分、この記事を読んで役立つ!と思う人は、僕と同じスクールに通ってる人くらいだと思うけど、ブログなんて自己満なので書いていきます!(時間に追われて書いてるのでテンションが高め)

 

 

この記事でカバーする範囲

スクールでは「CakePHP超入門」ってテキストが指定されているんだ!
今回はこのテキストのChapter 1,2でこれは要チェックやで!ってところをお送りするね!

CakePHP 超入門

CakePHP 超入門

 

 

なんで全体を通してじゃないのかって?全体をまとめる時間は今無いからだ。

あとね、こういうテキストって大体最初のChapterで基本を学ばせて、後半でそれを利用して何か作ろう!みたいになるのね。

でだ。最初が分かんないまま後半に進むと


分かんない * 分かんない = 全然分かんない

になるのよ。なので、まずは最初の大切なところを自分のためにまとめておきたいわけ!

それと、このテキスト全体を通してエラーが出たりするところは、スクール同期がまとめてくれたブログがあるから、そっちを見てくれよな!

 

Chapter 1について

まず1つお知らせがあって。僕はChapter 1はこのテキスト通りに進めてないんです。
僕はこのテキストをやる前に、まずはドットインストールでCakePHPのレッスンをやりました。Vagrantの環境を作って、そこでまあ色々やってくのよ。

 

なんでドットインストールやったかというと、テキストという文字情報だけで学ぶより、動画で学んだほうが概要つかみやすいなってこの4ヶ月やってきて学んだわけ。


んで、UdemyでCakePHPの動画を探したんだけど、Versionが古いのしかないのよ。世界全体で見るとCakePHPは下火っぽいし仕方ないね。


そんな時にドットインストールでレッスンあるやんってことでやってみました。

もう一つドットインストールでCakeやった理由としては、スクール同期で先にCakeに取り組んだ人が環境構築でくそ詰まってたんだよね。その解決方法は先程のスクール同期のブログに書いてると思うからそれをみてね。


僕はその環境構築で躓くのが怖くてVagrantでやったというわけ。

もしドットインストールでCakeをやるなら絶対に覚えておいてほしいのは、無心でやってね。ということ。

何も考えたらあかん。ただただ動画上で指示されたように手を動かそう。Don't think, feel.の精神だね!

なんでかというと、ドットインストールは1動画3分以下くらいでめちゃテンポ良い。けど、細かい説明全然ない!仕方ない!受け入れよう!あと0.8倍速で見よう!

細かいことはCakePHP超入門で説明されてるから、まずは全体像をつかむ。という意味ではドットインストールオススメだよ!全レッスンやるのに僕は色々調べながらやったら3,4時間くらいかかった!

ドットインストールでやったことに関しては、この記事読むとわかりやすいかも!

qiita.com

 

でも今はまだ読まなくてOK!テキスト1周してから読むと、「あーーーー!なるーー!」となるから未来の自分に期待しよう!
んで、ドットインストールで一通りCakeやれば、このテキストのChapter 1はほぼ見なくても大丈夫だよ!なのでChapter 1に関しては書くことない!はい次!

 

CakePHP超入門 Chapter 2で覚えておくべきこといろいろ

ここからはおふざけはなしだ。まずね、細かいことの前に作業の流れを分かっておいたほうが良い。

雑な流れ

最初にコントローラーにアクションを書く。アクションとはメソッド(関数)のことね。そして、それを表示させるためのViewファイルを書く。Viewというんだから見た目を表示するものだね。

もし、index( )というアクション(メソッド)を書いたら、それを表示させるためにはindex.ctpというviewのファイルが必要。
もしadd( )というアクション(メソッド)を書いたら、それを表示させるためにはadd.ctpというviewのファイルが必要。

この流れは意識しておくと、コントローラーにedit( )というアクションを書いたから、次はこれを表示するためにedit.ctpというviewファイルが必要だな!と分かるよ。分かるって楽しいね!

名前空間という空間

テキストに従って早速写経を始めたら、名前空間ってのに出くわすと思う。何だそれ?ってなるよね、困るよね。俺は困った。

でも、名前空間の役割を知るとこれは絶対なきゃダメだなって分かる。こういう自分には意味不な機能ってきっと先達が困ったから生み出したんだろうね。

なので、どんな問題があったからこの機能が産まれたんだろう。って考えると腹落ちしやすいと思うよ!ストン!(腹落ちする音)

名前空間に関してはこれを読むとストン!です。

qiita.com

オブジェクト指向とかあまり分からなって人(僕含む)は、上記の記事書いてる人が書いてくれたオブジェクト指向の記事読むとはかどります。

 

$this->set(変数名, 値); とは仲良くしておいたほうが良い

$this->set(変数名, 値);はめちゃくちゃ使う。コントローラーからViewに値を渡すのに必要なんだ。そして、このsetはテキストで絶対覚えろと書かれている。

f:id:toshi3arai3:20190419173741p:plain

しっかり書いてるね

 

だが、それを俺は怠った!結果として、このテキストを1周終えてもsetって何やってるのかよく分かんないなー。となっていた。

君にはそうなってほしくない!なので今一緒に覚えよう!

とは言ってもめっちゃ簡単!

$this->set(変数名, 値);は$this->set('title', 'Hello!');としたら、$title = Hello!と変数がセットされるってだけ。
変数名 is 値みたいな感じでセット出来るんだね。これは絶対覚えよう。なんならタトゥーで$this->set(変数名, 値);と彫ってもいいくらいのレベルでこれは使う。

 

elementメソッドともいい関係を築こう

エレメントってヘッダー、フッターをレイアウトから切り離して表示する時に使うのね。
書き方は element(パス, [連想配列])って感じ。
パスって何?って感じだよね、分かる。パスってheader, footerのことね。
テキストだとこんな風に書かれてるね。

<?=$this->element('header', ['subtitle' => 'cake php sample page']) ?>

これで、header.ctpのファイル内の$subtitleがcake php sample pageって表示されるよ!


これもさっきのsetと似てるね!


['subtitle' => 'cake php sample page'] は

$subtitle is 'cake php sample page' みたいな感じだね。

分かればめっちゃ簡単!けど、1周目って分かんないことのオンパレード過ぎて焦ってしまうけど、やってることはこれまでPHPとかWordPressをやってきたならChapter 2は全然理解するの難しくないと思う!

 

思ったより書くことがなかった

振り返ってみると、setとelementについてしか書いてないね!ほんとはもっと色々悩んでたんだけど、何に悩んでたか忘れた!喉元過ぎればなんとやらだね!

最後にテキストにあるChapter 2の「この章のまとめ」をレビューしてみよう!

コントローラーだけは使えるように!

コントローラークラスの作り方。アクションメソッドの書き方。はしっかり覚えろだって。

コントローラークラスの作り方はuseやclassを記述することだね!これは暗記より、都度テキストを見て書き方を覚えていけば良い気がする!気がするだけだけどね!

アクションメソッドの書き方は

public function アクション( ){ }

だね。これはやってくうちに何回も書くから覚えるとおもう!

ビューテンプレートと値の渡し方

これはsetを使うとこだね。ここは絶対理解したほうがいい!書き方を覚えるよりも、何をしているかをちゃんと理解すると良いのかなと思うよ!

フォームヘルパーによるフォームの利用

フォームは常にフォームヘルパーで作ると考えろ!だって。ここはまあフォーム書く際に書き方みればいいと思う!

絶対忘れちゃだめなこと

やっぱりコントローラーとビューテンプレートの基本的な使い方が大切。

コントローラークラスを作る→アクションメソッドを書く→ビューテンプレートを表示する。の一連の流れは、テキスト写経しながら常に意識すると良いと思うな!(2回目)

おわりに

コーヒーを2杯飲むとハイになって変なテンションの文章になったのできっと後で書き直すと思う。
個人的にテキストやる時に大切だなと思うのは

1. 1周目は最後までとにかく終わらせることを目的とする。細かいことは2,3周目の自分に期待する。

エラーが出るならサンプルコードをコピーしても良いと思う。全体像見えないのに細かいことにこだわるのは時間もったいないかなと思うよ!Time is precious dane!

 

2. 詰まったらまずは正誤表を見よう!

エラーは自分のせいじゃないこともあるよ!(たいてい自分のせい)

 

3. このテキスト分かりにくい、くそ。と思う前に自分を疑おう!

ここ大切だよ!ってテキストが書いてるところを見落としてない?
もしテキストの説明が分からなかったら、違うテキストやググって違う人の説明を読んでみると理解できることもあるよ!

 

こんなところ!全然いいまとめにならなかったけど、done is better than perfectだからOKだね!またね!