SlideShare a Scribd company logo
1 of 50
Download to read offline
メタプログラミングRuby

      LLPlanets
      2011-8-20
        ⾓征典
   kdmsnr@gmail.com



          1/50
⾓征典-kdmsnr




      2/50
MF'sbliki




    3/50
Rubyにおける
メタプログラミングとは?



     4/50
内部DSLを
内部DSL
 書くこと
  である
  5/50
プログラミング⾔語Ruby
8章リフレクションとメタプログラミング
 豊富なリフレクション
    リフレクションAPIを使い、
 メタプログラミングを実現する。
 メタプログラミング
 それは、DSLを書く
     DSLを書くという発想と
 結び付いている。


         6/50
DSLの種類
   byMartinFowler
外部DSL(⾔語外DSL)
内部DSL(⾔語内DSL)
⾔語ワークベンチ→ググって


          7/50
外部DSLの例
    CucumberのGherkin記法
フィーチャ: プロジェクトの閲覧
 ユーザとして、
 プロジェクトを閲覧したい。
 それは、チケットを割り当てるためだ。

 シナリオ: すべてのプロジェクトを⼀覧表⽰する
  前提 TextMateプロジェクトがある
  かつ ホームページを表⽰している
  もし TextMateリンクをクリックする
  ならば TextMateプロジェクトページを表⽰する

              8/50
内部DSLの例
         tDiaryのテストコード
feature '⽇記の追記' do
  scenario '⽇付を指定して新しく⽇記を書く' do
    append_default_diary('2001-04-23')
    visit '/'
    click_link 2001年04⽉23⽇
    within('div.day div.section') {
      page.should have_content
        とりあえず⾃前の環境では +
        ちゃんと動いているが、 +
        きっと⽳がいっぱいあるに違いない:-P}


                   9/50
DSLの再来

  DSLに対する関⼼は急激に⾼まって
きています。これはRubyコミュニティ
          Rubyコミュニティ
のおかげと⾔ってもよいでしょう。
のおかげ
―『プログラミングScala』



         10/50
おそらくRails
       Railsが発端
        設定よりも規約(CoC)
# usersテーブルとマッピング
class User  ActiveRecord::Base
end




                    11/50
DSLの⽬的
forプログラマ
  ⽣産性・理解度・表現⼒の向上

forプログラマ+ドメイン専⾨家
            ドメイン専⾨家
  コミュニケーションの円滑化
  コミュニケーション



            12/50
DSLにあると嬉しい
  byGlennVanderburg
⽂脈が記述できる
⽂章のように記述できる
単位が記述できる
使える語彙が豊富である
階層データが記述できる
          13/50
新しい語彙
   語彙をうまく導⼊
語彙の増加→新しい視点
語彙         視点
  サピア=ウォーフの仮説
  例)BDD(振る舞い駆動開発)

「名前重要」⽂化


        14/50
新しい⽂法
   ⽂法は導⼊しない

  ⻑年拒否している機能 があります。
    拒否している機能
それはマクロ,特にLispスタイルのマ
         Lispスタイルのマ
クロです。
クロ
―『まつもとゆきひろコードの世界』



         15/50
メタプログラミング技法の
  分類・概要・応⽤例



     16/50
RubyでDSLを作る⽅針
⾔葉を⾒つける
⽂章のように書いていく
Rubyの⽂法に合わせる



       17/50
コレクションがあってシャッフルし
 たいと思ったら
    思ったら、shuffleと書いて、そ
 れで動かなきゃいけない
    動かなきゃいけないんですよ。
 ―yugui

http://www.atmarkit.co.jp/news/200907/24/
ruby2.html




                    18/50
Rubyの基本的な道具
オブジェクトと変数
メソッドとブロック
制御構⽂(if,unless,while,...)



            19/50
メソッドチェイン
   a.k.a.流れるようなインタフェース
3.weeks.ago.saturday?

(0..9).map{|i| i + 1 }.reduce(:+)

