0

Ruby中級入門という勉強会やりました

今日やりました。夏休みだというのにたくさん人が来た。OBも来た。

増井研ではRubyは決してもう熱い最新の言語というより成熟した言語という感じで見られていて、実際若者は皆Node.jsを使っています。
でも俺はRubyの書き心地が好きなので、Rubyのどのへんが使ってて好きかをスライドにまとめてみました。なんかRuby書いてると、UIの使い勝手を地味に上げている時と同じあたりの脳の部位が活性化してて気分がいい。

スライド

アプリ内ライブラリやgemの作り方と、どういう点に気をつけて実装しているかまとめました。


中級に入門って意味わからない事にさっき気づいた。


書いてあるRubyのテクニックについては、参加者は半分ぐらい知ってたり知ってなかったりした。
ライブラリのデザインの話はフムフム的な反応がもらえた。



前:
Ruby勉強会(中級)やります
Ruby初級入門という勉強会やりました

0

Ruby勉強会(中級)やります

明日8/5(月) 14:00〜 SFCデルタ棟S112でやります

これの続き的な位置づけです → Ruby初級入門という勉強会やりました


主題:gemやアプリ内ライブラリを作る時に気をつけている事

コンテンツ

アプリ内ライブラリの作り方・gemの作り方
サンプルコードとテスト
ライブラリのデザイン
API
DSL
泥臭い小手先の技
例外・エラーの通知
ドキュメント


私以外に、RubyでIME作ってる人や、nodeのすごいconnectミドルウェアの人、babascriptのVMがいると思います

0

Ruby初級入門という勉強会やりました

まず全員Ruby2.0.0をインストールさせつつ、俺がRubyの色々なことを紹介したり、ライブコーディングした。

今日の資料です

Rubyそこそこ使ったことある人と全く使ったこと無い人が半々だった。
使ったことある人は前半がためになったとのこと。
ない人は後半のArrayやHashにsortやuniqやreverseなどをチェーンしていったり、mixやmaxやfindなど痒い所に手がとどくの良かったようだ。


スライドを前日からtwitterで公開していたら、@shigeyas先生からgem紹介にpryとawesome_printがあったほうがいいのでは、というツッコミがあって追加した。

「gemの使い方を調べる」のところでpryとawesome_printを使って色々調べるのも追加した。

教育体験のせいで1時間以上のスライドでも3時間ぐらいあれば作れるようになってしまった。


実演

最後にぶっこ抜き実演をやった。ぶっこぬきはクロール・HTML解析・DBに貯めて・通知するという総合芸術で、しかも日常的に使うから不満もすぐたまって改良欲求が高くなる。
自分で愛用できるツールを作って運用メンテしていくことがプログラミング学習の早道だと思うので、ぶっこ抜きをテーマにした。


教えていた人の中にデータマイニングが好きな奴がいたので、アニメスタッフデータベースというすごいwikiから制作スタッフが名をたくさん取ってくるクローラを書いた。お腹がすいたので完成せず終了して麺の月に行った。

役職名と名前が取得できるところまでは作った。あとは協調フィルタリングとかで便利なレコメンドwebサービス作れると思う。

ソース
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'httparty'
require 'nokogiri'
require 'kconv'
require 'awesome_print'
class AnimeWiki
def self.staffs(url)
doc = Nokogiri::HTML.parse HTTParty.get(url).response.body.toutf8
staffs = Hash.new{|h,k| h[k] = Array.new }
doc.xpath("//div[@class='main']").last.text.split(/[\r\n]/).each do |line|
next unless line =~ /^.+[::].+$/
role, names = line.split(/[::]/)
role.gsub!(/[\s ]+/,'')
names.split(/[、 ]/).reject{|i| i.empty? }.each do |name|
staffs[role].push name
end
end
return staffs
end
def self.pages
doc = Nokogiri::HTML.parse HTTParty.get("http://wiki.livedoor.jp/radioi_34/l/?order=name&on_desc=1").response.body.toutf8
pages = []
doc.xpath("//div[@class='main'] //a").each{|a|
next unless a["href"] =~ %r{^/.+}
pages.push(:title => a.text,
:url => "http://wiki.livedoor.jp#{a["href"]}")
}
pages
end
end
if __FILE__ == $0
AnimeWiki.pages.each do |page|
puts page[:title]
puts AnimeWiki.staffs(page[:url])["監督"]
end
end

0

shinjuku.rb #18でメタプログラミングについて話した

けどいた人のレベル的にあまり新鮮味は無かったかもしれませんね

内容は

  • skype → method_missing
  • babascript → instance_eval
  • event_emitter → mix-in
です


どうでもいいけどjoker1007さんの眉毛には親近感を覚えた

Shinjuku.rb #18 on Zusaar

0

SFCの研究会合同説明会に参加した

増井研の説明をした。 → スライド

なんかすごい増井研入りたいとか言ってる人が何人かいた気がする。

説明会は水曜の18時からだったんだけど、高校生が説明を聞きに来てておどろいた。
中高の制服ではなかったからわざわざこんな遠くまで来てくれたのか。

質疑応答の時間が長かったから、いろいろ何を研究したいかを話を聞いたりした上で「君は筧研も見に行ったほうがいいよ」とか案内したりもした。


SFC CLIP: 自分にとって星5つの研究会を SFC研究会合同説明会開催 (2012年12月07日)