All Articles

2019-02-19

Laravel JP Conference

書くのが少し遅くなってしまったがLaravel JP Conferenceに参加してきた。 Laravel TrackとPHP Trackに分かれており、Laravelを普段使っていない自分でも様々な内容のセッションが聴けて楽しめた。

以下に聴いたセッションを箇条書きでざっくりまとめた。

フレームワークとの付き合い方

  • 楽をするためにフレームワークを使う
  • アプリケーション(ビジネス要件)を実現するためのHow

    • 要件に合わせて選択する
  • フレームワークとアプリケーションコードとの距離を適度に保つ

    • ディレクトリの分割やnamespaceの分離など

SimpleとEasyは違う

  • SimpleとEasyの違いを料理に例えて説明
  • laravel-mixなどビルトインのライブラリは簡単に使えるが拡張が困難という経験談

    • EasyなモノはComplex
  • 対してwebpackなどは簡素で拡張性が高いが使用するまでの理解などにコストはかかる

    • SimpleなモノはHard
  • トレードオフがあるだろうが、基本的にはSimpleを選択しよう

改めて料理をメタファにすると非常にわかりやすいなと感じた。

Webアプリケーションが今こそ知るべき、RDBMSのパフィーマンスチューニングの勘所 ~ 未踏の速度を目指して~

  • SQLが実行されるまでのメカニズムを図解
  • 遅い原因は大凡エグゼキュータと呼ばれるSQLの実行を行う部分

    • その要因として、プランナーが提示した実行計画が低パフォーマンスということが挙げらる
  • SELECTだけでなく、UPDATEDELETEでも実行計画を確認できるのでどんどんやっていくべき。
  • 集合情報を削って求めている情報を取得することがSQLは得意
  • インデックスの貼り方やテーブル設計がいかに重要か

リリース直前にLumenからLaravelに移行した話

  • リリース1ヶ月前にLaravelに移行
  • 導入したアーキテクチャのおかげで、アプリケーションコードが分離されていた
  • テストを書くのは辛かったが、テストのおかげでスムーズに移行できた

テストのカバレッジは98%あったと発表されていて、テストの重要さとフレームワークとの付き合い方がいかに重要かを再認識した。

Laravelで学ぶ、ウェブアプリケーションチューニングの基本

  • 推測ではなく計測する
  • 様々な要因で遅くなっている場合がある
  • ウェブアプリで改善できるボトルネックの箇所は限られている
  • 本当にウェブアプリ自体が遅いのかを見極める

    • ウェブアプリ外の改善で解消される場合もある
  • 計測ツールを使ってボトルネックを地道に解消していく

抽象化って何?

  • interfaceabstractを使うことが目的ではなく、問題を抽象化することが重要
  • 抽象化された問題をプログラムで実現するためにinterfaceabstractを使う
  • 抽象化における3つの指針(仮)

    • 適切な命名
    • 抽象度の統一
    • 狭い範囲

適切なモジュール分割が出来ていると、「抽象度の統一」が実現されて、狭い範囲での実装や適切な命名が行えるのかなと思った。

参加してみて

カンファレンスに参加したのは今回が初めてだったが、参加して良かったと思っている。 懇親会も参加したのだが、中々自分から話かけられないので周りの人を見回してばかりだったのは反省点。 ただ転職前に面談に行った企業の方と話せたのは個人的に良かった。

LTではLaravel3のコードを読んだ、PHPでJavaを動かしたとかなりユニークな内容や、 Laravel Shiftという便利ツールの紹介など本当にLTか・・・?と思うものばかりだった。

運営してくださった方、スピーカーをされた方、ありがとうございました。

プライベートスクラム

スクラムの知識があまりないが、プライベートでスクラム回してみたを真似してみた。

期間は2019-02-11 ~ 2019-02-18

計画したこと

  • ✓ 達人に学ぶSQL徹底指南書 11章を読む
  • 達人に学ぶSQL徹底指南書 8章を読む

    • 演習問題が残っている
  • Adobe XDのチュートリアルをやってみる

    • 一切触らずだった
  • ✓ プリンシプルオブプログラミング 3章を読む
  • ✓ 個人開発の環境構築

    • リポジトリ作成
    • プロジェクト作成
    • 初期ページの表示
    • GUIからのDBアクセス

Keep

  • 1週間での計画
  • Notionを使った進捗管理
  • Togglでのタイムトラッキング・ポモドーロ

Notionを初めて使ってみたが、色々なフォーマットの入力が出来る上にデザインもシンプルで使い心地はかなり良かった。

また各タスクごとにTogglを使って時間計測 + ポモドーロを試した。 普段やっている作業から脱線して別の細かいことまで検索しがちだが、 選んだタスクに集中して取り組めてる感覚があった。

Problem

  • 週末がほとんど予定で時間が取れなかった
  • ほんとうにやる必要があるのか?という見直しをしなかった
  • プランニングが曖昧だった
  • 平日の学習時間が確保出来ていない

週末の時間がほとんど使えなかったのは外出していたことが理由だが、こういった不確定要素や 平日に十分な学習時間は確保出来ないと考えつつ見積もった方が良いのかもしれない。

Try

  • 各アイテムごとのAsIs, ToBeを考えてみる
  • 計画に使う時間を少し多くしてみる

    • 前回が25分くらいだったが、詳細に計画できることを期待して2倍くらい設けてみる