わたしの Ruby の楽しみかた
@flada_auxv
富山合同勉強会2016 2016/01/30(土)
http://agile.esm.co.jp/news/2016-01-06-new-year.html
http://agile.esm.co.jp/news/2016-01-06-new-year.html
https://twitter.com/flada_auxv/status/678058119147180032
興味のある人は => https://goo.gl/BGrOVn
2015年は合計19名で29回の活動がありました!
3分で紹介する
プログラミング言語 Ruby
Ruby の主な特徴
• オブジェクト指向
• ブロック
• Mix-in
• メタプログラミング
オブジェクト指向
• すべてがオブジェクト(Javaのプリミティブ型
のようなものは存在しない)
• たとえば、クラスは Class クラスのインスタンス
> 'hi'.class
=> String
> 'hi'.class.class
=> Class
ブロック
• イテレータとして
• より広く、制御構造の抽象化として
['toyama', 'ishikawa', 'fukui'].each {|ken| p ken }
def open(path)
file = new(path)
yield(file)
file.close
end
open(path) {|file| file.write('hi') }
Mix-in
• 制限された多重継承のようなもの
• クラスはひとつのみ継承できる
• モジュール(クラスをインスタンス化できな
くしたようなもの)は複数インクルードでき
る
メタプログラミング
• オープンクラス
• 定義済みのクラスを拡張できる
• eval族(instance_eval, class_eval, define_method…)
• 動的に文字列(or ブロック)を評価できる
• method_missing
• メソッド探索に失敗したときの振る舞いを定義できる
なによりストレスが多いとプロ
グラミングが楽しめないじゃな
いですか。
“Enjoy programming” が Ruby
の真のモットーです。
❝
Matz says:
http://srad.jp/story/03/03/14/0258247/
簡潔さ + 柔軟さ = 美しさ
キレイに書けると楽しい!
わたしの Ruby の楽しみかた
“面白そう” と思ったモノを作る
大抵はくだらないやつ;-)
例:その1
重い知る
flada-auxv/omoishiru
重い知るの機能
• Twitter で認証して利用を開始すると、
• Withings の体重計に乗ったら、
• Twitter の名前が体重になる。
http://www.slideshare.net/yuusakuiwamoto/perfect-body-48193674
例:その2
Twitter のアイコンをランダムで
YRYR するやつ
flada-auxv/yryr-icon
yryr-icon の機能
• Twitter で認証して利用を開始すると、
• ランダムでYRYRなアイコン画像を設定できたり、
• 定期的に変更できる。
http://yryr-icon.herokuapp.com
実 演
Live coding
Twitter のアイコンをランダムで
富山するやつ
1. bundler で使う gem の用意
2. 最もシンプルな rack アプリケーション
3. rack ミドルウェアの登録
1. OmniAuth::Builder
2. Rack::Session::Cookie
4. Rack::Request オブジェクトを作る
5. コールバックURLへのアクセスをハンドリング
6. env からアクセストークンを読み出す
7. Twitter API クライアントのインスタンス化
8. 画像アップロード API の実行
{ 'omniauth.auth' => { 'credentials' => { 'token' => xxx, 'secret' => xxx } } }
burisyabu kitokito_kun kurobe_dam
require 'rack'
require 'omniauth-twitter'
require 'twitter'
use Rack::Session::Cookie
use OmniAuth::Builder do
provider :twitter, 'xxx', 'xxx'
end
run -> (env) {
req = Rack::Request.new(env)
case req.path
when '/auth/twitter/callback'
token, secret = env['omniauth.auth']['credentials'].values_at('token', 'secret')
client = Twitter::REST::Client.new do |config|
config.consumer_key = "xxx"
config.consumer_secret = "xxx"
config.access_token = token
config.access_token_secret = secret
end
toyama = %w(burisyabu kitokito_kun kurobe_dam).sample
client.update_profile_image(File.open("./#{toyama}.jpeg"))
[200, {"Content-Type"=>'text/plain'}, [toyama]]
end
}

わたしのRubyの楽しみかた

Editor's Notes

  • #2 わたしの Ruby の楽しみかた @flada_auxv http://toyama-eng.connpass.com/event/24840/
  • #3 永和システムマネジメントという会社から来ました。本社は福井にあります。
  • #4 職場で今年の抱負を考える機会があった。
  • #5 漢字の四を選んだ。 四年目っぽさ ゆるゆり四期 四人零和有限不確定不完全情報ゲーム(麻雀)
  • #6 twitter はこんな感じ 「ゆるゆり」「きんモザ」が好き
  • #7 富山とのご縁(下から時系列) 場所が分からない 福井に行った時、北陸新幹線は富山に止まる必要があるの? YRYR 3期はじまる 富山はわたしの心のふるさと 発表にかこつけて会社の金で聖地巡礼 発表の機会を下さった皆さんとゆるゆりに圧倒的感謝!!
  • #8 知人の結婚パーティにお呼ばれしたときのテーブルの案内 ESM(Ekanjini Settaisuru Man)麻雀部 ※実在するESMとは全く関係がありません https://twitter.com/flada_auxv/status/678058119147180032
  • #9 2015年は合計19名で29回の活動。 入部希望者求む。
  • #10 まずは Ruby という言語自体をざっと紹介。 3分より巻いてこ。
  • #11 主な特徴
  • #12 すべてがオブジェクト。 ‘hi’ は String クラスのインスタンス String クラスは Class クラスのインスタンス
  • #13 ブロック付きメソッド呼び出し
  • #17 簡潔さ + 柔軟さ = 美しさ 一言で言うなら多分これ。 更に言えば、美しく書けるから楽しい。
  • #21 痩せたかった(過去形)
  • #24 変わらない毎日がまだまだ続くんだ(願望) http://yuruyuri.com/3hai
  • #25 yryr-icon の雑なやつを作ってみる過程で、Ruby の良さとか感じて頂けたら 決して、資料作るのが面倒くさくなったとかではないのよ
  • #26 yryr-icon の雑なやつを作ってみる過程で、Ruby の良さとか感じて頂けたら 決して、資料作るのが面倒くさくなったとかではないのよ
  • #27 https://github.com/sinatra/sinatra https://github.com/arunagw/omniauth-twitter https://github.com/sferik/twitter
  • #28 https://github.com/sinatra/sinatra https://github.com/arunagw/omniauth-twitter https://github.com/sferik/twitter