Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Applicationとは何か(哲学)(PHPBLT #6)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sitri@ndxbn
February 22, 2017
Technology
610
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Applicationとは何か(哲学)(PHPBLT #6)
PHP BLT #6 で発表してきたやつ。
最近目にするPHPのフレームワークにおけるApplicationクラスの実装例を見て、アプリケーションとは何か?を哲学(笑)した。
sitri@ndxbn
February 22, 2017
Other Decks in Technology
See All in Technology
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
Rust で関数型ドメインモデリング
takonda
0
130
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
180
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
5
4.8k
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
110
AI時代のPRレビューにどう向き合うか?
kairim0
1
240
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
110
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
120
Optunaの最新リリースv5.0について
pfn
PRO
0
110
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
夫婦で子育てするための育児標準化
codmoninc
PRO
0
300
Featured
See All Featured
Everyday Curiosity
cassininazir
0
350
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How STYLIGHT went responsive
nonsquared
100
6.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Accessibility Awareness
sabderemane
1
250
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Designing for humans not robots
tammielis
254
26k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
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コンテナである(多い) ナ ナンダッテー!! Ω ΩΩ
ご清聴ありがとうございました!!!