SlideShare una empresa de Scribd logo
1 de 14
大学の研究室における	
  
 Ruby活用事例紹介	



        2012年7月7日	
  
	
  木村有祐 吉井英人 福田大志	
  
自己紹介	
M1	
  木村 有祐 (きむら ゆうすけ)	
     Twi+erID	
  @stpsnp	
  
M1	
  吉井 英人 (よしい ひでと)	
      Twi+erID	
  @hide_yoshii	
  
M2	
  福田 大志 (ふくだ ひろし)	
      Twi+erID	
  @Fukuda_H	
  

  (1) 大学3年生までの授業でC言語を学習
        (A) 名簿管理プログラム
        (B) コンパイラ作成   etc...

  (2) 授業でオブジェクト指向言語(Java)を学習

  (3) 大学4年生からRubyとRuby on Railsを学習
        (A) TwitterBot
        (B) LastNote(グループウェア)
        (C) 研究用プロトタイプ                                       2
Rubyとの歩み	
           C言語を学習(2008/4~2011/3)	
2011/4	
   Ruby:TwitterBotの作成	

2011/6	
   Rails:LastNoteの開発に参加開始	


           研究室内での勉強会(蔵書管理など)	


           新人研修課題作成を担当
2012/4	
     Ruby:TwitterBotの作成
             Rails:商品管理プログラムの作成	

2012/7     Ruby会議での発表	
(現在)                                  3
Twi+erBot	
(1) 研究室に配属された4年生の新人研修の1つ

(2) Rubyにはじめて触れる

(3) オブジェクト指向がよく
    わからない状態でスタート

(4) Cと比較して,記述が楽
      (A) 厳密な型宣言がない
      (B) 直感的に記述できる
          etc...
(5) 思いのほか早くBotが動いた
      ・・・プログラミングが楽しい!

                            4
研究室で開発しているもの	
研究グループメンバ(先生 + 学生6人)
(1) LastNote
  グループウェア研究のためのテストベッド
  文書管理,名簿管理 etc..
(2) デスクトップブックマーク(DTB)
  仕事の途中状態を保存し復元再開するツール
   (A)デスクトップ状態をブックマークのように記録
   (B) ブラウザで見ていたページも再現
(3) 周期性と関連性を扱うカレンダ
  ある仕事における作業の周期と関連を表現するカレンダ
   (A) タスク登録方式(過去のタスクを参照,複製)
   (B) タスクの予報機能
   (C) 関連タスクの一括登録機能
                               5
LastNote(実際の画面)	




                    6
LastNoteの開発	
  (1) 約2週間に1回の開発打合せ	

        新機能やバグ修正について議論

  (2) Redmineを使ったチケット管理

  (3) Gitを使ったバージョン管理

  (4) 約2カ月に1度のリリース

V3.1 リリース	
               V3.2 リリース	

・・・	
        2週間	
 2週間	
 2週間	
 2週間	

                 2か月	
                   7
Redmineを使った開発	




                  8
新人研修課題(2012年度)	
TwitterBot(Ruby) + 商品管理プログラム(Rails)



「RailsによるアジャイルWebアプリケーション開発」を使用

           本書のチュートリアルに従い
           開発を進める

           (1) カタログ機能
           (2) カート機能
                 +
           (3) amazonから書籍情報の取得機能

                                      9
新人研修課題の感想	
  
      4年生の感想(分からない点)
 (1) ルーティング
  (作ったページが表示できない)



                                  ?	
 (2) ActiveRecordが定義するメソッド
  (自分では定義していない)

 (3) format.html,format.jsonの挙動
  (どんなことをやっているの?)                 ;ω;	
 (4) scaffold
  (どこまで作ってくれるの?)

 (5) MVC
  (どこに何を書けばいいの?)
                                          10
ほんとは簡単じゃない?	
  Rails	
                               コードを書かなくても,
「rails new」と「scaffold」
                               とりあえず動くものが作れる!
簡単!!  ここまでは…

これ以降,覚えることがいっぱい!!	

 MVC,CoC,OO,DB, ORM,HTML,CoffeeScript,SCSS,
 gem, Bundler, rvm,cucumber,git etc…	

 こんなにやるのは大変!!!	

 参考:Ruby on Railsが簡単というのは嘘 30 to 30
 http://toyoshi.hatenablog.com/entry/2012/03/09/143753	
                                                           11
Railsバージョンアップは大変	
LastNote

