Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Applicationとは何か(哲学)(PHPBLT #6)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
sitri@ndxbn
February 22, 2017
Technology
600
0
Share
Applicationとは何か(哲学)(PHPBLT #6)
PHP BLT #6 で発表してきたやつ。
最近目にするPHPのフレームワークにおけるApplicationクラスの実装例を見て、アプリケーションとは何か?を哲学(笑)した。
sitri@ndxbn
February 22, 2017
Other Decks in Technology
See All in Technology
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
大学生が本気でDatabricksを活用してDiscordサークルをデータ駆動させてみた
phantomjuju
1
380
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.8k
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
620
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
50k
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
240
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
210
Platform engineering for developers, architects & the rest of us (AI agents)
danielbryantuk
0
180
Claude Codeを組織で使いこなす— サーバサイドAIエージェント運用の実践知
techtekt
PRO
0
200
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
1.2k
新アーキテクチャ「TiDB X」解説とDedicated比較 TiDB Cloud Premiumのゲーム運用活用を検証
staffrecruiter
0
110
Ruby::Boxでできること、Refinementsでできること
joker1007
3
380
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
130
Speed Design
sergeychernyshev
33
1.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Exploring anti-patterns in Rails
aemeredith
3
390
Navigating Weather and Climate Data
rabernat
0
210
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Music & Morning Musume
bryan
47
7.2k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Rails Girls Zürich Keynote
gr2m
96
14k
GraphQLとの向き合い方2022年版
quramy
50
15k
Transcript
Applicationとは 何か(哲学) しとりー@ndxbn
しとりー@ndxbn Web系フリーランス いまは東銀座の歌舞伎座らへんにいます PHP歴6年くらい 最近は JavaScript が多い(悲しみ) @ndxbn
ことの発端 とあるレガシーなオレオレフレームワークにて… ※このコードは、フィクションです。
• DB使わないアプリだってあるだろ!!!! • メンテしないアプリだってあるだろ!!!! • じゃあコンストラクタで受け取ってるこいつらなんだよ!!!???
そして… 俺の中で、アプリケーションの定義がゲシュタルト崩壊した そりゃぁ、哲学したくなりますよね!!!
ということで、 「アプリケーションとは何か」を哲学(笑)しました。
結論からいうと
Applicationとは何か DIコンテナのこと
None
アプリケーションソフトウェア(wikipedia) アプリケーションソフトウェア(英: application software)とは、ユーザーが要求する情報 処理を直接実行するソフトウェアである。
アプリケーション(自己解釈) Webアプリなら「リクエスト受けて、レスポンス返す」 コンソールアプリなら「引数受けて、レスポンス返す」 → 「なんか入力を受けて、処理して、レスポンス返すやつ」っていう定義を、良さげな感じ に設計・実装したやつが、「Applicationクラス」
最近のPHPの各種フレームワークの Applicationクラス
Applicationクラスの例 Laravel の場合 \Illuminate\Fandation\Application Symfony の場合 (Symfony\Component\HttpKernel) CakePHP の場合 \App\Application
Phalcon の場合 \Phalcon\Application Slim の場合 Slim\App Silex の場合 Silex\Application Fuel の場合 Fuel\Core\Fuel
Applicationクラスの探し方 オートローダの登録した直後くらいに作られてるやつが、だいたいそう。
例えば
Laravelの場合 ブラウザでアクセスしたときは オートローダ登録して require __DIR__.'/../vendor/autoload.php';
Laravelの場合 ブラウザでアクセスしたときは Application作って
Laravelの場合 ブラウザでアクセスしたときは Applicationに登録された Web用の処理をする
Laravelの場合 コンソール(ターミナル)からの 処理の場合 オートローダ登録して require __DIR__.'/../vendor/autoload.php';
Laravelの場合 コンソール(ターミナル)からの 処理の場合 Application作って
Laravelの場合 コンソール(ターミナル)からの 処理の場合 Applicationに登録された コンソール用の処理をする
CakePHPの場合 オートローダ登録して require __DIR__.'/../vendor/autoload.php';
CakePHPの場合 Application作って サーバでの処理として実行
Applicationクラスの探し方実装面での定義 オートローダの登録した直後くらいに作られてるやつ
で、正体なんなの???
Laravelの場合 https://github.com/laravel/framework/blob/master/src/Illuminate/Foundation/Application.php DIコンテナ
Symfonyの場合 https://github.com/symfony/symfony-standard/blob/master/web/app.php
Symfonyの場合 https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/Kernel.php Symfony system ≒ワークフロー群
Symfonyの場合 本当は、Symfonyの本質は、Doctrin ORM とか HTTP Fandation とか を まとめ上げ る、「Bundler」としてのシステムだったりする。(と思う)
DIコンテナってことでよくね?(雑) (Symfonyわかりません、誰か教えてください)
CakePHPの場合 https://github.com/cakephp/app/blob/master/src/Application.php
CakePHPの場合 https://github.com/cakephp/cakephp/blob/master/src/Http/BaseApplication.php Applicationを作るには、 設定ファイル(パス)が必要 →Applicationとは、設定
Phalconの場合 https://github.com/phalcon/cphalcon/blob/master/ext/phalcon/application.zep.c DIコンテナ
Slimの場合 https://github.com/slimphp/Slim/blob/3.x/Slim/App.php DIコンテナ (pimple/pimple)
Silexの場合 DIコンテナ (pimple/pimple)
Fuel の場合 (ナンモ ナイト)
Fuel の場合 オートローダ登録して Fuel::init ↑こいつじゃね
Fuel の場合 設定必要 →Applicationとは、設定
まとめ 現代において、良く使われるフレームワークでの Applicationクラスとは、 DIコンテナである(多い) ナ ナンダッテー!! Ω ΩΩ
ご清聴ありがとうございました!!!