Red Hot Ruby 前田修吾 Ruby Association LLC

Similar documents
自己紹介 名前 前田修吾 所属 ネットワーク応用通信研究所 (NaCl) 基盤研究グループ 肩書 主任研究員

2

Microsoft Word 基_シラバス.doc

Microsoft PowerPoint pptx

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

Microsoft PowerPoint - ruby_instruction.ppt

目次 研究目的 背景システム開発について実験および評価結論

Microsoft PowerPoint - 11RubyIntro-No02.ppt [互換モード]

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

Javaの作成の前に

PowerPoint プレゼンテーション

メディプロ1 Javaプログラミング補足資料.ppt

PowerPoint プレゼンテーション

Java言語 第1回

デザインパターン第一章「生成《

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

CodeGear Developer Camp

テクノロジー・リフレッシュ7(TR7):IBM iでRubyがサポートされます

1 現コンフィギュレータの問題点 1.1 独自言語 TOPPERS カーネル開発者 ( 特に TOPPERS カーネルのポーティングを行う者 ) は 現コンフィギュレータが提供する tf を使用する必要がある しかし tf は TOPPERS の独自言語であり 初めて TOPPERS カーネルを開発

5th CodeGear Developer Camp [A5]

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

Microsoft PowerPoint - prog03.ppt

スライド 1

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

レコードとオブジェクト

An introduction and future of Ruby coverage library

Microsoft Word - no01.doc

Microsoft PowerPoint - 07.ppt [互換モード]

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Rubyのしくみ:Ruby Under a Microscope

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

(GitHub, Twitter) 由来 :m.yokoyama 発音例 :myokoyamaa ソフトウェア開発者将棋指し ( アマ三段 )

PowerPoint プレゼンテーション

.NET Framework 4.0 世代の Expression Trees

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

Techno-AirPlas による Application 開発

PowerPoint プレゼンテーション

GEC-Java

PowerPoint プレゼンテーション

Prog2_12th

Ruby演習テキスト1

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

PowerPoint プレゼンテーション

IronPython のご紹介

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

メディプロ1 Javaサーブレット補足資料.ppt

10th Developer Camp - B6

発表内容 背景 コードクローン 研究目的 4 つのテーマ 研究内容 テーマ毎に, 概要と成果 まとめ 2

PHP 分科会 '12/01 OpenSource 協議会 System i 2012/01/26

スライド 1

VASDAQTV_

untitled

Microsoft PowerPoint - 09.pptx

V8.1新規機能紹介記事

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

4-1- 基 Java に関する知識 1 独立行政法人情報処理推進機構

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint ppt

JavaプログラミングⅠ

Microsoft PowerPoint - prog09.ppt

科学的モデリング 2 回 継承 2 無断転載 & 無断配布を禁じます 第 2 回 : 科学的モデリング 継承 2 継承される特性( プロパティ ) 第 2 回の話題 継承は何を継承するのか? 今回のコラムの話題は 継承される特性 ( プロパティ ) についてです そもそもサブクラスはスーパークラスか

ToDo: 今回のタイトル

平成 27 年度 ICT とくしま創造戦略 重点戦略の推進に向けた調査 研究事業 アクティブラーニングを支援する ユーザインターフェースシステムの開発 ( 報告書 ) 平成 28 年 1 月 国立高等専門学校機構阿南工業高等専門学校

4-4- 応スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語のうち 特に Ruby について学習し 応用的なアプリケーション開発の手法を習得する Ⅰ. 概要フレームワークによる Web アプリケーション開発やデータベース操作について学習する Ⅱ. 対象専門分野職種共通 Ⅲ.

ガイダンス

Si 知識情報処理

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

bebras_slide.pptx

ガイダンス

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

V5.0 V4.2 から V5 への 変更点 1.1 版 2010 年 03 月 26 日

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

大量データ処理時における Ruby メモリ使用量削減対策 RubyWorld Conference 2012 株式会社富士通システムズ イースト中坊誠秀 Copyright 2012 FUJITSU SYSTEMS EAST LIMITED

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

12th Developer Camp

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

PowerPoint プレゼンテーション