Rails1 	
   Rails2	
   Rails3(現在3.0.10) 	
   Rails3.2



   案外楽!	
         結構大変!	
               現在移行中	


 Railsのバージョンを追いかけるのは大変	
 (1) Ruby1.9 文字コード
 (2) 昔動いていたプラグインが動かない(全文検索)
 (3) 対応が終わったら,もう次が…	

 Rails4が夏にリリース?	
                                                        12
先輩からの教え!	
<乃村研べきべからず集>

 第一条 モデルの作成は慎重にするべし!

 第二条 テストしやすいコードを心がけるべし!

 第三条 国際化は多国語未対応でも使うべし!

 第四条 ビジネスロジックはモデルに書くべし!

 第五条 安易な継承をするべからず!

                          13
まとめ	
(1) とっつきやすいRuby! でも,難しいRails!!

  Ruby            Rails

         大きな壁	

(2) 結構まじめに開発してます
  2週間に1回の打合せ
  勉強会なども!


(3) 困ってます
  Railsのバージョンアップは大変!!

                                 14

Más contenido relacionado

La actualidad más candente

Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Kanako Kobayashi
 
プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介baban ba-n
 
ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14Takashi Ogura
 
で、次は何がくるの? - 第2回 TIS Matsuri
で、次は何がくるの? - 第2回 TIS Matsuriで、次は何がくるの? - 第2回 TIS Matsuri
で、次は何がくるの? - 第2回 TIS MatsuriYoshitaka Kawashima
 
Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成Kouji Matsui
 
TypeScript 入門してみる
TypeScript 入門してみるTypeScript 入門してみる
TypeScript 入門してみるKen Fukuyama
 
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けてRuby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて善弘 植木
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKMasahiro Wakame
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!Jun-ichi Sakamoto
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonadKouji Matsui
 
恊働ロボットCOROの開発における形式的仕様の適用事例
恊働ロボットCOROの開発における形式的仕様の適用事例恊働ロボットCOROの開発における形式的仕様の適用事例
恊働ロボットCOROの開発における形式的仕様の適用事例Life Robotics
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介豊明 尾古
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話Hiroshi Kikuchi
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:codeKouji Matsui
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばKouji Matsui
 
Swift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswiftSwift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswiftTomohiro Kumagai
 

La actualidad más candente (20)

Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!
 
プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介
 
ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14
 
で、次は何がくるの? - 第2回 TIS Matsuri
で、次は何がくるの? - 第2回 TIS Matsuriで、次は何がくるの? - 第2回 TIS Matsuri
で、次は何がくるの? - 第2回 TIS Matsuri
 
Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成
 
TypeScript 入門してみる
TypeScript 入門してみるTypeScript 入門してみる
TypeScript 入門してみる
 
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けてRuby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
 
TypeScript 独習会
TypeScript 独習会TypeScript 独習会
TypeScript 独習会
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
 
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
 
TypeScript超入門
TypeScript超入門TypeScript超入門
TypeScript超入門
 
Walking front end
Walking front endWalking front end
Walking front end
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
Kotlinの紹介
Kotlinの紹介Kotlinの紹介
Kotlinの紹介
 
恊働ロボットCOROの開発における形式的仕様の適用事例
恊働ロボットCOROの開発における形式的仕様の適用事例恊働ロボットCOROの開発における形式的仕様の適用事例
恊働ロボットCOROの開発における形式的仕様の適用事例
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
 
Swift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswiftSwift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswift
 

Destacado

Bidding the Inventions as Incentive Schemes and the Ownership Structure
Bidding the Inventions as Incentive Schemes and the Ownership StructureBidding the Inventions as Incentive Schemes and the Ownership Structure
Bidding the Inventions as Incentive Schemes and the Ownership StructurePalkansaajien tutkimuslaitos
 
Bab IV PENUTUP
Bab IV PENUTUPBab IV PENUTUP
Bab IV PENUTUPRezki2704
 
Bab III ANALISIS HTN
Bab III ANALISIS HTNBab III ANALISIS HTN
Bab III ANALISIS HTNRezki2704
 
MAFTEC - A Case Study
MAFTEC - A Case StudyMAFTEC - A Case Study
MAFTEC - A Case StudyPaul Fisher
 
Want to work from home
Want to work from homeWant to work from home
Want to work from homeViseth Hul
 
Foreign direct investment
Foreign direct  investmentForeign direct  investment
Foreign direct investmentSumit Behura
 
Start up and human resource
Start up and human resourceStart up and human resource
Start up and human resourcestartupdirexions
 
