これは2019年05月10日に開催したPHPerイベントYYPHP#83のイベントレポートです。
YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催はほぼ毎週、高田馬場にて。
今回の配信動画
PHP雑談生配信 https://t.co/N9f9MjknrK
— suin❄️PHPでオブジェクト指向 (@suin) 2019年5月10日
過去回の配信動画
どんなコードがきれいなのか
- 他の人が見やすいコードが綺麗なコード(読みやすさ)
- ちゃんと役割が分かれているコード
- 他の人が見やすいコードの基準ってなんなのか気になる。
- どう意識したらそういうコードになるのか?
- インデント
- 命名規則が整っていて統一されている
- 『リーダブルコード』
- 最近型が大事だなっと思ってきた
- ちゃんとどんなクラスが返ってくるか分かるようなコードになっていると嬉しい
- 連想配列ばっかりだったりすると、何が入ってるか分からないので厳しい
- 読みづらいコード
- メインのコードは短く
フレームワークって使ったほうが良いの?
いまバニラPHP(素のPHPのこと)で書いているので
- フレームワークを使っている人の意見
- 複数人で開発するときに使ったほうが良い
- 簡単にCRUDアプリが作りやすい
- Laravel
- 開発環境が管理しやすい
- 開発しやすい
- フレームワークの規約を知ってる人同士だとすぐ入れる
- 複数人で開発するときに使ったほうが良い
- 初速は開発速度が早い
- 例えばフレームワークで80%は実現できるけど、長くやっていると残りの20%を実現するのにやりづらくなってきたりもする
- MVCに沿って開発してるのに、複雑になってきてしまう場合とか
- サービスという概念がフレームワークにない場合は、自分で実装しないといけない
- フレームワークで想定してない使い方をする場合
- 例えばフレームワークで80%は実現できるけど、長くやっていると残りの20%を実現するのにやりづらくなってきたりもする
- セキュリティとかはフレームワークがある程度守ってくれる
- バニラだと、自分で考えないといけないところが多い
- フレームワーク
- うっかりと落とし穴に落ちるのを防いでくれる
- 意図せずにXSSを作ってしまうとか
- エスケープ関数作ってたけど、入れ忘れてたとか
- フレームワークに規約があるので、チームワークしやすい
リファクタリングはどうやったらいい?どういうことに気をつければ良い?
- どうやるか
- クラスやファンクションの長いのを整理する
- 複数の処理や機能が混ざっているので、分離する
- 読みづらいコードを整理する
- 最初は整理して分離するところから
- ディレクトリに分けたりもする
- クラスやファンクションの長いのを整理する
テストコード書かないでリファクタリングとか、それt_wadaの前でも同じこと言えんの?
-
リファクタリングする時は、テストコードがあるべき
-
リファクタリングとは = 振る舞いを変えずに内部構造を変えること
-
TDD ← おすすめ
-
段取り
- テストコードを書く
- リファクタリングする
- テストして振る舞いが変わってないことを確認する
-
レガシーコード改善ガイド(ウルシステムズ株式会社 平澤章 マイケル・C・フェザーズ 越智典子 稲葉信之 田村友彦 小堀真義)|翔泳社の本
-
新装版 リファクタリング 既存のコードを安全に改善する | コンピュータ・一般書,プログラミング・開発,その他 | Ohmsha
あとIDEのリファクタリング機能が最近は便利なので活用しましょう
テストコード(ユニットテスト)を書きたいが、書き始めるタイミングがわからない
書きたいと思っているが、いつか着始めたら良いのか…
納期も有るし…
勉強する時間も必要だし…
- 勉強しながらテストを書かなきゃいけないが、納期が有るので、動くものを納品するのが優先
- 「動く」保証は何がするのか
- いまは手動でテストしてる
- エビデンスは取ってない
- いまは手動でテストしてる
- やってる人はどうやってるか
- ローカルでは自分の開発で関わるところをテストする
- コードをpushするとCIサーバが全体的なテストを自動実行する
- エラーになるとアラートが上がってくる
- 「test」ディレクトリにテストコードが入ってる
- チームで開発している場合は
- みんなでせーのでテストを書き始めると良い
- 結合テストレベルでのテストから始める
- DBをモックにしたり
- APIサーバをモックにしたり
- 改修するタイミングで、1回に1時間テストコードを書いて増やしていく
- テスト駆動開発 | KentBeck, 和田卓人 | 工学 | Kindleストア | Amazon
- 負荷テストツール
- 知らないと「PhpStormのライセンス料をドブに捨ててる」も同然のショートカットキーを教えてください - Qiita
受託で人で開発してるけど、複数人での開発方法の知見が知りたい
どうやったら管理がしやすいか
ほぼ一人なので、書くのも一人、マージするのも一人、な状態なので
- コード管理
- Git
- コミュニケーション
- コーディング規約を決める
- レビューができる
- 書くコードの量が増える
- 役割やタスクが振られる
- 自分が遅れると周りを遅れさせてしまう
- どう書いていいかわからないときに聞いたり聞かれたりできる
- 個人だけだと意外と書かないWiki系はちゃんと書いたほうが良い
- コードで表現できるモノはコードで表現しておくべき
- 自分が疑問に思ったこと
- 読み方、意味、業務知識などの専門用語の説明
- 教えたタイミングで教わった人に書いてもらうようにするとか
-
チケット駆動開発やかんばんでタスクを管理するのはいいぞ!
皆さん転職活動はどのような活動をしましたか?
- 転職エージェントに登録した
- 知り合い(先輩が社長だった)の会社に入った
- 起業した(not転職)
- 就活に有利な技術のとらえかた
- 転職エージェント数社に登録していると、メルマガで分かる
- Pythonとかブロックチェーンとか
- 転職エージェント数社に登録していると、メルマガで分かる
- ポートフォリオを作ったりしてた。
- 途中からはtwitter転職が便利!
- QiitaとかGitHubにアウトプットしている人のほうが有利な気がする
- Github上のコードだけじゃなくてQiitaとかnoteとか自分のブログみたいな記事も含めて、そういうアウトプットを増やしていくのはやっぱり評価されやすい
- 勉強会に参加して、勉強会主催会社にアピールするのもあり。
- 主催以外にも懇親会で知り合った人とか
ローカルでgitで管理してるやつを、本番でも使うのってどうやるの?
- GitLab
手軽なのは
ssh 本番サーバ
cd /path/to/app/
git pull
productionブランチ, masterブランチを本番リリース用にするなど。
- GitHubとGitlabの違い
- GitHubはSaaS
- GitlabはCI/CDの機能がある
- CI:Pushするたびに特定の処理をしてくれるやつ(でいいよね?
- CD:↑できるならmasterブランチにpushされたら本番にデプロイだ!
- push とか pull は同じ
- GitlabはOSSなので、自社でインストールして使える
-
GitHubじゃないとCircleCIが使えない!
- git pushでVPSにデプロイするには
git config receive.denyCurrentBranch updateInstead
で - Qiita
YYPHPは毎週やってます
PHPについてワイワイ話したい方は、YYPHPのイベント情報をチェックしてみて下さい。
以上、YYPHPのレポートでした。次回もワイワイやっていきたいと思います! では、また来週!