User.where(:hobby = Ruby).
  order(:nickname).limit(10).offset(20)



                    20/50
カッコの省略
# メソッド呼び出し、引数のハッシュリテラル
establish_connection :adapter = sqlite,
                     :database = dbfile

# ブロック(do ... end)
group :test do gem shoulda end

# if ⽂
if true then \(^o^)/ else '/(^o^)\' end



                    21/50
オープンクラス
3.hours.from_now # 今から3時間後を求めたい

# あらかじめ以下を定義
class Fixnum
  def hours
    self * 3600
  end

  def from_now
    Time.now + self
  end
end

                      22/50
クラスマクロ
    単なるクラスメソッドの呼び出し
class Book  ActiveRecord::Base
  has_many   :releases
  belongs_to :publisher
  validates_presence_of :title, :author
end




                    23/50
⼤クラス主義とMix-in
module ActiveRecord
  class Base
  # ...
  Base.class_eval do
      include ActiveRecord::Persistence
      extend ActiveModel::Naming
      extend QueryCache::ClassMethods
      extend ActiveSupport::Benchmarkable
      extend ActiveSupport::DescendantsTracker

      include ActiveModel::Conversion
      include Validations



                    24/50
クラスもオブジェクト
# オブジェクトIDを持っている
Fixnum.object_id # = 2156200840

# 任意のモジュールで機能拡張できる
target.extend ActiveModel::Naming
# 変数に代⼊できる
fxn = Fixnum
fxn.name         # = Fixnum



                    25/50
戻り値がクラスのメソッド
        a.k.a.ミミックメソッド
# Camping by _why
class Index  R /     # = Here
  def get
    render :index
  end
  # ...



                      26/50
演算⼦もメソッド
require 'open-uri'
require 'hpricot'
doc = Hpricot open http://www.ruby-lang.org/ja

# 「/」で要素を検索している
doc / :div.post / :h3 # = 実⾏結果




                    27/50
まとまったタスクの記述
             Chefのレシピ
directory /tmp/monkey do
  owner root
  group root
  mode 0755
  action :create
end




                    28/50
ブロック付メソッド呼出し
recipe = Recipe.new(:TKG)
recipe.step ⽣卵に醤油を⼊れよくかき混ぜる。
recipe.step 箸で茶碗の飯に適当な窪みを作る。
recipe.step 卵を窪みに流し込み、飯と混ぜる。

# 上のコードを意味的にまとめると
Recipe.create(:TKG) do
  step ⽣卵に醤油を⼊れよくかき混ぜる。
  step 箸で茶碗の飯に適当な窪みを作る。
  step 卵を窪みに流し込み、飯と混ぜる。
end


              29/50
ブロックの「⽂脈」で評価
             instance_eval
class Recipe
  def self.create block
    obj = self.new
    obj.instance_eval block
    obj
  end
  # ...



                    30/50
eval族
instance_eval,class_eval
instance_exec,class_exec
eval



              31/50
method_missing
        a.k.a.ゴーストメソッド
require 'ostruct'
ost = OpenStruct.new
ost.iofjklffhdlsakf = 'めちゃくちゃなメソッド'

# 呼び出し
ost.iofjklffhdlsakf # = 実⾏結果



                  32/50
もっとメタプログラミング



     33/50
ennnnnd
      http://redmine.ruby-lang.org/issues/5054


module MyModule
  class MyClass
    def my_method
      10.times do
        if rand  0.5
          p :small
        ennnnnd # = Here


                        34/50
各種ライブラリ
ParseTree(1.8only)
Rubinius(処理系),RubyParser
Ripper(1.9標準添付)
Racc(パーザジェネレータ)
rparsec(パーザコンビネータ)

           35/50
Webフレームワークの
 メタプログラミング



     36/50
http://lokka.org/



       37/50
HTTPメソッドとメソッド
get '/admin/posts' do
  # ...
end

put '/admin/posts/:id' do |id|
  # ...
end

delete '/admin/posts/:id' do |id|
  # ...
end


                    38/50