情報技術 Java の特徴 Java は現在 事務処理計算用プログラミング言語として開発された COBOL に取って代わり C 言語や C++ と並んで 現在最も使われているプログラミング言語の一つである Java は Write Once, Run Anywhere( プログラムを一度作成したらど

5. アルゴリズムと計算量

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

.NET テクノロジー概説 /WindowsAzure 入門 コード P-2 0:00~7:00 ( 休憩 時間含む ) 前提条件 Windows の操作経験 ( エクスプローラの操作 ファイルの操作 ) があること 最低開講人数 0 名.NET テクノロジー概説 /WindowsAzure 入門

Java知識テスト問題

Microsoft PowerPoint - prog04.ppt

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

Microsoft PowerPoint - lec äº™æ‘łã…¢ã…¼ã…›

<基礎領域>

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

講座内容 第 1 回オープンソースの理念 ( 講義 90 分 ) オープンソースという言葉の定義と概念を理解する あわせてオープンソースの基本的なライセンスを理 解する (1) オープンソースの登場と理念 1. オープンソースの定義 2. ネットスケープ社製品のソースコード公開 3. Open So

だクラウドコンピューティングの流れの中で一気に注目を集めるようになったのである このように Ruby や Ruby on Rails のビジネス分野での普及 そしてその結果生じる開発の大規模化への対応などが国内外で進むのに対して 松江市では Ruby を IT 産業振興のための 地域資源 として注目

VASDAQ.TVインストールマニュアル

EnSight UGM

日本 Ruby 会議 2007 Inside Ruby/Tk 永井秀利 九州工業大学情報工学部知能情報工学科 2007/06/10

WDI-Slides-07.pptx

PHP4の今 日本語対応と最近のトピックス

Microsoft Word - CygwinでPython.docx

NetworkApplication-09

Transcription:

Red Hot Ruby 前田修吾 Ruby Association LLC 2009-04-09

自己紹介 所属 Ruby との出会い Ruby との関わり 01 53

所属 Ruby アソシエーション 副理事長 ネットワーク応用通信研究所 (NaCl) 取締役 02 53

Ruby との出会い 1997 年 JavaHouse ML 03 53

Ruby との関わり 仕様提案 実装ライブラリの開発アプリケーションの開発サーバ管理 04 53

本日のメニュー Ruby とは Ruby の歴史 流行の理由 言語の特徴 開発の動向 国際標準化 05 53

Ruby とは オブジェクト指向言語スクリプト言語オープンソース Rubyの作者 Rubyのコンセプト 06 53

オブジェクト指向言語 本格的なオブジェクト指向言語 Smalltalk の影響 すべてのデータはオブジェクト 07 53

スクリプト言語 手軽なスクリプト言語 Perl の影響 クラスを定義しなくてもいい 08 53

オープンソース 誰でも自由に利用できるデュアルライセンス GPL 独自ライセンス 09 53

Ruby の作者 まつもとゆきひろさん Rubyアソシエーション理事長ネットワーク応用通信研究所フェロー 10 53

Ruby のコンセプト プログラマに最適化 コンピュータに ではないプログラマ = まつもとさんプログラマ!= 初心者 プログラムを簡潔に 言語仕様を簡潔に ではない 11 53

Ruby の歴史 1993-02-24 誕生 1995-12-21 fj で公開 1996-12-25 ruby 1.0 2000-11-29 Perl/Ruby Conference 2001-10-12 Ruby Conference 2005-12-14 Ruby on Rails 1.0 2006-06-10 日本 Ruby カンファレンス (RubyKaigi) 2009-01-31 Ruby 1.9.1 12 53

誕生のきっかけ オブジェクト指向の書籍 言語を作りながら学ぶ 書籍自体は出版されず 13 53

Ruby の誕生日 1993 年 2 月 24 日 名前が決まった日 Java より古い Oak から Java に変わったのは 1995 年 14 53

名前の由来 keiju> そうそう. 言語名考えた? matz> 日立の子会社が広告を打ってた matz> うーん shell に十分似ているなら Tish. matz> でももっと格好良い名前が欲しいなあ... keiju> ruby keiju> やはり宝石名でないと matz> ルビを振る のルビ? matz> 何で宝石名なんだ matz> 三菱の影響か? keiju> perl matz> なるほど 15 53

後付けの理由 Perl の次の言語 誕生石 pearl は 6 月 ruby は 7 月 活字の大きさ pearl は 5pt ruby は 5.5pt 16 53

流行の理由 Ruby on Rails での採用 Web 開発での利用が急増 趣味の言語からビジネスの言語へ 17 53

Ruby on Rails とは Web アプリケーションフレームワー ク David Heinemeier Hansson さん作 18 53

なぜ採用されたか? もし Web アプリケーションの開発を今後も続けるのであれば 我慢して使うものじゃなくて 心から愛せるツールを使うべきだって思い立ったんです ( 略 ) 一日経つと Ruby が本当に好き になり 一週間経つと PHP には戻れない 状況になりました Ruby の熟練度が PHP でのそれを上回るには 一ヶ月もかかりませんでした Ruby は それはもう ものすごくフィットしたんです 私の脳に完璧にフィットしました それからは楽しく より良く作業が行えるようになりました Ruby on Rails: David Heinemeier Hansson へのインタビュー http://capsctrl.que.jp/kdmsnr/wiki/transl/?aninterviewwithdhh 19 53

言語の特徴 スクリプト言語オブジェクト指向言語動的言語関数型言語? 20 53

スクリプト言語 インタープリタ 簡潔な記法 テキスト処理機能 21 53

インタープリタ $ ruby hello.rb $ ruby -e 'puts "hello world"' $ ruby -pe 'gsub(/perl/, "ruby")' 22 53

簡潔な記法 class Hello def say(whom = "world") puts "hello " + whom end end hello = Hello.new hello.say("shugo") #=> hello shugo hello.say #=> hello world 23 53

テキスト処理機能 s = "perl is cool".sub(/perl/, "ruby") s = "hello world\n".chop s = " hello wolrd ".strip words = "ruby perl".split word = "ruby perl".slice(/\w+/) name = "def foo".slice(/def (\w+)/, 1) 24 53

オブジェクト指向言語 純粋クラスベース Mix-in オブジェクトベース 25 53

純粋 すべてのデータがオブジェクト 数値文字列配列 26 53

クラスベース オブジェクトはクラスに属するクラスによってオブジェクトの振舞が決まる単一継承 27 53

Mix-in 限定された多重継承 複数のクラスは継承できない モジュールなら複数継承できる モジュールとは クラスと同じようなもの インスタンス化できない 28 53

多重継承の例 29 53

Mix-in の例 30 53

オブジェクトベース クラス定義は必須ではない duck = Object.new def duck.quack puts " クワックワッ " end duck.quack 31 53

動的言語 静的型はない 変数に型は指定しない コンパイル時に型情報は得られない ほとんどのことを実行時に行う クラス定義 メソッド定義 32 53

Duck Typing 鴨のように歩き 鴨のように鳴くも のは 鴨に違いない class Duck; def walk; end end class Fox; def walk; end end def foo(duck) duck.walk end foo(duck.new) foo(fox.new) 33 53

関数型言語? ブロックをメソッドに渡せる p ["1", "2", "3"].collect { s s.to_i } #=> [1, 2, 3] 34 53

関数型言語?(2) オブジェクト化することも可能 plus = lambda { x, y x + y } p plus.call(2, 3) #=> 5 35 53

関数型言語?(3) Ruby 1.9 ではこんな書き方も Y = ->(f) { ->(x) { f[->(arg) { x[x][arg] }] }[ ->(x) { f[->(arg) { x[x][arg] }] } ] } 36 53

開発の動向 バージョン体系開発ブランチ各バージョンの位置付けその他の処理系 37 53

バージョン体系 バージョンの付け方 : <MAJOR>.<MINOR>.<TEENY>-p<PATCHLEVEL> 例 : 1.8.6-p368 MAJOR = 1 MINOR = 8 TEENY = 6 PATCHLEVEL = 368 38 53

バージョン体系 (2) MAJOR MINOR TEENY PATCHLEVEL 大きな変更互換性のない変更も許容互換性を確保した変更のみバグフィックスのみ 39 53

開発ブランチ trunk(1.9) 1.9 開発用 ( 幹 ) ruby_1_8 1.8 開発用 非互換な修正は NG ruby_1_8_x, ruby_1_9_x 保守ブランチ バグ修正のみ 40 53

各バージョンの位置付け 1.8 系 1.9 系 41 53

1.8 系 安定版 業務での利用におすすめ ちょっと遅い 42 53

1.8 系の現在の開発方針 1.9 系で導入された一部の文法 ライ ブラリをサポート 1.9 系への移行をスムーズに 一部の反対意見 1.8.5 より前を知らないせい? 43 53

1.9 系 次期安定版 そろそろ業務での利用を検討できるレベ ル 他言語化 高速化 44 53

その他の処理系 JRuby Rubinius IronRuby MacRuby MagLev 45 53

国際標準化 IPA 公募事業 背景 開発への配慮 46 53

IPA 公募事業 Ruby の国際標準化に関する調査 標準仕様の草案作成が主な内容 NaCl が受託 47 53

背景 政府調達 安定した仕様へのニーズ 48 53

政府調達 政府調達の基本指針 総務省 オープンな標準 特定製品の名指しを避ける 49 53

安定した仕様へのニーズ 処理系の開発アプリケーション開発人材育成 テキスト試験問題 50 53

開発への配慮 バージョン間の互換性 1.8/1.9 の双方が合致する仕様 処理系の互換性 複数の処理系が合致する仕様 MRI, JRuby, Rubinius, IronRuby 51 53

進捗状況 文法 / 意味の大部分を記述標準化検討 WGでのレビュー 議論処理系開発者の一部によるレビュー まだ一般に公開できるレベルではない 52 53

まとめ Rubyはプログラマのための言語 Railsによって 趣味の言語から業務で使う言語へ活発な開発と標準化によって 流行からメインストリームへ 53 53