Perfectessay.net essay sample #1 chicago style
Perfectessay.net essay sample #1 chicago stylePerfectessay.net essay sample #1 chicago style
Perfectessay.net essay sample #1 chicago styleDavid Smith
 
Alliance presentation
Alliance presentationAlliance presentation
Alliance presentationJaime Hadley
 
NIST SP 800-63C #idcon vol.22
NIST SP 800-63C #idcon vol.22NIST SP 800-63C #idcon vol.22
NIST SP 800-63C #idcon vol.22Nov Matake
 
Study on different international standards
Study on different international standardsStudy on different international standards
Study on different international standardsABU TALEB TARAQUE
 

Destacado (15)

Bidding the Inventions as Incentive Schemes and the Ownership Structure
Bidding the Inventions as Incentive Schemes and the Ownership StructureBidding the Inventions as Incentive Schemes and the Ownership Structure
Bidding the Inventions as Incentive Schemes and the Ownership Structure
 
Bab IV PENUTUP
Bab IV PENUTUPBab IV PENUTUP
Bab IV PENUTUP
 
Bab III ANALISIS HTN
Bab III ANALISIS HTNBab III ANALISIS HTN
Bab III ANALISIS HTN
 
MAFTEC - A Case Study
MAFTEC - A Case StudyMAFTEC - A Case Study
MAFTEC - A Case Study
 
Discussion of P-value
Discussion of P-valueDiscussion of P-value
Discussion of P-value
 
Want to work from home
Want to work from homeWant to work from home
Want to work from home
 
Peak performance
Peak  performancePeak  performance
Peak performance
 
Foreign direct investment
Foreign direct  investmentForeign direct  investment
Foreign direct investment
 
Start up and human resource
Start up and human resourceStart up and human resource
Start up and human resource
 
20140307 tech nightvol11_lt_v1.0_public
20140307 tech nightvol11_lt_v1.0_public20140307 tech nightvol11_lt_v1.0_public
20140307 tech nightvol11_lt_v1.0_public
 
Perfectessay.net essay sample #1 chicago style
Perfectessay.net essay sample #1 chicago stylePerfectessay.net essay sample #1 chicago style
Perfectessay.net essay sample #1 chicago style
 
Title Research
Title Research Title Research
Title Research
 
Alliance presentation
Alliance presentationAlliance presentation
Alliance presentation
 
NIST SP 800-63C #idcon vol.22
NIST SP 800-63C #idcon vol.22NIST SP 800-63C #idcon vol.22
NIST SP 800-63C #idcon vol.22
 
Study on different international standards
Study on different international standardsStudy on different international standards
Study on different international standards
 

Similar a nomlab_okayamaruby_slide

Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料慎平 仁藤
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)Kanako Kobayashi
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてHirata Tomoko
 
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来Masahiro Nishimi
 
Ruby Introduction
Ruby IntroductionRuby Introduction
Ruby IntroductionYushiroDodo
 
Rails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるRails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるHirata Tomoko
 
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料ionis111
 
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料shogo yamada
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Ouka Yuka
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Koji SHIMADA
 
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1Takuya Mukohira
 
オープンキャンパス体験授業20150802
オープンキャンパス体験授業20150802オープンキャンパス体験授業20150802
オープンキャンパス体験授業20150802義広 河野
 
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]Yuuki Takezawa
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回龍一 田中
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Drecom Co., Ltd.
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05yamanekko
 

Similar a nomlab_okayamaruby_slide (20)

Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
 
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来
 
Ruby Introduction
Ruby IntroductionRuby Introduction
Ruby Introduction
 
Rails+Markdownでなにかつくる
Rails+MarkdownでなにかつくるRails+Markdownでなにかつくる
Rails+Markdownでなにかつくる
 
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料
 
2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料2017年3月13日勉強会発表資料
2017年3月13日勉強会発表資料
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
 
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
 
オープンキャンパス体験授業20150802
オープンキャンパス体験授業20150802オープンキャンパス体験授業20150802
オープンキャンパス体験授業20150802
 
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
 
The evolution of c#
The evolution of c#The evolution of c#
The evolution of c#
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05
 

