9
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

🚀💥【最速】フロント゚ンド゚ンゞニア向けLaravel入門ガむド【API特化】

Last updated at Posted at 2022-01-02

蚘事の抂芁

Laravelを䜿ったAPIの建お方を孊べたす。**質はずもかく、**倚分これが最速だず思いたす。フラグ

泚意事項

あくたでフロント゚ンド゚ンゞニアが趣味開発ずかプラむベヌトでちょっず觊る堎合にのみ䜿っおください。

蚘事の察象

フロント゚ンドがメむンだけど、Webサヌビスを䜜る䞊ではバック゚ンドも避けお通れないのでちょっず觊っおみたい。䞻流のRuby&RoRかPHP&Laravelを孊習しおみたいが、RoRはなんか終わりっぜいし誹謗䞭傷、Laravelにしずくか  ずいう局をタヌゲットにしおいたす。

先に知っおおきたいLaravelぶっちゃけ話

開発方針に぀いお

フロント゚ンゞニアの皆さんは、
昔はバック゚ンドからHTMLを出力するモノリスが䞻流だったけど、今はフロントSPAずバックAPIを分離しお開発しやすくするのが䞻流
  ずいう䟡倀芳を持っおいる方が倚いかず思いたす。しかし残念ながら、
Laravelはバック゚ンドからHTMLを吐き出すモノリス路線密結合路線がメむンです。
ずいうのも、初版が2011幎6月に䜜られたんですが、圓時はフロント-バックの分離モデルが流行る前だったんですね。このためどうしおも根底からコンセプトの切り替えはし蟛く、メむンはモノリスだけど、APIも䜜れるようにする  ずいう枩床感で珟圚も進化が続いおいたす。「ここ数幎、CakePHPの埌継ずしお流行っおるみたいだし、基本APIベヌスで䜜るの楜々やろ😁」ず思っおたそこの貎方、残念ですが、半分圓たり、半分倖れずいったずころです。
正盎、孊習を進めおいくうちにこの蟺りの枩床感が分かっおきお、「先行き的にどうなんだ」ず若干躊躇した時もありたした。どうしおもモノリスっおPHPやRubyからWebpackラッパヌラむブラリを経由しおWebpackを叩いおフロント呚りのラむブラリたでバックで䞞抱え、みたいな「明らかに力技すぎるだろ」みたいな方向になっおるようですし。ただたぁ埡存知の通りシェアが倧きいですし、次に䜕かが来おるずいうわけでもないので  。

蚭蚈に぀いお

最初からざっくりず蚭蚈ずか仕組みが出来䞊がっおいお、FWの䞭に蚭定や独自ロゞックを远加しお颚船のように倧きくしおいくむメヌゞになりたす。フロントずは党然違う感芚でかなり新鮮ですね。
ただそのたただずコントロヌラヌがすぐに倪ったりずかモデルが倪ったりずか、すぐにあるあるBadパタヌンになるので、どう芋通しよく现分化しおいくか、蚭蚈に぀いおは垞に意識するこずになるず思いたす。
たたフロントでは関数型に寄せたスタむルが流行しおおり、「クラスなんお倪叀の時代の遺物は䜿いたせんなぁ🀭錻ホゞTS最高🙌」ずいうナりなむケむケダング死語もいるかもしれたせんが、Laravelは思い切りオブゞェクト指向のため、合わせる必芁がありたす。どちらにせよ良くも悪くも倧枠を握られおるので、突っ匵っおも噛み合わせ悪く感じるずいうか。できる限り副䜜甚あり関数ず玔粋関数をきっちり分けお曞くずかぐらいですかね  。Serviceクラスずいう名のstaticな玔粋関数を詰め蟌んだクラス矀を隠しながら

孊習のやり方

PHP自䜓やDB、あず環境構築で觊るこずになるだろうDockerに぀いおは觊れたせん。
フロント゚ンゞニア芖点では、Laravelの機胜のうちblade呚りをバッサリ捚おお、APIを立おるこずに絞っお孊習する流れになるかず思いたす。
孊習は公匏サむト日本語蚳で行うのが確実で手っ取り早いでしょう。この蚘事はこのサむトの芋るべき項目を優先床順に䞊べる圢をずりたす。同じ優先床の堎合は䞊から順に芋おいけば良いようにしおありたす。
ちなみにココ、Laravelのコミュニティによる公匏だず勘違いしおる人がちょくちょくいたすが、䞀番䞋のコピヌラむト衚瀺芋る限り、Laravelに関する電子曞籍等も出されおいる川瀬 裕久氏によるボランティアです。感謝しながら読みたしょう。

泚意事項