HTTPヘッダとメソッド
get 'index.atom'
  # ...
  content_type 'application/atom+xml',
               :charset = 'utf-8'
  # ...
end




                    39/50
Rubyのバージョンの調整
             オープンクラス
unless String.public_method_defined?
                           (:encoding)
  class String
    def encoding(encoding)
      self
    end
  end
end


                    40/50
haml
         HTML作成⽤の外部DSL
- if locale == settings.default_locale
  - page = Page('home') || Page.new
- else
  - page = Page(home-#{locale})
.section
  .header
    %h2= page.title
  .body= page.body


                    41/50
RSpec
          テスト⽤の内部DSL
describe App do
  context Access pages do
    it should show index do
      get '/'
      last_response.body.should 
        match('Test Site')
    end
  end
end


                    42/50
短縮メソッドの追加
           特異メソッドの利⽤
def Page(id)
  Page.get_by_fuzzy_slug(id.to_s)
end

Page(home)




                    43/50
プラグインの追加
          フックメソッドの利⽤
module Hoptoad
  def self.registered(app)
    app.use HoptoadNotifier::Rack
    # ...
  end




                    44/50
eval
@entry = Entry(id)
type = @entry.class.name.downcase.to_sym
eval @#{type} = @entry




                  45/50
肯定派?
否定派?



 46/50
何も違わん。違うと思うのはお主の
  何も違わん
⼼の中だけじゃ。
―マスター・ヨーダ




        47/50
Rubyのコードは信頼できないって
? それはコードじゃなくて、コーダー
                コーダー
を信頼してないからだろ?
を信頼してない
―DaveThomas




         48/50
敢えて⾔うなら
DSL作るの難しい!
英語っぽく書けても⽇本⼈はあま
り嬉しくない
DSLを作るならもっと厳密なチェ
ックやエラーメッセージが欲しいか
も

       49/50
Paolo Perrotta(著), ⾓ 征典 (翻訳)
http://www.amazon.co.jp/dp/4048687158
                50/50

More Related Content

What's hot

今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発Kazunori Hamamoto
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説do_aki
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.specKent Ohashi
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるKoichi Sakata
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)Rui Hirokawa
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方do_aki
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用までyoshihikoozaki5
 
Node.js Error & Debug Leveling
Node.js Error & Debug LevelingNode.js Error & Debug Leveling
Node.js Error & Debug Levelingkumatch kumatch
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoyakenjis
 
Clojureで作る"simple"なDSL
Clojureで作る"simple"なDSLClojureで作る"simple"なDSL
Clojureで作る"simple"なDSLKent Ohashi
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼうDaiki Ichinose
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化Lintaro Ina
 

What's hot (20)

今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
20190809
2019080920190809
20190809
 
From JS To CLJS
From JS To CLJSFrom JS To CLJS
From JS To CLJS
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
Everyday Life with clojure.spec
Everyday Life with clojure.specEveryday Life with clojure.spec
Everyday Life with clojure.spec
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用までTemplate Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
 
Node.js Error & Debug Leveling
Node.js Error & Debug LevelingNode.js Error & Debug Leveling
Node.js Error & Debug Leveling
 
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 
Clojureで作る"simple"なDSL
Clojureで作る"simple"なDSLClojureで作る"simple"なDSL
Clojureで作る"simple"なDSL
 
CMSとPerlで遊ぼう
CMSとPerlで遊ぼうCMSとPerlで遊ぼう
CMSとPerlで遊ぼう
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 

Similar to 20110820 metaprogramming

メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRubyemasaka
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門Yasuko Ohba
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)Masanori Machii
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1kenjis
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma次世代DaoフレームワークDoma
次世代DaoフレームワークDomaToshihiro Nakamura
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメKazuaki Takase
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDAkio Ishida
 
ebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superKaito Minatoya
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 

Similar to 20110820 metaprogramming (20)

メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
 
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDDphpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
 
Tdd
TddTdd
Tdd
 
ebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superebisu.rb #19 超実践 super
ebisu.rb #19 超実践 super
 
Lithium Labo #1
Lithium Labo #1Lithium Labo #1
Lithium Labo #1
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 

More from Masanori Kado

優れた研究提案書の書き方
優れた研究提案書の書き方優れた研究提案書の書き方
優れた研究提案書の書き方Masanori Kado
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方Masanori Kado
 
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestTokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestMasanori Kado
 
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」Masanori Kado
 
Tokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & PrototypeTokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & PrototypeMasanori Kado
 
Tokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team BuildingTokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team BuildingMasanori Kado
 
プロトタイピングとユーザーテスト
プロトタイピングとユーザーテストプロトタイピングとユーザーテスト
プロトタイピングとユーザーテストMasanori Kado
 
実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)Masanori Kado
 
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)Masanori Kado
 
データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)Masanori Kado
 
データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)Masanori Kado
 
20160924 edp-b teambuilding
20160924 edp-b teambuilding20160924 edp-b teambuilding
20160924 edp-b teambuildingMasanori Kado
 
中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室Masanori Kado
 
hacku-titech-2016-briefing
hacku-titech-2016-briefinghacku-titech-2016-briefing
hacku-titech-2016-briefingMasanori Kado
 
The Lego Scrum Awakens
The Lego Scrum AwakensThe Lego Scrum Awakens
The Lego Scrum AwakensMasanori Kado
 
デザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイクデザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイクMasanori Kado
 
アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学Masanori Kado
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案Masanori Kado
 
改善の型 コーチングの型
改善の型 コーチングの型改善の型 コーチングの型
改善の型 コーチングの型Masanori Kado
 

More from Masanori Kado (20)

優れた研究提案書の書き方
優れた研究提案書の書き方優れた研究提案書の書き方
優れた研究提案書の書き方
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方
 
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and TestTokyo-Tech 2017 EDP-A #3 Prototype and Test
Tokyo-Tech 2017 EDP-A #3 Prototype and Test
 
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
2017-07-19 エンタープライズアジャイル勉強会「リーンエンタープライズ」
 
Tokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & PrototypeTokyo-Tech 2017 EDP-A #2 Ideate & Prototype
Tokyo-Tech 2017 EDP-A #2 Ideate & Prototype
 
Tokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team BuildingTokyo-Tech 2017 EDP-A #1 Team Building
Tokyo-Tech 2017 EDP-A #1 Team Building
 
プロトタイピングとユーザーテスト
プロトタイピングとユーザーテストプロトタイピングとユーザーテスト
プロトタイピングとユーザーテスト
 
実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)
 
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
データからインサイト そして、アイデアの発想へ(CJM/POV/HMW)
 
データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)データからインサイト そして、アイデアの発想へ(KJ法)
データからインサイト そして、アイデアの発想へ(KJ法)
 
データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)データからインサイト そして、アイデアの発想へ(タスク管理)
データからインサイト そして、アイデアの発想へ(タスク管理)
 
20160924 edp-b teambuilding
20160924 edp-b teambuilding20160924 edp-b teambuilding
20160924 edp-b teambuilding
 
中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室中高生のための夏休みプログラミング教室
中高生のための夏休みプログラミング教室
 
hacku-titech-2016-briefing
hacku-titech-2016-briefinghacku-titech-2016-briefing
hacku-titech-2016-briefing
 
ideathon 20160325
ideathon 20160325ideathon 20160325
ideathon 20160325
 
The Lego Scrum Awakens
The Lego Scrum AwakensThe Lego Scrum Awakens
The Lego Scrum Awakens
 
デザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイクデザイン思考のためのアイスブレイク
デザイン思考のためのアイスブレイク
 
アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学アジャイル開発のススメ@香川大学
アジャイル開発のススメ@香川大学
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
改善の型 コーチングの型
改善の型 コーチングの型改善の型 コーチングの型
改善の型 コーチングの型
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (10)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

20110820 metaprogramming