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
sitri@ndxbn
February 22, 2017
Technology
0
590
Applicationとは何か(哲学)(PHPBLT #6)
PHP BLT #6 で発表してきたやつ。
最近目にするPHPのフレームワークにおけるApplicationクラスの実装例を見て、アプリケーションとは何か?を哲学(笑)した。
sitri@ndxbn
February 22, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
110
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
370
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
220
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
2
3.1k
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
180
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
1
110
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
110
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
360
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
Producing Creativity
orderedlist
PRO
348
40k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
Navigating Weather and Climate Data
rabernat
0
110
Everyday Curiosity
cassininazir
0
130
What does AI have to do with Human Rights?
axbom
PRO
0
2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
150
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
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コンテナである(多い) ナ ナンダッテー!! Ω ΩΩ
ご清聴ありがとうございました!!!