Skip to content

Laravel3に入門してみる

公開日:

東京都港区芝浦田町グランパークカンファレンスで開催された『Laravel JP Conference』でライトニングトーク(5分)として発表しました。

Download PDF

スライドテキスト

Page 1

Laravel3に入門してみる

Let's begin with Laravel 3

2019-02-16 Laravel JP Conference Shibaura, Tokyo, Japan #laraveljpcon

Page 2

お前誰よ

  • うさみけんた (@tadsan) / Zonu.EXE
  • GitHub/Packagistでは id: zonuexe
  • ピクシブ株式会社 pixiv運営本部
  • Emacs Lisper, PHPer
  • Emacs PHP Modeのメンテナ引き継ぎました
  • 好きなリスプはEmacs Lispです
  • Qiitaに記事を書いたり変なコメントしてるよ

Page 3

Page 4

Page 5

さて

Page 6

PHP界隈でのLTデビュー戦(2015年11月)

Page 7

経歴上PHPのフレームワークを深く使うことは全然なかった

Page 8

PHP界隈でのLTデビュー戦(2015年11月)

Page 9

フレームワークを作るのは難しいのか?

Page 10

Laravelのように多くの局面で受け入れられるフレームワークを設計するのは難しい

Page 11

自分の問題を解決する小さなフレームワークを作るのはそれほどでもない

Page 12

Create your own PHP Framework

Page 13

PHPer人生、一度はフレームワークを作っておこう

Page 14

実運用する上での数々のリスクは一旦置いておいて(セキュリティとか)

Page 15

理解>作る

(自分で動かすだけなら)

Page 16

それからまあまあ経験を積んで

2019年

Page 17

そういえばLaravel JP Conferenceのスタッフになったけど人生でLaravelを10行くらいしか書いてない

Page 18

そうだLaravelやろう

|\ __ /_ (m) _ ピコーン|ミ|/ `´ \('A`)ノヽノヽくく

Page 19

しかし良い解説書は既にあるし、ここはLaravel JP Conferenceなんだから大多数は体験済み

Page 20

そうだ、Laravel 1.0

|\ __ /_ (m) _ ピコーン|ミ|/ `´ \('A`)ノヽノヽくく

Page 21

元ねた:Rails 1.0のコードを読む

Page 22

そうして我々はGitHubの奥地へと旅立った

Page 23

https://github.com/laravel/laravel/releases?after=v3.0.1

Page 24

_人人人人人人人人_> 3.0以前がない < ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄

Page 25

じゃあ3.2.14で

Page 26

Laravel3に入門してみる

Let's begin with Laravel 3

2019-02-16 Laravel JP Conference Shibaura, Tokyo, Japan #laraveljpcon

Page 27

このバージョンを選んだ理由

Page 28

https://github.com/laravel/laravel/releases/tag/v3.2.14

Page 29

たぶん1.xとか2.xのコードも漁ればあるとは思うけど

Page 30

Laravel 3.2.14の特徴

2013年3月22日リリース

3.x系の最終バージョン

新しい方が些細なバグも解消されてるだろ、という日和

古いPHPフレームワークの特徴が色濃く残っている

Page 31

古いフレームワークの特徴?

依存パッケージ(Symfony)のコピーも直接コミットされてる

Symfonyのcomposer.jsonは同梱されてるが、Laravel自体はComposer未採用

全コードが1リポジトリにある

Page 32

ということでコードリーディングを始めました

Page 33

この時点で14時くらい

(当日スタッフのシフト後)

Page 34

やったこと

Page 35

Phanを使いましょう

Page 36

理由

PHP7の非互換を早めに潰す

Laravelの特徴的なメタプログラミングを炙りだす

Phanで静的にわからない=妖怪のしわざメタプログラミング

Page 37

yield関数 (5.5以降SyntaxError)

Page 38

SyntaxErrorになるような非互換はこれだけ

Page 39

改行位置 (C#っぽい)

Page 40

PHPDocはかなり書かれてる

Page 41

namespaceの位置が独特

ファイル名が小文字

Page 42

表層的なことはもういい

Page 43

動かそう

Page 44

PHP 7.3で

Page 45

mcryptに依存してる

Page 46

キー長のパディング

Page 47

めんどくさいのでビルトインWebサーバphp -S localhost:3939 public/index.php

Page 48

動いた!

Page 49

見ためがプレーンだけど実はHTML5

Page 50

localhostでドキュメントも読める

Page 51

2013年時点でホスピタリティすごい

Page 52

動いたので雑に実装していく

Page 53

ルーティング追加は(表面的に)大差ない

Page 54

フォームの受け取りがわからなかった(Symfony\HttpFoundation依存)

Page 55

BladeはLaravel3で導入

Page 56

いま気付いたけどBladeってASP.netのRazorのオマージュじゃん

Page 57

オチはないけどまとめ

Page 58

雑にWebアプリっぽいものを作ることはできた

Page 59

癖がわかればコードは読みやすかった

Page 60

依存関係がリポジトリ内に全部あるので追いやすかった

Page 61

コードは90000行くらい(コメント/空行含む)

当然全部は読んでない

Page 62

doc消し忘れたLaravelアプリとかこの世にありそう

Page 63

内部実装的なエッセンスがどの程度Laravel4以降に引き継がれてるかはわからない

Page 64

表面的には同じだと言ったが細かいAPIは「かなり」異なる