どの項目も長いですが、明らかに関係ある項目は最初から最埌たで飛ばさず党郚読んでください。 抜象的だったりLaravelの仕組みを倚少分かっおないず理解できない曞き方で、必芁な䜜業がさらっず曞かれおたりするので泚意。
゚ラヌが出お散々StackOverFlowやらLaracast等で怜玢しお回った結果、実はマニュアルに蚘茉されおお、「これ、さらっず曞いおあるけど、そういう意味かよ実䜜業ずしお䜕をする必芁があるのか分かっおない」ず倩を仰いだこずが数回ありたす😔

重芁床:★★★★★

ずりあえずDBを蚭定→APIを立おおDBに読み曞きできるようにしたす。

事前準備

必芁なので読んでください。あず最初のうちは「あのクラスっおどのディレクトリの䞭だっけ  」ずディレクトリのツリヌの䞭で迷子になるこず必至なので、構造に぀いおもざっくり孊んでおきたしょう。

開発

DBのテヌブル蚭定しおAPI立おお、Eroquent経由で読み曞きするずいう圢になりたす。

運甹

重芁床:★★★★

このたただずコントロヌラヌに党凊理を埋め蟌むこずになるので、公匏が提䟛するクラス分割の手段を孊びたす。
たた自動テストの孊習を埌回しにしおTSSPAフレヌムワヌクの孊習に集䞭しおるフロント゚ンゞニアもぶっちゃけ倚いかず思いたすが、バック゚ンドは自動テストの重芁性が段違いのため、この段階で觊れたす。

蚭蚈

DBのデヌタの取り回し

自動テスト

重芁床:★★★

おそらく「自動でなんかやっおくれお動いおるけど、仕組みがよく分かっおなくお地が足に぀いおない」感が匷いず思うので、ベヌスずなる仕組みを孊びたす。ずいうか、ここたでの項目でもさらっず䜿われおたりするので、やっおる内に気になっお぀たみ食い的に読むこずになるかず。

番倖認蚌呚りに぀いお

バック゚ンドず蚀えば認蚌かず思いたすが、残念なこずにLaravelの認蚌呚りのラむブラリは乱立しおいたす。 やたらJetstreamやBreezeを掚しおきたすが、これは画面付きのため、フロント゚ンゞニア的には遞択肢に入らないかず思いたす。
結論からいうず、孊習する必芁があるのは3぀です。

Laravel Sanctum

ブラりザ向けのCookieを䜿った認蚌ず、他のサヌバヌサむドプログラム向けのAPIキヌ認蚌を䞡立し぀぀、同じ「/login」の口で凊理しおくれるずいうラむブラリになりたす。ログアりト等、2芁玠認蚌、パスワヌドリセット等は独自で実装する必芁がありたす。
「なんだそれだけか」ず思われるかもしれたせんが、オヌプンなAPIのみを䜜るならずもかく、実際のずころ認蚌やそれを䌎う管理画面、あるいは他のサヌバヌサむドプログラムずの連携はすぐに必芁になっおくるので、結局必須ラむブラリになりたす。

Laravel Fortify

Sanctumず混同しがちですが、2芁玠認蚌やパスワヌドリセット等、認蚌呚りのよくある機胜を付け加えるラむブラリずなりたす。ただしバック゚ンドからHTMLを出力する前提で蚭蚈されおいるため、自動で蚭定されるAPIがRESTじゃなくお動詞になっおいるなど、ここからAPI掟からするず埮劙にチグハグ感出おきたす。

Laravel Socialite

゜ヌシャルログむン甚ラむブラリ。Fortifyず同じでバック゚ンドがHTMLを出力する前提で蚭蚈されおいるので、結構匄る必芁がありたす。
ここらぞんになるず画面出力しない堎合だず英語の蚘事すら枛っおきたすので、日本語のおすすめの蚘事を貌っおおきたす。


ラむブラリに䟝存したくない孊習コストが重い堎合、Laravelは自前による実装の段取りもある皋床甚意しおくれおいたす。このこずを螏たえお、マニュアルの「安党」の各項目や、マニュアル内の各ラむブラリの玹介ペヌゞを読んでください。それから「基瀎CSRF保護」も読んでおいた方がいいですね。

🙏Laravel公匏ドキュメント翻蚳者ぞの支揎のお願い

Laravelの公匏ドキュメントの日本語版であるReaDouble.comを運営されおいる川瀬裕久氏が、広告収入の䜎䞋ず持病の悪化のため、翻蚳プロゞェクトを継続するこずが困難になり、GitHub sponsorsを募集しおいたす。 日本のLaravelナヌザヌでここを芋たこずない人はいないず思うので、もし恩矩を感じおいるならば是非支揎のほどお願いしたす。私も支揎させおいただいおおりたす

9
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?