Submit Search
Upload
インタフェースのこころ
•
10 likes
•
5,923 views
Koichi ITO
Follow
Ruby合同勉強会@Sansan (http://connpass.com/event/14398/)
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 44
Download now
Download to read offline
Recommended
受託開発とRubyGems
受託開発とRubyGems
Koichi ITO
The World is Connected
The World is Connected
Koichi ITO
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
Koichi ITO
INSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONS
Koichi ITO
進撃の受託開発
進撃の受託開発
Koichi ITO
Detroit Programming City
Detroit Programming City
Koichi ITO
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO
Reading 1st dRuby
Reading 1st dRuby
Koichi ITO
Recommended
受託開発とRubyGems
受託開発とRubyGems
Koichi ITO
The World is Connected
The World is Connected
Koichi ITO
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
JavaからRubyへの変遷を約10年見てきて、プロジェクトで変わったこと、変わっていないこと12集
Koichi ITO
INSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONS
Koichi ITO
進撃の受託開発
進撃の受託開発
Koichi ITO
Detroit Programming City
Detroit Programming City
Koichi ITO
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO
Reading 1st dRuby
Reading 1st dRuby
Koichi ITO
Spring 12年の歴史
Spring 12年の歴史
movmov
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
Hiroshi Maekawa
Spring4-DevLove発表資料
Spring4-DevLove発表資料
Yuichi Hasegawa
こだわりのkintone
こだわりのkintone
Yusuke Amano
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
Yusuke Suzuki
Agile Testing Night #4 LT
Agile Testing Night #4 LT
Yoshifumi Takeshima
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
Yusuke Suzuki
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
Daisuke Nishino
decode17
decode17
Yahoo!デベロッパーネットワーク
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
CLARA ONLINE, Inc.
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
Ryosuke Uchitate
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
Hiroshi Ohnuki
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
Yusuke Suzuki
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
Daisuke Nishino
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
Taichi Watanabe
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Yusuke Suzuki
エナジャイル設立によせて
エナジャイル設立によせて
Yusuke Suzuki
Agile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoft
Hiroshi Ohnuki
NoOps?よろしいならば戦争だ
NoOps?よろしいならば戦争だ
Toru Makabe
パーフェクトBody(仮)
パーフェクトBody(仮)
Yuusaku Iwamoto
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
Tetsuya Mase
More Related Content
What's hot
Spring 12年の歴史
Spring 12年の歴史
movmov
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
Hiroshi Maekawa
Spring4-DevLove発表資料
Spring4-DevLove発表資料
Yuichi Hasegawa
こだわりのkintone
こだわりのkintone
Yusuke Amano
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
Yusuke Suzuki
Agile Testing Night #4 LT
Agile Testing Night #4 LT
Yoshifumi Takeshima
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
Yusuke Suzuki
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
Daisuke Nishino
decode17
decode17
Yahoo!デベロッパーネットワーク
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
CLARA ONLINE, Inc.
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
Ryosuke Uchitate
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
Hiroshi Ohnuki
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
Yusuke Suzuki
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
Daisuke Nishino
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
Taichi Watanabe
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Yusuke Suzuki
エナジャイル設立によせて
エナジャイル設立によせて
Yusuke Suzuki
Agile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoft
Hiroshi Ohnuki
NoOps?よろしいならば戦争だ
NoOps?よろしいならば戦争だ
Toru Makabe
What's hot
(20)
Spring 12年の歴史
Spring 12年の歴史
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
Spring4-DevLove発表資料
Spring4-DevLove発表資料
こだわりのkintone
こだわりのkintone
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
Agile Testing Night #4 LT
Agile Testing Night #4 LT
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
decode17
decode17
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
6製品1サービスの開発にPortfolio for JIRAを使ってみた
6製品1サービスの開発にPortfolio for JIRAを使ってみた
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
エナジャイル設立によせて
エナジャイル設立によせて
Agile japan2016 a 2 ricksoft
Agile japan2016 a 2 ricksoft
NoOps?よろしいならば戦争だ
NoOps?よろしいならば戦争だ
Viewers also liked
パーフェクトBody(仮)
パーフェクトBody(仮)
Yuusaku Iwamoto
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
Tetsuya Mase
ヒューマンインタフェースな学会に参加してみた
ヒューマンインタフェースな学会に参加してみた
hcdvalue
Argカフェ&argフェスト冒頭説明
Argカフェ&argフェスト冒頭説明
arg cafe
音声インタフェースとWebアクセシビリティ
音声インタフェースとWebアクセシビリティ
Takuya Nishimoto
電子書籍小説の「立ち読み」インタフェース 牛尼剛聡
電子書籍小説の「立ち読み」インタフェース 牛尼剛聡
arg cafe
ユーザーインタフェースの分解
ユーザーインタフェースの分解
Takehisa Gokaichi
『UXデザインの教科書』を書きました
『UXデザインの教科書』を書きました
Masaya Ando
インタフェースデザインの心理学 まとめ
インタフェースデザインの心理学 まとめ
akihiro_0228
誰に何を伝える?わたしの デザインコンセプトの 作り方、探し方
誰に何を伝える?わたしの デザインコンセプトの 作り方、探し方
Ayaka Sumida
研究サーベイ論文
研究サーベイ論文
朋佳 山田
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
Yotaro Fujii
Viewers also liked
(12)
パーフェクトBody(仮)
パーフェクトBody(仮)
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
ヒューマンインタフェースな学会に参加してみた
ヒューマンインタフェースな学会に参加してみた
Argカフェ&argフェスト冒頭説明
Argカフェ&argフェスト冒頭説明
音声インタフェースとWebアクセシビリティ
音声インタフェースとWebアクセシビリティ
電子書籍小説の「立ち読み」インタフェース 牛尼剛聡
電子書籍小説の「立ち読み」インタフェース 牛尼剛聡
ユーザーインタフェースの分解
ユーザーインタフェースの分解
『UXデザインの教科書』を書きました
『UXデザインの教科書』を書きました
インタフェースデザインの心理学 まとめ
インタフェースデザインの心理学 まとめ
誰に何を伝える?わたしの デザインコンセプトの 作り方、探し方
誰に何を伝える?わたしの デザインコンセプトの 作り方、探し方
研究サーベイ論文
研究サーベイ論文
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
JAWS DAYS 2017「サーバーレスが切り拓く Eightのリアルタイム大規模データ分析」
Similar to インタフェースのこころ
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
Atsushi Harada
AgileShimane始動!! in OSC2011Shimane
AgileShimane始動!! in OSC2011Shimane
Ryuichi Tsuruhara
継続的デリバリー読書会に寄せて
継続的デリバリー読書会に寄せて
Tsutomu Takeuchi
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
紘之 大田黒
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
智治 長沢
ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!
ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!
Hideki Saito
2014-01-28 Operation in the future
2014-01-28 Operation in the future
Operation Lab, LLC.
Agile Japan 2013 サテライト<長野>事例研究講演資料
Agile Japan 2013 サテライト<長野>事例研究講演資料
株式会社ガリレオ(開発グループ)
コミュニティ紹介
コミュニティ紹介
Ryuichi Tsuruhara
OpenCV on mobile
OpenCV on mobile
Daisuke Yamashita
Open STF Plugin 作ってみた
Open STF Plugin 作ってみた
justice_sm
Redmine Applied for Large Scale
Redmine Applied for Large Scale
Rakuten Group, Inc.
Practices Of An Agile Developer
Practices Of An Agile Developer
Shintaro Kakutani
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様
ManageEngine, Zoho Corporation
Archer
Archer
Tokuhiro Matsuno
タレントへ目指せ
タレントへ目指せ
Shuncai Zhou
AWS Cognito makes old web apps available from anywhere
AWS Cognito makes old web apps available from anywhere
Yukiya Hayashi
Similar to インタフェースのこころ
(20)
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
AgileShimane始動!! in OSC2011Shimane
AgileShimane始動!! in OSC2011Shimane
継続的デリバリー読書会に寄せて
継続的デリバリー読書会に寄せて
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
SORACOM UG Explorer 2018 - IoTxAIを活用した小売業向け店舗解析サービスの仕組みとノウハウ
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!
ANSIBLE_KEEP_REMOTE_FILESをTrueにしてみよう!
2014-01-28 Operation in the future
2014-01-28 Operation in the future
Agile Japan 2013 サテライト<長野>事例研究講演資料
Agile Japan 2013 サテライト<長野>事例研究講演資料
コミュニティ紹介
コミュニティ紹介
OpenCV on mobile
OpenCV on mobile
Open STF Plugin 作ってみた
Open STF Plugin 作ってみた
Redmine Applied for Large Scale
Redmine Applied for Large Scale
Practices Of An Agile Developer
Practices Of An Agile Developer
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様
Archer
Archer
タレントへ目指せ
タレントへ目指せ
AWS Cognito makes old web apps available from anywhere
AWS Cognito makes old web apps available from anywhere
More from Koichi ITO
Bundler 2 の胎動
Bundler 2 の胎動
Koichi ITO
アプリがパッチにまみれたら
アプリがパッチにまみれたら
Koichi ITO
Stairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails Programmer
Koichi ITO
最軽の開発手法 dX 改
最軽の開発手法 dX 改
Koichi ITO
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Koichi ITO
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Koichi ITO
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
Koichi ITO
俺の開発日誌
俺の開発日誌
Koichi ITO
ghq gem-src and more
ghq gem-src and more
Koichi ITO
RuboCopとXPコーディング規約
RuboCopとXPコーディング規約
Koichi ITO
俺たちの新人教育!!
俺たちの新人教育!!
Koichi ITO
スローテスト刑事 (デカ)
スローテスト刑事 (デカ)
Koichi ITO
Gate of Agile Web Development
Gate of Agile Web Development
Koichi ITO
RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術
Koichi ITO
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り
Koichi ITO
Motivationware
Motivationware
Koichi ITO
達人プログラマーへの道
達人プログラマーへの道
Koichi ITO
Let's get ready for next Ruby
Let's get ready for next Ruby
Koichi ITO
職と人
職と人
Koichi ITO
Agile Software Development with Edge Ruby
Agile Software Development with Edge Ruby
Koichi ITO
More from Koichi ITO
(20)
Bundler 2 の胎動
Bundler 2 の胎動
アプリがパッチにまみれたら
アプリがパッチにまみれたら
Stairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails Programmer
最軽の開発手法 dX 改
最軽の開発手法 dX 改
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
俺の開発日誌
俺の開発日誌
ghq gem-src and more
ghq gem-src and more
RuboCopとXPコーディング規約
RuboCopとXPコーディング規約
俺たちの新人教育!!
俺たちの新人教育!!
スローテスト刑事 (デカ)
スローテスト刑事 (デカ)
Gate of Agile Web Development
Gate of Agile Web Development
RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り
Motivationware
Motivationware
達人プログラマーへの道
達人プログラマーへの道
Let's get ready for next Ruby
Let's get ready for next Ruby
職と人
職と人
Agile Software Development with Edge Ruby
Agile Software Development with Edge Ruby
インタフェースのこころ
1.
インタフェースの Sansan株式会社さまオフィス (株) 永和システムマネジメント アジャイル事業部 Ruby x
Agile グループ 伊藤 浩一 (@koic) 2015.05.15 (Fri) Ruby合同勉強会@Sansan From IDE to Terminal こころHead First Readline
2.
http://www.ruby.or.jp/ja/news/20150326_2.html Computer programmer, guitarist. Leader
of an Agile software development team at Eiwa System Management, Inc. Lives in Shinjuku. @koic photo token by @NaCl
3.
COMING SOON! http://agile.esm.co.jp/cases/sansan.html にて公開予定
4.
5.
6.
7.
今日の話
8.
9.
GUIのメリットはYSIWYG̶What You See Is
What You Get (見たとおりのも のが結果を得られる) ーというものです。そ してデメリットはWYSIAYGーWhat You See Is All You Get (見たとおり以上のも のは得られない) ーなのです。 21. コマンド・シェルの力を使うこと 『達人プログラマー』78 ページより抜粋
10.
GUIが使えない場合 はシェルを使う。
11.
「黒い画面」の異名で有名
12.
入力インタフェースと 実装インタフェース話
13.
http://ja.wikipedia.org/wiki/GNU_readline
14.
•#1 入力インタフェース •#2 Ruby標準ライブラリ •#3
異言語バインディング Readlineの歩き方
15.
#1 •#1 入力インタフェース •#2 Ruby標準ライブラリ •#3
異言語バインディング Readlineの歩き方
16.
• 人とコンピュータのインタフェース • 考えるために考えない
by @mtsmfm • 「思考の速さで入力する」 • キーバインディング重要、ショートカット重要 • 如何に指の筋肉運動を変えずに操作するか? • コマンドラインに限らず、Readline のインタフェー スで操作できるアプリケーションがさりげなくある 入力デバイスの重要性 https://speakerdeck.com/mtsmfm/find-your-favorite-tools?slide=26
17.
• Ctrl+a (行頭へ移動) •
Ctrl+e (行末へ移動) • Ctrl+f (1文字進む) • Ctrl+b (1文字戻る) • Ctrl+p (入力履歴を戻る) • Ctrl+n (入力履歴を進める) • Ctrl+h (現直前の文字削除) • Ctrl+l (画面をクリアする) 私がターミナルでよく使う行内編集 • Ctrl+r (入力履歴から補完) • Meta+f (1ワード進む) • Meta+b (1ワード戻る) • 入力中のCtrl+d (現位置削除) • Ctrl+k (現位置以降を行末ま で削除してバッファへ) • Ctrl+y (バッファを貼付ける) ほかにあったかな?
18.
ショートカット は早く覚えた 分効果も高い
19.
https://twitter.com/koic/status/18370534918
20.
ちなみにデフォルト ではEmacsという エディタの操作らし いですよ (ステマ)
21.
22.
#2 •#1 入力インタフェース •#2 Ruby標準ライブラリ •#3
異言語バインディング Readlineの歩き方
23.
http://docs.ruby-lang.org/ja/2.2.0/library
24.
http://docs.ruby-lang.org/ja/2.2.0/class/Readline.html
25.
https://github.com/koic/acappella/commit/bbebaa99cea88c1559e683a8739112ed08977187?diff=split
26.
27.
#3 •#1 入力インタフェース •#2 Ruby標準ライブラリ •#3
異言語バインディング Readlineの歩き方
28.
異世界を繋げる バインディング インタフェース
29.
https://github.com/ruby/ruby/blob/ruby_2_2/ext/readline/readline.c
30.
ruby.h readline.c C言語による拡張実装の世界 Client Readline <<ruby>> Rubyの世界 C言語実装をRubyのインタフェース実装で使えるようにアダプタされてる Readlineの作り概要 ※1…readline.hは環境により互換実装editlineが使われる ※2…ruby.h直接ではなくinternal.h経由で読んでる (internal.hは外に使わせないヘッダっぽい。理解が足らず) readline/ readline.h <<readline>> ロードパスに含まれた.rbに継ぎ .so, .bundle,
.dllを読む ビルドによる越境 ※1 ※2
31.
世界を渡る 時の決め事 http://ja.wikipedia.org/wiki/%E5%A4%A7%E8%88%AA%E6%B5%B7%E6%99%82%E4%BB%A3#/media/File:CantinoPlanisphere.png
32.
Cの変数には型があり,データには 型がありません.(中略) 逆にRuby の変数には型がなく,データに型が あります.この違いのため,Cと Rubyは相互に変換しなければ,お 互いのデータをアクセスできません. https://github.com/ruby/ruby/blob/trunk/doc/extension.ja.rdoc
33.
• 用途 • 既存のC言語ライブラリを使いたいとき •
開発速度を犠牲にしても実行速度を得たいとき • RubyのAPIの知識、考え方を流用可能 (呼び出し方はC言語の流 儀に乗る) • メモリ管理をRubyの処理系に任せられたり、そうじゃなかったり • Rubyの拡張を C言語で書くなら、こうあって欲しいのインタ フェースになっている C言語による拡張
34.
readline.c https://github.com/ruby/ruby/blob/ruby_2_2/ext/readline/readline.c#L1800
35.
• void Init_readline(void)
がライブラリ定義のエン トリ • Rubyは拡張ライブラリをロードする時に「Init_ラ イブラリ名」という関数を自動的に実行します (中略) この関数の中でクラス,モジュール,メソッド,定数 などの 定義を行います. • 組み込みライブラリの String であれば、string.c に void Init_string(void) という具合になっている ライブラリ定義の入り口 https://github.com/ruby/ruby/blob/ruby_2_2/ext/readline/readline.c#L1800 (extension.ja.rdoc より抜粋)
36.
モジュール定義 https://github.com/ruby/ruby/blob/ruby_2_2/ext/readline/readline.c#L1828 https://gist.github.com/koic/cf46eccf3cc6e7c066fe C言語の関数でありながら Rubyのインタフェースに 置き換えて考えられる • メソッド名と実装の関数を紐付ける
37.
インターフェイスの三原則 『インターフェイス指向設計』15 ページより抜粋 • 原則1
インターフェイス実装は、そのメソッ ド名が示す通りの処理をしなければならない • 原則2 インターフェイス実装は他に危害を加 えてはならない • 原則3 インターフェイス実装は、責務を果た せない場合にそれを呼び出し元に伝えねばな らない
38.
驚き最小の 原則 Principle of Least
Surprises Rubyに慣れた人にとっての (入り口は><)
39.
Ruby拡張ライブラリ 流儀 C言語で構成されたフレームワークの世界 郷に入っては郷に従え TO
40.
BE
41.
CONTINUED
42.
予習復習研究はこちら http://www.amazon.co.jp/dp/4274066428 プログラミングRuby 第2版 言語編 Rubyのしくみ -Ruby
Under a Microscope- http://www.amazon.co.jp/dp/4274050653 Rubyソースコード完全解説 http://www.amazon.co.jp/dp/4844317210 青木 峰郎 (著), まつもと ゆきひろ (監修) Dave Thomas (著), Chad Fowler (著), Andy Hunt (著), 田和 勝 (翻訳), まつもと ゆきひろ (翻訳) Pat Shaughnessy (著), 島田 浩二 (翻訳), 角谷 信太郎 (翻訳)
43.
おわりに
44.
http://fkino.net/20150225.html
45.
46.
See you later, in
the Ruby community. https://www.facebook.com/photo.php?fbid=819944131416418set=p.819944131416418
Download now