YYPHP#96「フリーランスの仕事ってどう？」「ゼロから始めるPHPの勉強のしかた」 「GitHubにアップすべきでないファイルって何？」「コードレビューで何を見てあげたらいい？」「PHPerが楽できるサーバレスを教えて！」

これは2019年8月9日に開催したPHPerイベント[YYPHP#96]のイベントレポートです。

[YYPHP#96]: https://yyphp.connpass.com/event/132260/
[YYPHP]: https://yyphp.connpass.com/

[YYPHP]は一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催はほぼ**毎週**、高田馬場にて。

__今回の配信動画__

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">YYPHP生配信開始！今日のお題「フリーランスの仕事ってどう？」「ゼロから始めるPHPの勉強のしかた」「GitHubにアップすべきでないファイルって何？」「コードレビューで何を見てあげたらいい？」 <a href="https://t.co/PlfIa3SLYi">https://t.co/PlfIa3SLYi</a></p>&mdash; suin❄️TypeScriptが好き (@suin) <a href="https://twitter.com/suin/status/1159774698449694720?ref_src=twsrc%5Etfw">August 9, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

__過去回の配信動画__

https://www.youtube.com/playlist?list=PLpOeTEye3Bg6PodrLHHC72jWMJYZz8VbG

__前回__ → [YYPHP#95「ライブラリ選定基準って？ライセンスどうしてる？」「Laravelで参考になる教材について語りたい」「実務で役立つLaravelベストプラクティスを教えてくれ！」「アルゴリズムが仕事で役立ったことってある？」「受託開発でのデプロイってどんなふうにやってる？」 - Qiita](https://qiita.com/suin/items/c00ab96faa0df8f61c54)


## 雑談

### これからPHPを勉強しようと思うが、何から取り掛かったらいい？ (ぽっぽさん)(おおさき)

* nouphetさんの勉強の仕方
    * Udemyという動画コースで「PHP初級プログラミング講座」のその1・その2をやった。
        * 動画コースは、再生スピードを調整できるサービスがオススメ。
            * 4ヶ月くらいのPHP歴の人には「もう知ってるよ」という内容もあると思う。
                * 倍速で聞いていて、気になる所だけ等速で聞くといい。
    * [45歳からはじめるPHPプログラミング、プログラミングを初めて16日目までの軌跡(クラスまで書けるようになったよ！) - Qiita](https://qiita.com/nouphet/items/ad5a644adb8d59f1574a)
        * 最初はApacheとMySQLをインストールせず、純粋なPHPだけで勉強していた。
            * Apache+PHPで初めてしまうと、Apacheの知識、ブラウザのデバッグなど学ぶことが急に増えてしまう。
            * PHP自体の学習に集中できるようにする。
        * 課題をやってみる
            * yyphp-quiz
                * 写経もいいが、実際は自分で考えてコードを書くというのが大事。
                * [#yyphp-quiz No.2: 月間カレンダーの表を作ろう - HackMD](https://hackmd.io/sLK6B_itRBCBO3AYldlU8g)
                * [#yyphp-quiz No.3: 多次元配列から要素を一撃で取り出す関数を実装して - HackMD](https://hackmd.io/xe0yC-9eRS6c07u7LcuN5g)
            * どういう書き方が正解か、最初は分からないと思う。まずは、目的を達成することを集中しよう。
            * 九九の表を出力は練習問題としてオススメ。
                * プログラマとしての感覚が試される。
...

* [PHPの効率的な学習法: YYPHP60回開催を通じて、先輩PHPerから得られた35の知見 - Qiita](https://qiita.com/suin/items/edb067f2e5df713e966d)

...

* Perlから入ったとき、PHPを10日で覚えるという本を読んだ。
* オープンソースの写経などもやった。
* [PHPコーディング規約まとめ - Qiita](https://qiita.com/hshimo/items/04be1f432240c58300f4)
    * 規約に沿っているか
    * 不具合の起きないソースになっているか
* コピペもいいが、手で打ったほうが感覚でわかるかも。
    * 写経するだけでなく、自分なりのアレンジを入れるとより理解が進む。
* 写経する対象ってどうやって選ぶ？
    * オープンソースを写経するのってハードル高い？
        * 小規模なものがいい。
        * モジュール単位など一部分だけを写経してみる。
    * 興味がある分野がいいと思う。

...

* 最初は掲示板を作った。
* UdemyでMySQLとPHPの講座をやった。
* 未経験で不安があったので、メンタというサービスで質問できる人を探した。
    * [スキルを身につけて、人生の選択肢を増やそう。｜MENTA（メンタ）](https://menta.work/)
    * teratailやstackoverflowで質問したが、マサカリが飛んできて解決しにくかったから。
    * 面と向かって質問できる人がいないと駄目だなと思ったので、最初はメンターを探すことに集中した。
        * 手っ取り早く聞ける人が欲しかったので、有償でやってくれる人を探した。
        * 3,000円でSlackで聴き放題の人。

### EC-Cubeの経験者から話聞きたい (てりー)

案件として、EC-Cube案件をもらった。

インストールしてみたが、ほぼ備わっている機能で要求を満たせた。

開発しなくても案件として引き受けていいものか？

簡単すぎて不安になった。

...

* いいと思う。
    * よっぽどのことをしない限り、インストールするだけでいい。
* お客さんもIT詳しくないとインストール・セットアップだけでも商売になる。
* コードを書くことが仕事だと思ってた。
    * コードは書かなければ書かないほどいい。
        * 書けばバグるし、テストも増えるし。

### フリーランスの仕事ってどう？ (ぽっぽさん)

経験者がいたら聞きたい。

...

* どうとは？
* ある人から聞いた。
    * 営業のひととつながっておいたほうがいいと。
* 繋がるのも大事だが、自分のできること、自分にしかできないことをちゃんとアピールしておかないと、ぱっと思い出せない。
* いままで作ったシステムはポートフォリオとして公開できない。
    * 使った技術やこだわったことは言えると思う。
    * 業種の知識もアピールポイントになる

...

* 黒字化まで3年かかった。
* 最初の1年は仕事というかんじの仕事はなかった。
* キャッシュフローを回せるようになってないといけない。
    * 請負の開発だと、完成後の支払いとかになる。

...

* 軌道に乗るまで2年くらいかかった。

...

* 自分たちが思っている以上に価格を上げても意外と平気だったりする。
* 身の丈にあった額を出したほうが良いと思う。

...

* 自分の強みをしっかり持っておいたほうが良い。
* 社長に会っても技術力がアピールポイントにならない場合がある。
    * 社長の分かる言葉で、社長にとって分かるメリットを示すことが大事。

...

* フリーランスチームメイトの見つけ方知りたい。
    * 勉強会やもくもく会に参加して話があう人を見つけられるといいかも。

...

* 費用対効果を考えてやってたか？
    * 厳密に計算したことはない。
        * 数値化できないと思う。
    * 投資にかんしてガツガツ行く方だった。
        * 知識に関して増やすは将来絶対役に立つ。

### デバッグのやりかたがよくわからない (てりー)

var_dumpしまくればいいで乗り切ったが、Laravelではどうやったらいいか分からなくなった。

複雑すぎて、どこがバグの原因か分からない。

エラーコードに対して、調べるくらいのことしか対処法が分からない。

...

* デバッグには2つのプロセスがある
    * 問題なく動いている部分と、問題がある部分を切り分けるプロセス
    * 問題箇所を修正するプロセス
* Laravelはコンポーネントが多くて複雑なので、切り分けがまず大事。
* 単体テストがあるとデバッグがしやすい環境になる。
    * 単体テストとは、部品単位で動作確認する自動テストのこと。
    * 単体テストが通っていれば、部品以外に不具合があることが明らかになる。
* エラー情報を調べるとき
    * まずは公式の一次情報が大事
    * stackoverflowなど英語情報も大事
* [barryvdh/laravel-debugbar: Laravel Debugbar (Integrates PHP Debug Bar)](https://github.com/barryvdh/laravel-debugbar)
* var_dumpを書くだけ？
    * `var_dump(); exit();`で止めるとわかりやすかったりする
* PhpStormを使うとステップ実行が使えて便利。
    * IDEはしょうもないバグも教えてくれる。
* ステップ実行するときはxDebugが必要

### GitHubのリポジトリにあげないほうがいいファイル (ひろかわ)

.gitignoreに書いたら上がらないと聞いたが、上がってしまった。
ちゃんとあがらないようにする方法を知りたい。
あげないファイルにどんなのがあるのか知りたい。

...

* GitHubに誤ってアップしたAWSのシークレットでAWSアカウントがハックされる事件も発生している。
* .gitignoreの置き場
* すでにステージングされているファイルは.gitignoreできない。
* git add -p とかで個別に追加していくべきなのでは。
* 確認するために git status でチェックしたほうがいい。

...

あげないファイルにどんなのがあるのか知りたい。

* 致命的なのは認証情報
    * アクセストークン
* データ
    * ログ
* サーバ接続情報
    * 設定ファイルはわけたほうがいい

### コードレビューで何を見てあげたらいい？ (おおさき)

「変数名を変えたほうが良いよ」などの指摘はできるが、他には何をしたらいいか分からない。

...

* PSRなどコーディング規約に従ったものにする。
* 「動けばいい」→「壊れにくくなっているか」

...

* コーディング規約は自動化したほうがいい
* CI
    * PHP-CS-Fixer
    * php Code Sniffer
* フィードバックの数
    * 多すぎると対応しきれなくなるので、フィードバックの数を多くしすぎないようにする
    * 多すぎる場合はペアプロなどで教えてあげるほうが良さそう
* コードインスペクション
    * 不具合を見つける
    * おかしな挙動がないかを見つける
* 何のためにコードレビューをするのかを確認し、意識統一した方が良い
* かけ離れ過ぎてたら、パソコン持って話にいくのが一番早い。
* コードレビューで全部見てくれる人がいる。
    * 変わったところだけで見ることができないレビューもある。
* 機能を知ってないとレビューできない。
* ピアレビュー、かけ離れた機能をレビューしてない。
    * 自分ができないなら断るのも大事。
    * 他にできる人を紹介する。

### PHPerが楽できるサーバレスを教えて！ (すいん)

* サーバレス経験者: 9人中 1人
* 最近気になる
    * [brefphp/bref: Serverless PHP on AWS Lambda](https://github.com/brefphp/bref)
* 大規模なシステムには向いてなさそう
* 向いてそうな使い方
    * 簡単なロジックで大量の画像を処理させる
* メリット
    * サーバの運用保守を気にしなくて良い → マネージド
* PHP + AWSの知識が必要になる

### MAMPが起動しなくなった (いしづか)

MySQLにターミナルから操作するときに、MAMPを使っているが、起動しなくなってしまった。

...

* 初歩的な質問・疑問はどうやって解決してた？
    * エラーメッセージで検索
        * エラーメッセージが出るのは解決しやすい
    * そうでないと難しい


# YYPHPは毎週やってます

PHPについてワイワイ話したい方は、[YYPHPのイベント情報](https://yyphp.connpass.com/)をチェックしてみて下さい。

以上、YYPHPのレポートでした。次回もワイワイやっていきたいと思います！ では、また来週！