SlideShare a Scribd company logo
2013/6/1(土) PHPカンファレンス関西2013
意図を表現するプログラミング
PHPメンターズ
久保敦啓 (KUBO Atsuhiro)
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
久保敦啓 (KUBO Atsuhiro)
●
Twitter @iteman
●
GitHub https://github.com/iteman
●
PHPメンターズ
●
Piece Framework
●
日本Symfonyユーザー会
●
関西IT勉強宴会
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
PHPメンターズ
●
PHPプログラマーを対象とするサービス
– トレーニング、技術サポート、メンタリング
– プログラミング道場
●
メンター
– 久保敦啓 @iteman
– 後藤秀宣 @hidenorigoto
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
PHPメンターズ
●
Twitter @phpmentors
●
GitHub https://github.com/phpmentors-jp
●
Webサイト・ブログ
http://phpmentors.jp/
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Piece Framework
●
PHPフレームワーク、ツール
– MakeGood
– Stagehand_TestRunner
●
オープンソースソフトウェア
●
Piece Project
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Piece Framework
●
Twitter @piece_framework
●
GitHub https://github.com/piece
●
Webサイト
http://piece-framework.com/
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
過去の活動を振り返る
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2003年
●
2002-12-27 PHP 4.3.0
●
2003-02-29 Net_UserAgent_Mobile 0.1
– 携帯キャリア判別ライブラリ
– PEAR http://pear.php.net/
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
Net_UserAgent_Mobile
<?php
…
require_once 'Net/UserAgent/Mobile.php';
…
$mobile = &Net_UserAgent_Mobile::factory();
if ($mobile->isDoCoMo()) {
…
} elseif ($mobile->isSoftBank()) {
…
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2004年
●
7月 第1回PHP関西セミナー
– 久保によるMojavi 2 + Smartyの解説
●
7月 PHP 5.0.0
– Zend Engine 2、新しいオブジェクトモデル
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2005年
●
7月 PHP 4.4.0
●
11月 PHP 5.1.0
– PDO
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2006年
●
1月 Maple祭り
– 高橋邦彦さん @kunit さんによるWebアプリケー
ションフレームワークMapleの勉強会
●
4月 Stagehand_TestRunner 0.3.0
– コマンドラインテストランナー
●
8月 Piece_Unity 0.6.0
– Webアプリケーションフレームワーク
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2006年
●
10月 第3回Piece Framework勉強会
– 久保「Piece Frameworkの概要」
●
11月 PHP 5.2.0
●
11月 関西オープンソース2006
– 企業へのOSSの導入・活用、Linux、Samba
– 久保「Piece Framework を体験する」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
ページフロー定義(Eclipse)
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
ページフロー定義(YAML)
...
viewState:
- name: Input
view: Input
activity:
method: onInput
transition:
- event: next
nextState: Validation
...
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2007年
●
3月 Piece_ORM 0.1.0
– SQLマッパー
●
3月 第8回PHP関西セミナー
– 久保「Piece_ORMの概要」
●
7月 オープンソースカンファレンス2007 Kansai
– 仮想化技術(Xen)、MySQL、Ruby on Rails
– 久保「Piece FrameworkによるセキュアなWebアプリケーション
の開発」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2007年
●
11月 関西オープンソース2007
– MySQL、Ruby
– 久保「Piece Framework入門」
●
12月 Piece Network 1
– 高木正弘さん「PHPマニュアルの読み方」
– 関山隆介さん「SPL入門」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
SQLマッピング(Piece_ORM)
...
method:
- name: findById
query: SELECT * FROM user WHERE id = $id
...
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2008年
●
8月 PHP 4.4.9
– PHP 4の最後のリリース
●
11月 関西オープンソース2008
– 伊藤直也さん講演会、Memcached、関西Ruby会
議、チケット駆動開発
– 高橋邦彦さん「設計勉強会@関西」
– 久保「Piece Frameworkの概要」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2009年
●
9月 PHP 5.3.0
– 名前空間、遅延静的束縛、goto、無名関数(クロージャ)
●
11月 関西オープンソース2009
– OpenSocial、Ruby、アジャイル、スマートフォン
– 久保、松藤「Eclipse + PHP + TDD = MakeGood!」
●
11月 MakeGood 0.1.0
– Eclipse PDT向けテストランナー
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
MakeGood
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2010年
●
2月 XP祭り関西2010
– 久保「Tools for Doing Test Driven Development in PHP」
●
3月 オープンソースカンファレンス2010 Kansai@Kobe
●
4月 オープンソースカンファレンス2010 Kansai@Kyoto
– WordPress、concrete5、Drupal、EC-CUBE、Magento
– HTML5、クラウド関連
– 久保、松藤「Eclipse PDT + MakeGood による PHP コードのテスト」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2010年
●
8月 第1回関西IT勉強宴会
– 久保「GitHubの使い方」
●
11月 関西オープンソース2010
– Ruby、スマートフォン、HTML5
– 渡辺幸三さん「刮目せよ!モデリング技術がもたらすオープ
ンソース業務システム」
– 久保「フレームワーク・ツールによるPHPプログラムの自動テ
スト」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2011年
●
7月 第1回関西PHP勉強会
– テーマ「PHP におけるテスト」
– 久保「継続的テスト入門」
●
10月 PHP Matsuri 2011
– 久保「PHPUnitでテストを始めよう」
●
11月 関西オープンソース2011
– 東日本大震災、クラウド、Ruby、テスト駆動開発
– 久保「継続的テストランナーMakeGood入門」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
2012年
●
3月 PHP 5.4.0
– トレイト、ビルトインウェブサーバー
●
4月 第3回関西PHP勉強会
– テーマ「Symfony2マスターが直接手ほどき!アプ
リケーション開発実況観戦」
– 久保「Symfonyによるソフトウェア開発入門」
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
意図
Intention
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
“意図的な記述は、何が必要なのかを直接かつ
明確に示し、余計ながらくたや不要な実装の
詳細を避けます。これらは、理解しやすさ、
分析しやすさ、修正しやすさ、保守のしやす
さなどの、良いコードが持つすべての属性を
備えています。ドメインに固有な表記法によ
り、意図性を達成します。“
— ジェネレーティブプログラミング
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
<?php
$link = mysql_connect('localhost', 'myuser', 'mypassword');
mysql_select_db('blog_db', $link);
$result = mysql_query('SELECT id, title FROM post', $link);
?>
<html>
...
<ul>
<?php while ($row = mysql_fetch_assoc($result)): ?>
<li>
<a href="/show.php?id=<?php echo $row['id'] ?>">
<?php echo $row['title'] ?>
</a>
</li>
<?php endwhile; ?>
...
</html>
<?php
mysql_close($link);
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
「もつれた」意図
●
(暗黙の)ルーティング
●
データベースアクセス
●
ユーザーインターフェイス
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
<?php
...
class BlogController extends Controller
{
public function listAction()
{
$posts = $this->get('doctrine')->getManager()
->createQuery('SELECT p FROM AcmeBlogBundle:Post p')
->execute();
return $this->render(
'AcmeBlogBundle:Blog:list.html.php',
array('posts' => $posts)
);
}
...
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
blog_list:
path: /blog
defaults: { _controller: AcmeBlogBundle:Blog:list }
blog_show:
path: /blog/show/{id}
defaults: { _controller: AcmeBlogBundle:Blog:show }
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
<?php
require_once __DIR__.'/../app/bootstrap.php';
require_once __DIR__.'/../app/AppKernel.php';
use SymfonyComponentHttpFoundationRequest;
$kernel = new AppKernel('prod', false);
$kernel->handle(Request::createFromGlobals())->send();
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
{% extends "::layout.html.twig" %}
{% block title %}List of Posts{% endblock %}
{% block body %}
<h1>List of Posts</h1>
<ul>
{% for post in posts %}
<li>
<a href="{{ path('blog_show', {'id': post.id}) }}">
{{ post.title }}
</a>
</li>
{% endfor %}
</ul>
{% endblock %}
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
モデルビューコントローラー
コントローラー
モデル
ビュー
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
レイヤー化アーキテクチャー
ドメイン
アプリケーション
ユーザーインターフェイス
インフラストラクチャ
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
「もつれた」意図をほぐす道具
●
アーキテクチャーパターン
●
デザインパターン
●
各種プログラミングパラダイム
●
プログラミング言語、フレームワーク、ライブ
ラリ
●
ドメイン特化言語
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
グラフィカルDSLによる意図の表現
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
テキストDSLによる意図の表現
...
viewState:
- name: Input
view: Input
activity:
method: onInput
transition:
- event: next
nextState: Validation
...
Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved.
参考
●
Symfony2 versus Flat PHP (current) - Symfony,
http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html
●
Wikipedia contributors. "PHP." Wikipedia, The Free Encyclopedia.
Wikipedia, The Free Encyclopedia, 29 May. 2013. Web. 31 May. 2013.
●
エリック・エヴァンス「エリック・エヴァンスのドメイン駆動設計」、翔泳社、
2011年。
●
クシシュトフ・チャルネッキ、ウールリシュ・W・アイセンアッカ「ジェネレー
ティブプログラミング」、翔泳社、2008年。
●
マーチン・ファウラー「エンタープライズ アプリケーションアーキテクチャパ
ターン」、翔泳社、2005年。

More Related Content

What's hot

オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
 
オブジェクト指向とは何ですか?
オブジェクト指向とは何ですか?オブジェクト指向とは何ですか?
オブジェクト指向とは何ですか?
sumim
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
 
オブジェクト指向最強
オブジェクト指向最強オブジェクト指向最強
オブジェクト指向最強haganemetal
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
TATSUYA HAYAMIZU
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
増田 亨
 
FiNC DDD第一回勉強会
FiNC DDD第一回勉強会FiNC DDD第一回勉強会
FiNC DDD第一回勉強会
裕紀 重村
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
オブジェクト指向入門1
オブジェクト指向入門1オブジェクト指向入門1
オブジェクト指向入門1
Kenta Hattori
 
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
Satoru Kodaira
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
 
第1回 モデリング勉強会
第1回 モデリング勉強会第1回 モデリング勉強会
第1回 モデリング勉強会
hakoika-itwg
 
アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)
Shoichi Matsuda
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
 

What's hot (16)

オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
オブジェクト指向とは何ですか?
オブジェクト指向とは何ですか?オブジェクト指向とは何ですか?
オブジェクト指向とは何ですか?
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
オブジェクト指向最強
オブジェクト指向最強オブジェクト指向最強
オブジェクト指向最強
 
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1  ドメイン駆動設計の基本を理解する3週連続DDDその1  ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
FiNC DDD第一回勉強会
FiNC DDD第一回勉強会FiNC DDD第一回勉強会
FiNC DDD第一回勉強会
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
オブジェクト指向入門1
オブジェクト指向入門1オブジェクト指向入門1
オブジェクト指向入門1
 
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
ジーノ先生の文系的オブジェクト指向(1) - ジーノ誕生
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
第1回 モデリング勉強会
第1回 モデリング勉強会第1回 モデリング勉強会
第1回 モデリング勉強会
 
アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)アプリでもオブジェクト指向エクササイズ(Potatotips#3)
アプリでもオブジェクト指向エクササイズ(Potatotips#3)
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 

Similar to 意図を表現するプログラミング

ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界Atsuhiro Kubo
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
 
20151024 Azureデータストア概要
20151024 Azureデータストア概要20151024 Azureデータストア概要
20151024 Azureデータストア概要
Keiji Kamebuchi
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
 
Movable Type 6 Overview - New York Perl Mongers Tech Talk
Movable Type 6 Overview - New York Perl Mongers Tech TalkMovable Type 6 Overview - New York Perl Mongers Tech Talk
Movable Type 6 Overview - New York Perl Mongers Tech TalkYuji Takayama
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう Shuhei Iitsuka
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrino
Takeshi Yabe
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
Shinya Okano
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03Daiki Maekawa
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
アシアル株式会社
 
広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています
Yoshitake Takata
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
Getting started MySQL as Document Data Store
Getting started MySQL as Document Data StoreGetting started MySQL as Document Data Store
Getting started MySQL as Document Data Store
Chihiro Ito
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
ichikaway
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
泰 増田
 

Similar to 意図を表現するプログラミング (20)

ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界ジェネレーティブプログラミングの世界
ジェネレーティブプログラミングの世界
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
 
20151024 Azureデータストア概要
20151024 Azureデータストア概要20151024 Azureデータストア概要
20151024 Azureデータストア概要
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Movable Type 6 Overview - New York Perl Mongers Tech Talk
Movable Type 6 Overview - New York Perl Mongers Tech TalkMovable Type 6 Overview - New York Perl Mongers Tech Talk
Movable Type 6 Overview - New York Perl Mongers Tech Talk
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrino
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Lithium Labo #1
Lithium Labo #1Lithium Labo #1
Lithium Labo #1
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
 
広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています広島IT勉強会カレンダー(仮)はRubyを使っています
広島IT勉強会カレンダー(仮)はRubyを使っています
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
Getting started MySQL as Document Data Store
Getting started MySQL as Document Data StoreGetting started MySQL as Document Data Store
Getting started MySQL as Document Data Store
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 

More from Atsuhiro Kubo

MPD Osaka Extra 5
MPD Osaka Extra 5MPD Osaka Extra 5
MPD Osaka Extra 5
Atsuhiro Kubo
 
Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1
Atsuhiro Kubo
 
Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2
Atsuhiro Kubo
 
The Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applicationsThe Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applications
Atsuhiro Kubo
 
Lean Architecture / DCI Evening Report
Lean Architecture / DCI Evening ReportLean Architecture / DCI Evening Report
Lean Architecture / DCI Evening Report
Atsuhiro Kubo
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitAtsuhiro Kubo
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
Atsuhiro Kubo
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストAtsuhiro Kubo
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
Atsuhiro Kubo
 
Piece Framework 2.0 Background
Piece Framework 2.0 BackgroundPiece Framework 2.0 Background
Piece Framework 2.0 Background
Atsuhiro Kubo
 

More from Atsuhiro Kubo (14)

MPD Osaka Extra 5
MPD Osaka Extra 5MPD Osaka Extra 5
MPD Osaka Extra 5
 
Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1Enaction, Not Design on MPD Osaka Extra 1
Enaction, Not Design on MPD Osaka Extra 1
 
Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2Enaction, Not Design on Symfony Meetup Kansai 2
Enaction, Not Design on Symfony Meetup Kansai 2
 
The Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applicationsThe Birth of FormalBears - A new META for BEAR.Sunday applications
The Birth of FormalBears - A new META for BEAR.Sunday applications
 
Lean Architecture / DCI Evening Report
Lean Architecture / DCI Evening ReportLean Architecture / DCI Evening Report
Lean Architecture / DCI Evening Report
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnit
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
Eclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテストEclipse PDT + MakeGood による PHP コードのテスト
Eclipse PDT + MakeGood による PHP コードのテスト
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
 
Piece Framework 2.0 Background
Piece Framework 2.0 BackgroundPiece Framework 2.0 Background
Piece Framework 2.0 Background
 

Recently uploaded

【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 

Recently uploaded (10)

【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 

意図を表現するプログラミング

  • 2. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 久保敦啓 (KUBO Atsuhiro) ● Twitter @iteman ● GitHub https://github.com/iteman ● PHPメンターズ ● Piece Framework ● 日本Symfonyユーザー会 ● 関西IT勉強宴会
  • 3. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. PHPメンターズ ● PHPプログラマーを対象とするサービス – トレーニング、技術サポート、メンタリング – プログラミング道場 ● メンター – 久保敦啓 @iteman – 後藤秀宣 @hidenorigoto
  • 4. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. PHPメンターズ ● Twitter @phpmentors ● GitHub https://github.com/phpmentors-jp ● Webサイト・ブログ http://phpmentors.jp/
  • 5. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. Piece Framework ● PHPフレームワーク、ツール – MakeGood – Stagehand_TestRunner ● オープンソースソフトウェア ● Piece Project
  • 6. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. Piece Framework ● Twitter @piece_framework ● GitHub https://github.com/piece ● Webサイト http://piece-framework.com/
  • 7. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 過去の活動を振り返る
  • 8. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2003年 ● 2002-12-27 PHP 4.3.0 ● 2003-02-29 Net_UserAgent_Mobile 0.1 – 携帯キャリア判別ライブラリ – PEAR http://pear.php.net/
  • 9. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. Net_UserAgent_Mobile <?php … require_once 'Net/UserAgent/Mobile.php'; … $mobile = &Net_UserAgent_Mobile::factory(); if ($mobile->isDoCoMo()) { … } elseif ($mobile->isSoftBank()) { …
  • 10. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2004年 ● 7月 第1回PHP関西セミナー – 久保によるMojavi 2 + Smartyの解説 ● 7月 PHP 5.0.0 – Zend Engine 2、新しいオブジェクトモデル
  • 11. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2005年 ● 7月 PHP 4.4.0 ● 11月 PHP 5.1.0 – PDO
  • 12. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2006年 ● 1月 Maple祭り – 高橋邦彦さん @kunit さんによるWebアプリケー ションフレームワークMapleの勉強会 ● 4月 Stagehand_TestRunner 0.3.0 – コマンドラインテストランナー ● 8月 Piece_Unity 0.6.0 – Webアプリケーションフレームワーク
  • 13. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2006年 ● 10月 第3回Piece Framework勉強会 – 久保「Piece Frameworkの概要」 ● 11月 PHP 5.2.0 ● 11月 関西オープンソース2006 – 企業へのOSSの導入・活用、Linux、Samba – 久保「Piece Framework を体験する」
  • 14. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. ページフロー定義(Eclipse)
  • 15. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. ページフロー定義(YAML) ... viewState: - name: Input view: Input activity: method: onInput transition: - event: next nextState: Validation ...
  • 16. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2007年 ● 3月 Piece_ORM 0.1.0 – SQLマッパー ● 3月 第8回PHP関西セミナー – 久保「Piece_ORMの概要」 ● 7月 オープンソースカンファレンス2007 Kansai – 仮想化技術(Xen)、MySQL、Ruby on Rails – 久保「Piece FrameworkによるセキュアなWebアプリケーション の開発」
  • 17. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2007年 ● 11月 関西オープンソース2007 – MySQL、Ruby – 久保「Piece Framework入門」 ● 12月 Piece Network 1 – 高木正弘さん「PHPマニュアルの読み方」 – 関山隆介さん「SPL入門」
  • 18. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. SQLマッピング(Piece_ORM) ... method: - name: findById query: SELECT * FROM user WHERE id = $id ...
  • 19. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2008年 ● 8月 PHP 4.4.9 – PHP 4の最後のリリース ● 11月 関西オープンソース2008 – 伊藤直也さん講演会、Memcached、関西Ruby会 議、チケット駆動開発 – 高橋邦彦さん「設計勉強会@関西」 – 久保「Piece Frameworkの概要」
  • 20. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2009年 ● 9月 PHP 5.3.0 – 名前空間、遅延静的束縛、goto、無名関数(クロージャ) ● 11月 関西オープンソース2009 – OpenSocial、Ruby、アジャイル、スマートフォン – 久保、松藤「Eclipse + PHP + TDD = MakeGood!」 ● 11月 MakeGood 0.1.0 – Eclipse PDT向けテストランナー
  • 21. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. MakeGood
  • 22. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2010年 ● 2月 XP祭り関西2010 – 久保「Tools for Doing Test Driven Development in PHP」 ● 3月 オープンソースカンファレンス2010 Kansai@Kobe ● 4月 オープンソースカンファレンス2010 Kansai@Kyoto – WordPress、concrete5、Drupal、EC-CUBE、Magento – HTML5、クラウド関連 – 久保、松藤「Eclipse PDT + MakeGood による PHP コードのテスト」
  • 23. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2010年 ● 8月 第1回関西IT勉強宴会 – 久保「GitHubの使い方」 ● 11月 関西オープンソース2010 – Ruby、スマートフォン、HTML5 – 渡辺幸三さん「刮目せよ!モデリング技術がもたらすオープ ンソース業務システム」 – 久保「フレームワーク・ツールによるPHPプログラムの自動テ スト」
  • 24. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2011年 ● 7月 第1回関西PHP勉強会 – テーマ「PHP におけるテスト」 – 久保「継続的テスト入門」 ● 10月 PHP Matsuri 2011 – 久保「PHPUnitでテストを始めよう」 ● 11月 関西オープンソース2011 – 東日本大震災、クラウド、Ruby、テスト駆動開発 – 久保「継続的テストランナーMakeGood入門」
  • 25. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 2012年 ● 3月 PHP 5.4.0 – トレイト、ビルトインウェブサーバー ● 4月 第3回関西PHP勉強会 – テーマ「Symfony2マスターが直接手ほどき!アプ リケーション開発実況観戦」 – 久保「Symfonyによるソフトウェア開発入門」
  • 26. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 意図 Intention
  • 27. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. “意図的な記述は、何が必要なのかを直接かつ 明確に示し、余計ながらくたや不要な実装の 詳細を避けます。これらは、理解しやすさ、 分析しやすさ、修正しやすさ、保守のしやす さなどの、良いコードが持つすべての属性を 備えています。ドメインに固有な表記法によ り、意図性を達成します。“ — ジェネレーティブプログラミング
  • 28. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. <?php $link = mysql_connect('localhost', 'myuser', 'mypassword'); mysql_select_db('blog_db', $link); $result = mysql_query('SELECT id, title FROM post', $link); ?> <html> ... <ul> <?php while ($row = mysql_fetch_assoc($result)): ?> <li> <a href="/show.php?id=<?php echo $row['id'] ?>"> <?php echo $row['title'] ?> </a> </li> <?php endwhile; ?> ... </html> <?php mysql_close($link);
  • 29. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 「もつれた」意図 ● (暗黙の)ルーティング ● データベースアクセス ● ユーザーインターフェイス
  • 30. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. <?php ... class BlogController extends Controller { public function listAction() { $posts = $this->get('doctrine')->getManager() ->createQuery('SELECT p FROM AcmeBlogBundle:Post p') ->execute(); return $this->render( 'AcmeBlogBundle:Blog:list.html.php', array('posts' => $posts) ); } ...
  • 31. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. blog_list: path: /blog defaults: { _controller: AcmeBlogBundle:Blog:list } blog_show: path: /blog/show/{id} defaults: { _controller: AcmeBlogBundle:Blog:show }
  • 32. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. <?php require_once __DIR__.'/../app/bootstrap.php'; require_once __DIR__.'/../app/AppKernel.php'; use SymfonyComponentHttpFoundationRequest; $kernel = new AppKernel('prod', false); $kernel->handle(Request::createFromGlobals())->send();
  • 33. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. {% extends "::layout.html.twig" %} {% block title %}List of Posts{% endblock %} {% block body %} <h1>List of Posts</h1> <ul> {% for post in posts %} <li> <a href="{{ path('blog_show', {'id': post.id}) }}"> {{ post.title }} </a> </li> {% endfor %} </ul> {% endblock %}
  • 34. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. モデルビューコントローラー コントローラー モデル ビュー
  • 35. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. レイヤー化アーキテクチャー ドメイン アプリケーション ユーザーインターフェイス インフラストラクチャ
  • 36. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 「もつれた」意図をほぐす道具 ● アーキテクチャーパターン ● デザインパターン ● 各種プログラミングパラダイム ● プログラミング言語、フレームワーク、ライブ ラリ ● ドメイン特化言語
  • 37. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. グラフィカルDSLによる意図の表現
  • 38. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. テキストDSLによる意図の表現 ... viewState: - name: Input view: Input activity: method: onInput transition: - event: next nextState: Validation ...
  • 39. Copyright (c) 2013 KUBO Atsuhiro <kubo@iteman.jp>, All rights reserved. 参考 ● Symfony2 versus Flat PHP (current) - Symfony, http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html ● Wikipedia contributors. "PHP." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 29 May. 2013. Web. 31 May. 2013. ● エリック・エヴァンス「エリック・エヴァンスのドメイン駆動設計」、翔泳社、 2011年。 ● クシシュトフ・チャルネッキ、ウールリシュ・W・アイセンアッカ「ジェネレー ティブプログラミング」、翔泳社、2008年。 ● マーチン・ファウラー「エンタープライズ アプリケーションアーキテクチャパ ターン」、翔泳社、2005年。