SlideShare ist ein Scribd-Unternehmen logo
1 von 116
Downloaden Sie, um offline zu lesen
DSLについて語るとき
に僕の語ること
@Sixeight
第61回 Ruby/Rails勉強会@関西
まとめ
• いまさら感があふれる話
• DSLで効率UP
• DSLはこわくない
• やりすぎると駄目
@Sixeight
https://github.com/Sixeight
@tomohi_ro
https://twitter.com/tomohi_ro
西村 友裕
にしむら ともひろ
その他
• Happy Elements株式会社 (京都)
• Rails (Ruby) / Unity (C#)
• 鴨川シャボン玉の会
• Vim → Atom
• Fragment <3
その他
• Happy Elements株式会社 (京都)
• Rails (Ruby) / Unity (C#)
• 鴨川シャボン玉の会
• Vim → Atom
• Fragment <3
Instagram
Mextures
Tangsten
&
Fragment LoryStripes
http://pixiteapps.com/
つづきはブログで
http://sixeight.hatenablog.com/
[壊しました] タグで土日以外毎日更新
本題
DSL
Domain
Specific
Language
–ウィキペディア
ドメイン固有言語(ドメインこゆうげんご、
英: domain-specific language、DSL)
とは、特定のタスク向けに設計されたコンピュー
タ言語を意味する。
例えば Rake
desc "Install binaries"
task :install do
cp FileList["bin/*"], "/usr/local/bin"
end
利点
• もっとも簡単な方法で記述できる
• 出来ることが限定されているがゆえに安全
• コード自体がドキュメントとしての役割を
果たすことが多い
特定の問題に特化しているから、
• • • • • • • • • • • • • •
欠点
• 学習コストが高い
• 応用が効かない
• 問題の範囲を決めるのが難しく、特化でき
ないことが多い
特定の問題に特化しているから、
• • • • • • • • • • • • • •
外部?内部?
外部DSL
インタプリタを作るようなもの
全てが自作のDIY精神にあふれるDSL
内部DSL
別の言語の構文を使って、
なんか別の言語っぽい感じにする
たとえば Ruby で
内部DSLを作れば、
べんりな構文やライ
ブラリが使い放題
実例
ActiveAdmin
なんかいい感じで管理画面作ってくれるやつ
ガチャを作るDSL
アルバイトでも追加できるように最低限しか書けない
ビジネスへの影響が大きいため内部を隠蔽するのは重要
APIを定義するDSL
サーバー(Ruby)側、クライアント(C#)側、ドキュメントを自動生
成する。通信不要のモックも作成し、バージョンにも対応。べんり。
じ、自作…?
なぜ作るのか
• DSLにするとテンションが上がるから
• 勉強会で自慢できるから
• そこに問題がある(ry
利点を思い出そう
利点
• もっとも簡単な方法で記述できる
• 出来ることが限定されているがゆえに安全
• コード自体がドキュメントとしての役割を
果たすことが多い
特定の問題に特化しているから、
• • • • • • • • • • • • • •
なぜ作るのか
• めんどうな業務を単純化 (簡単)
• 誰がやっても同じ結果 (安全)
• 読みやすく説明が不要 (ドキュメント)
めんどうな業務を
単純化
新しいガチャを追加するのに Migration ファイルを作って
データを追加して、Controller と View をコピペして…
設定ファイル(DSL)を記述
簡単
誰がやっても同じ結果
アルバイトにガチャの追加を頼んだら、フッターのリンクが以前の
ガチャのものになっていてレアの詳細を見ることが出来なかった
設定ファイル(DSL)は本当に必要なことしか記述しなく
てよいので、間違えにくいし、間違いに気づきやすい
安全
誰がやっても同じ結果
アルバイトにガチャの追加を頼んだら、フッターのリンクが以前の
ガチャのものになっていてレアの詳細を見ることが出来なかった
設定ファイル(DSL)は本当に必要なことしか記述しなく
てよいので、間違えにくいし、間違いに気づきやすい
安全
レビューしようとい
うのはまた別の問題
読みやすく説明が不要
新人の人にガチャの追加方法を説明していたらお昼ごはんの時間
になっていて、戻ってきたらもう一度教えてほしいと言われる
設定ファイル(DSL)を読めばだいたい分かる
コピペでもOK
ドキュメント
なぜ今さら
啓蒙するのか
Ruby が仕事で使われるよう
になって久しい今だからこそ
DSLで業務を効率化しよう
今だからこそ…?
• 仕事で Ruby を使うことが普通になった
• 情報も参考になるコードもあふれている
• 業界をリード(笑)するあの上司にも Ruby
で DSL で DO すると言えば通りやすそう
発表内容に困って主張を捏
造した。今は反省している。
まとめ
• いまさら感があふれる話
• DSLで効率UP
• DSLはこわくない
• やりすぎると駄目
先週も同じようなコード
書きませんでしたか
それDSLでできるよ
注意
例はめっちゃ適当です
毎日のように似たような
メソッドを書いている
宣言系DSL
そんなあなたに、
つらい現実
人間のすることじゃない
べんりな真実
そう、DSLならね
宣言系DSL
毎日同じ手順を
書いている
操作系DSL
そんなあなたに、
つらい現実
エラーが起きる場所すべてにコピペ
べんりな真実
そう、DSLならね
操作系DSL
クラスのインスタンスを組
み立てるのに苦労している
設定系DSL
そんなあなたに、
つらい現実
めんどうだし読みにくい
べんりな真実
そう、DSLならね
設定系DSL
routes.rb 編集して、
Controller 作って…
定義系DSL
そんなあなたに、
つらい現実
あれをやってこれをやって
べんりな真実
そう、DSLならね
定義系DSL
べんり
まとめ
• いまさら感があふれる話
• DSLで効率UP
• DSLはこわくない
• やりすぎると駄目
でもお高いんでしょ
開発コストが
🙏
作ってみましょう
宣言系DSL
宣言系DSL
= ただのクラスメソッド
オレオレattr_accessor
車輪の再発明から得られる知見もある
やりたいことは
インスタンス変数 を
get/set するメソッドを
いい感じで定義してくれる
my_attr_accessor
というクラスメソッドを
定義すること
突然の黒魔術/
逃げちゃ駄目だ、逃げちゃ駄目だ、逃げちゃ駄目だ
define_method(name, method)
define_method(name) { … }
name という名前のメソッドを定義する
突然の黒魔術/
逃げちゃ駄目だ、逃げちゃ駄目だ
instance_variable_get(var)
instance_variable_set(var, value)
var という名前のインスタンス変数を get/set
名前は @hoge である必要がある
突然の黒魔術/
逃げちゃ駄目だ
宣言系ではけっこう使う
べんり
操作系DSL
操作系DSL
= メソッド切り出し
なんかふつう
ただのメソッド呼び出しなのに専用の命令に見える
名前重要
見ただけで分かるメソッド名にしよう
このへん
設定系DSL
設定系DSL
= 代入
config.hoge = piyo
よく見るやつ
いまからこのクラスを設定するんだ
というのが良く伝わってよい
たぶんこんな感じ
.() がきもかわいい
定義系DSL
定義系DSL
= instance_eval
instance_eval {¦obj¦ … }
ブロック内の self をレシーバーに置き換える
(ざっくり言うと)
家にいる猫を管理したい
いい例が浮かばなかった
適当な実装
でもだいたいこんな感じで書きます
このCatモデルを作ります
ブロックの中で呼べるメソッドは
Cat のインスタンスメソッド
ここが本体
cat.instance_eval が全て
ファイルから読み込めばそれっぽい
文字列なので instance_eval する…
こういうのはどうするの
method_missing で…
ホワイトリストを作って undef_method しておくと捗る
🙇
僕の場合
手順
• 問題をみつける
• 直感的に書けるまで擬似コードを書く
• 擬似コード(受け入れテスト)が動くように
実装する
• ユニットテストを書く
テスト
• DSLがバグってたら目も当てられない
• 自分が安心するために書く
• 黒魔術的なコードを書くのでTDDは足かせ
• 完全に動作するDSLを受け入れテストとする
まとめ
• いまさら感があふれる話
• DSLで効率UP
• DSLはこわくない
• やりすぎると駄目
DSL作ってみたい
いますぐ作ろう!
ちょっと待って
欠点を思い出そう
欠点
• 学習コストが高い
• 応用が効かない
• 問題の範囲を決めるのが難しく、特化でき
ないことが多い
特定の問題に特化しているから、
• • • • • • • • • • • • • •
学習コストが高い
プロジェクトのここもDSL、あっちもDSL。
ここは Rails のままで書く、ここもDSLだったわ。
べんり機能が知っている人にしか使われない。
むしろ普通に書くことも困難でプロジェクト炎上。
応用が効かない
たくさんの社内DSLをマスターして社内では神と呼ばれ
て頼られているので、勘違いして転職してみた。
実は Rails はそんなに書けなかったので
ついていこうと必死になり過労死
問題の範囲があいまい
べんりそうなDSLを作った。こっちもDSLにできそう
なので作った。あっちも、そっちも、ここも作っとこう。
あっちとそっちのDSLの内容が微妙に被ってて
どちらに書けば良いのか分からない
何事も
やりすぎはよくない
まとめ
• いまさら感があふれる話
• DSLで効率UP
• DSLはこわくない
• やりすぎると駄目
なんだこれ
なんだこのオプション
知見の共有
• 宣言系は相当すじがよくないと破綻する
• よくわからん書き方が増えて混乱するだけ
• 定義系は名前重要
• 学習コストを下げるには驚き最小の法則
• ドキュメント必須
• DSLの仕様は書いた本人しか知らないと思え
まとめ
• いまだからこそ仕事でDSL
• DSLで業務を効率化
• DSLは簡単に作れる
• 用法用量をよく守りお使いください
DSLとして切り出せる問題を見つけたら勝ち
ありがとう
ございました

Weitere ähnliche Inhalte

Was ist angesagt?

僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!
Masato Noguchi
 
さわってみよう Couchbase Lite
さわってみよう Couchbase Liteさわってみよう Couchbase Lite
さわってみよう Couchbase Lite
ssd kfk
 

Was ist angesagt? (20)

僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!僕はどうしてもLibsassが使いたかったんだ!
僕はどうしてもLibsassが使いたかったんだ!
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
 
Rails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるRails+Markdownでなにかつくる
Rails+Markdownでなにかつくる
 
RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩RailsのRailから解放される始めの一歩
RailsのRailから解放される始めの一歩
 
RSpecしぐさ
RSpecしぐさRSpecしぐさ
RSpecしぐさ
 
Rubyビジネスセミナー大阪2015
Rubyビジネスセミナー大阪2015Rubyビジネスセミナー大阪2015
Rubyビジネスセミナー大阪2015
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
 
WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築WindowsユーザのためのRails環境構築
WindowsユーザのためのRails環境構築
 
使ってみたAssets系gemの紹介
使ってみたAssets系gemの紹介使ってみたAssets系gemの紹介
使ってみたAssets系gemの紹介
 
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフターSpring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 
第2回モヤLT_マニモト_なかおくん
第2回モヤLT_マニモト_なかおくん第2回モヤLT_マニモト_なかおくん
第2回モヤLT_マニモト_なかおくん
 
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tipsRiot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
さわってみよう Couchbase Lite
さわってみよう Couchbase Liteさわってみよう Couchbase Lite
さわってみよう Couchbase Lite
 
Ruby on Rails の特徴とそのエコシステム
Ruby on Rails の特徴とそのエコシステムRuby on Rails の特徴とそのエコシステム
Ruby on Rails の特徴とそのエコシステム
 
Yokohama.rb Kaja推薦
Yokohama.rb Kaja推薦Yokohama.rb Kaja推薦
Yokohama.rb Kaja推薦
 
RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
bootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのかbootsnapはどれくらい早くなるのか
bootsnapはどれくらい早くなるのか
 

Andere mochten auch

文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
Tomoharu ASAMI
 
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザインMMOGで考えるゲームデザイン
MMOGで考えるゲームデザイン
Katsumi Mizushima
 
Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要
nwrnet
 
マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。
剛 大島
 
【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方
nwrnet
 
収入と貯蓄の関係V1
収入と貯蓄の関係V1収入と貯蓄の関係V1
収入と貯蓄の関係V1
Shimizu Hitoshi
 

Andere mochten auch (20)

高品質ノベルゲーム開発基盤の提案
高品質ノベルゲーム開発基盤の提案高品質ノベルゲーム開発基盤の提案
高品質ノベルゲーム開発基盤の提案
 
ノベルゲーム動的演出の考え方
ノベルゲーム動的演出の考え方ノベルゲーム動的演出の考え方
ノベルゲーム動的演出の考え方
 
0006
00060006
0006
 
C# linq入門 意図編
C# linq入門 意図編C# linq入門 意図編
C# linq入門 意図編
 
SimpleModeler
SimpleModelerSimpleModeler
SimpleModeler
 
ORと経済学の「結婚」問題
ORと経済学の「結婚」問題ORと経済学の「結婚」問題
ORと経済学の「結婚」問題
 
Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発
 
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 
「サウンドノベル」のゲーム体験
「サウンドノベル」のゲーム体験「サウンドノベル」のゲーム体験
「サウンドノベル」のゲーム体験
 
MMOGで考えるゲームデザイン
MMOGで考えるゲームデザインMMOGで考えるゲームデザイン
MMOGで考えるゲームデザイン
 
Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要
 
バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用
 
マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。
 
モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-
 
【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方
 
Leadership
LeadershipLeadership
Leadership
 
プロの無職についての考察:序
プロの無職についての考察:序プロの無職についての考察:序
プロの無職についての考察:序
 
女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術
 
収入と貯蓄の関係V1
収入と貯蓄の関係V1収入と貯蓄の関係V1
収入と貯蓄の関係V1
 
(10)昇進管理
(10)昇進管理(10)昇進管理
(10)昇進管理
 

Ähnlich wie DSLについて語るときに僕の語ること

CodeIgniterでXMLを処理してみる
CodeIgniterでXMLを処理してみるCodeIgniterでXMLを処理してみる
CodeIgniterでXMLを処理してみる
智之 大野
 
my unite plugins
my unite pluginsmy unite plugins
my unite plugins
basyura
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
Koji SHIMADA
 

Ähnlich wie DSLについて語るときに僕の語ること (20)

CodeIgniterでXMLを処理してみる
CodeIgniterでXMLを処理してみるCodeIgniterでXMLを処理してみる
CodeIgniterでXMLを処理してみる
 
my unite plugins
my unite pluginsmy unite plugins
my unite plugins
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
Ruby StyleStatsの紹介
Ruby StyleStatsの紹介Ruby StyleStatsの紹介
Ruby StyleStatsの紹介
 
CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?CrystalでもRailsを使いたいですか?
CrystalでもRailsを使いたいですか?
 
Hyper → Highspeed → Development
Hyper → Highspeed → DevelopmentHyper → Highspeed → Development
Hyper → Highspeed → Development
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
Groonga勉強会3 生放送でコメント検索してみた
Groonga勉強会3 生放送でコメント検索してみたGroonga勉強会3 生放送でコメント検索してみた
Groonga勉強会3 生放送でコメント検索してみた
 
RubyからC#を扱う
RubyからC#を扱うRubyからC#を扱う
RubyからC#を扱う
 
Rails5クイックスタート
Rails5クイックスタートRails5クイックスタート
Rails5クイックスタート
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
C#とRubyをつなぐ
C#とRubyをつなぐC#とRubyをつなぐ
C#とRubyをつなぐ
 
QA@IT on Heroku
QA@IT on HerokuQA@IT on Heroku
QA@IT on Heroku
 
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
Railsエンジニアが サーバーレスアーキテクチャに 手を出したよ - 川崎Ruby会議01
 
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
 
広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイル
 

Mehr von Tomohiro Nishimura

NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法
Tomohiro Nishimura
 
It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.
Tomohiro Nishimura
 

Mehr von Tomohiro Nishimura (20)

逃げ道をなくすということについて、僕の持っている知見を話します。
逃げ道をなくすということについて、僕の持っている知見を話します。逃げ道をなくすということについて、僕の持っている知見を話します。
逃げ道をなくすということについて、僕の持っている知見を話します。
 
シュッとふりかえる Ruby 2.0 以降
シュッとふりかえる Ruby 2.0 以降シュッとふりかえる Ruby 2.0 以降
シュッとふりかえる Ruby 2.0 以降
 
Atom ことはじめ
Atom ことはじめAtom ことはじめ
Atom ことはじめ
 
The way to the Kyoto.rb
The way to the Kyoto.rbThe way to the Kyoto.rb
The way to the Kyoto.rb
 
Kyotorb#4
Kyotorb#4Kyotorb#4
Kyotorb#4
 
Kyotorb#3
Kyotorb#3Kyotorb#3
Kyotorb#3
 
Kyotorb Meetup #2
Kyotorb Meetup #2Kyotorb Meetup #2
Kyotorb Meetup #2
 
Kyoto.rb
Kyoto.rbKyoto.rb
Kyoto.rb
 
KPTのすすめ
KPTのすすめKPTのすすめ
KPTのすすめ
 
2010年ふりかえる
2010年ふりかえる2010年ふりかえる
2010年ふりかえる
 
Rubyist のための HTML5 入門 -Content Models-
Rubyist のための HTML5 入門 -Content Models-Rubyist のための HTML5 入門 -Content Models-
Rubyist のための HTML5 入門 -Content Models-
 
NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法NoSQL を Ruby で実践するための n 個の方法
NoSQL を Ruby で実践するための n 個の方法
 
Boys, do LiveCoding
Boys, do LiveCodingBoys, do LiveCoding
Boys, do LiveCoding
 
Vim Text Object
Vim Text ObjectVim Text Object
Vim Text Object
 
Introduce the LiveCoding
Introduce the LiveCodingIntroduce the LiveCoding
Introduce the LiveCoding
 
2009年ふりかえり
2009年ふりかえり2009年ふりかえり
2009年ふりかえり
 
It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.It's Mechanize for it. Ruby as a Finder.
It's Mechanize for it. Ruby as a Finder.
 
Lazyselect
LazyselectLazyselect
Lazyselect
 
Introduce the Hacobu
Introduce the HacobuIntroduce the Hacobu
Introduce the Hacobu
 
Rubyで始めるGTD
Rubyで始めるGTDRubyで始めるGTD
Rubyで始めるGTD
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

DSLについて語るときに僕の語ること