nomlab_okayamaruby_slide

  • 1. 大学の研究室における   Ruby活用事例紹介 2012年7月7日    木村有祐 吉井英人 福田大志  
  • 2. 自己紹介 M1  木村 有祐 (きむら ゆうすけ)   Twi+erID  @stpsnp   M1  吉井 英人 (よしい ひでと)   Twi+erID  @hide_yoshii   M2  福田 大志 (ふくだ ひろし)   Twi+erID  @Fukuda_H   (1) 大学3年生までの授業でC言語を学習 (A) 名簿管理プログラム (B) コンパイラ作成 etc... (2) 授業でオブジェクト指向言語(Java)を学習 (3) 大学4年生からRubyとRuby on Railsを学習 (A) TwitterBot (B) LastNote(グループウェア) (C) 研究用プロトタイプ 2
  • 3. Rubyとの歩み C言語を学習(2008/4~2011/3) 2011/4 Ruby:TwitterBotの作成 2011/6 Rails:LastNoteの開発に参加開始 研究室内での勉強会(蔵書管理など) 新人研修課題作成を担当 2012/4   Ruby:TwitterBotの作成   Rails:商品管理プログラムの作成 2012/7 Ruby会議での発表 (現在) 3
  • 4. Twi+erBot (1) 研究室に配属された4年生の新人研修の1つ (2) Rubyにはじめて触れる (3) オブジェクト指向がよく わからない状態でスタート (4) Cと比較して,記述が楽 (A) 厳密な型宣言がない (B) 直感的に記述できる etc... (5) 思いのほか早くBotが動いた ・・・プログラミングが楽しい! 4
  • 5. 研究室で開発しているもの 研究グループメンバ(先生 + 学生6人) (1) LastNote   グループウェア研究のためのテストベッド   文書管理,名簿管理 etc.. (2) デスクトップブックマーク(DTB)   仕事の途中状態を保存し復元再開するツール    (A)デスクトップ状態をブックマークのように記録    (B) ブラウザで見ていたページも再現 (3) 周期性と関連性を扱うカレンダ   ある仕事における作業の周期と関連を表現するカレンダ    (A) タスク登録方式(過去のタスクを参照,複製)    (B) タスクの予報機能    (C) 関連タスクの一括登録機能 5
  • 7. LastNoteの開発 (1) 約2週間に1回の開発打合せ 新機能やバグ修正について議論 (2) Redmineを使ったチケット管理 (3) Gitを使ったバージョン管理 (4) 約2カ月に1度のリリース V3.1 リリース V3.2 リリース ・・・ 2週間 2週間 2週間 2週間 2か月 7
  • 9. 新人研修課題(2012年度) TwitterBot(Ruby) + 商品管理プログラム(Rails) 「RailsによるアジャイルWebアプリケーション開発」を使用 本書のチュートリアルに従い 開発を進める (1) カタログ機能 (2) カート機能 + (3) amazonから書籍情報の取得機能 9
  • 10. 新人研修課題の感想   4年生の感想(分からない点)  (1) ルーティング   (作ったページが表示できない) ?  (2) ActiveRecordが定義するメソッド   (自分では定義していない)  (3) format.html,format.jsonの挙動   (どんなことをやっているの?) ;ω;  (4) scaffold   (どこまで作ってくれるの?)  (5) MVC   (どこに何を書けばいいの?) 10
  • 11. ほんとは簡単じゃない?  Rails コードを書かなくても, 「rails new」と「scaffold」 とりあえず動くものが作れる! 簡単!!  ここまでは… これ以降,覚えることがいっぱい!! MVC,CoC,OO,DB, ORM,HTML,CoffeeScript,SCSS, gem, Bundler, rvm,cucumber,git etc… こんなにやるのは大変!!! 参考:Ruby on Railsが簡単というのは嘘 30 to 30 http://toyoshi.hatenablog.com/entry/2012/03/09/143753 11
  • 12. Railsバージョンアップは大変 LastNote Rails1  Rails2 Rails3(現在3.0.10) Rails3.2 案外楽! 結構大変! 現在移行中 Railsのバージョンを追いかけるのは大変 (1) Ruby1.9 文字コード (2) 昔動いていたプラグインが動かない(全文検索) (3) 対応が終わったら,もう次が… Rails4が夏にリリース? 12
  • 13. 先輩からの教え! <乃村研べきべからず集> 第一条 モデルの作成は慎重にするべし! 第二条 テストしやすいコードを心がけるべし! 第三条 国際化は多国語未対応でも使うべし! 第四条 ビジネスロジックはモデルに書くべし! 第五条 安易な継承をするべからず! 13
  • 14. まとめ (1) とっつきやすいRuby! でも,難しいRails!! Ruby Rails 大きな壁 (2) 結構まじめに開発してます   2週間に1回の打合せ   勉強会なども! (3) 困ってます   Railsのバージョンアップは大変!! 14