Edited at

YYPHP#83「キレイなコードとは?」「フレームワークを使うメリット」「リファクタリングのやりかた」「テストコードを書くべきタイミングが分からない」「複数人での開発方法の知見が知りたい」

これは2019年05月10日に開催したPHPerイベントYYPHP#83のイベントレポートです。

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

今回の配信動画

過去回の配信動画

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


どんなコードがきれいなのか


  • 他の人が見やすいコードが綺麗なコード(読みやすさ)

  • ちゃんと役割が分かれているコード

  • 他の人が見やすいコードの基準ってなんなのか気になる。


    • どう意識したらそういうコードになるのか?

    • インデント

    • 命名規則が整っていて統一されている



  • 『リーダブルコード』



  • 最近型が大事だなっと思ってきた


    • ちゃんとどんなクラスが返ってくるか分かるようなコードになっていると嬉しい

    • 連想配列ばっかりだったりすると、何が入ってるか分からないので厳しい



  • 読みづらいコード


    • if文ネストしすぎてると読みづらい


      • 波動拳




    • やたらコメントが書かれていると読みづらい


      • コメントが間違っていたりして惑わされる



    • functionばかり


      • コピペで同じコードが量産されていると辛い



    • クラスに1000行とかあるコード


      • 10行目で定義した変数が500行目で使われているとか





  • メインのコードは短く


フレームワークって使ったほうが良いの?

いまバニラPHP(素のPHPのこと)で書いているので


  • フレームワークを使っている人の意見


    • 複数人で開発するときに使ったほうが良い


      • 簡単にCRUDアプリが作りやすい

      • Laravel

      • 開発環境が管理しやすい

      • 開発しやすい

      • フレームワークの規約を知ってる人同士だとすぐ入れる





  • 初速は開発速度が早い


    • 例えばフレームワークで80%は実現できるけど、長くやっていると残りの20%を実現するのにやりづらくなってきたりもする


      • MVCに沿って開発してるのに、複雑になってきてしまう場合とか

      • サービスという概念がフレームワークにない場合は、自分で実装しないといけない

      • フレームワークで想定してない使い方をする場合





  • セキュリティとかはフレームワークがある程度守ってくれる


    • バニラだと、自分で考えないといけないところが多い

    • フレームワーク

    • うっかりと落とし穴に落ちるのを防いでくれる


      • 意図せずにXSSを作ってしまうとか

      • エスケープ関数作ってたけど、入れ忘れてたとか





  • フレームワークに規約があるので、チームワークしやすい


リファクタリングはどうやったらいい?どういうことに気をつければ良い?


  • どうやるか


    • クラスやファンクションの長いのを整理する


      • 複数の処理や機能が混ざっているので、分離する



    • 読みづらいコードを整理する

    • 最初は整理して分離するところから


      • ディレクトリに分けたりもする






テストコード書かないでリファクタリングとか、それt_wadaの前でも同じこと言えんの?



あとIDEのリファクタリング機能が最近は便利なので活用しましょう



テストコード(ユニットテスト)を書きたいが、書き始めるタイミングがわからない

書きたいと思っているが、いつか着始めたら良いのか…

納期も有るし…

勉強する時間も必要だし…


受託で人で開発してるけど、複数人での開発方法の知見が知りたい

どうやったら管理がしやすいか

ほぼ一人なので、書くのも一人、マージするのも一人、な状態なので


  • コード管理


    • Git



  • コミュニケーション



  • コーディング規約を決める

  • レビューができる

  • 書くコードの量が増える

  • 役割やタスクが振られる


    • 自分が遅れると周りを遅れさせてしまう



  • どう書いていいかわからないときに聞いたり聞かれたりできる

  • 個人だけだと意外と書かないWiki系はちゃんと書いたほうが良い


    • コードで表現できるモノはコードで表現しておくべき

    • 自分が疑問に思ったこと


      • 読み方、意味、業務知識などの専門用語の説明

      • 教えたタイミングで教わった人に書いてもらうようにするとか





  • > チケット駆動開発やかんばんでタスクを管理するのはいいぞ!


皆さん転職活動はどのような活動をしましたか?


  • 転職エージェントに登録した

  • 知り合い(先輩が社長だった)の会社に入った

  • 起業した(not転職)

  • 就活に有利な技術のとらえかた


    • 転職エージェント数社に登録していると、メルマガで分かる


      • Pythonとかブロックチェーンとか





  • ポートフォリオを作ったりしてた。

  • 途中からはtwitter転職が便利!

  • QiitaとかGitHubにアウトプットしている人のほうが有利な気がする

  • Github上のコードだけじゃなくてQiitaとかnoteとか自分のブログみたいな記事も含めて、そういうアウトプットを増やしていくのはやっぱり評価されやすい

  • 勉強会に参加して、勉強会主催会社にアピールするのもあり。


    • 主催以外にも懇親会で知り合った人とか




ローカルでgitで管理してるやつを、本番でも使うのってどうやるの?


  • GitLab

手軽なのは

ssh 本番サーバ

cd /path/to/app/
git pull

productionブランチ, masterブランチを本番リリース用にするなど。


YYPHPは毎週やってます

PHPについてワイワイ話したい方は、YYPHPのイベント情報をチェックしてみて下さい。

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