Successfully reported this slideshow.
Your SlideShare is downloading. ×

わたしのRubyの楽しみかた

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 27 Ad

More Related Content

Slideshows for you (20)

Viewers also liked (18)

Advertisement

Recently uploaded (20)

Advertisement

わたしのRubyの楽しみかた

  1. 1. わたしの Ruby の楽しみかた @flada_auxv 富山合同勉強会2016 2016/01/30(土)
  2. 2. http://agile.esm.co.jp/news/2016-01-06-new-year.html
  3. 3. http://agile.esm.co.jp/news/2016-01-06-new-year.html
  4. 4. https://twitter.com/flada_auxv/status/678058119147180032
  5. 5. 興味のある人は => https://goo.gl/BGrOVn 2015年は合計19名で29回の活動がありました!
  6. 6. 3分で紹介する プログラミング言語 Ruby
  7. 7. Ruby の主な特徴 • オブジェクト指向 • ブロック • Mix-in • メタプログラミング
  8. 8. オブジェクト指向 • すべてがオブジェクト(Javaのプリミティブ型 のようなものは存在しない) • たとえば、クラスは Class クラスのインスタンス > 'hi'.class => String > 'hi'.class.class => Class
  9. 9. ブロック • イテレータとして • より広く、制御構造の抽象化として ['toyama', 'ishikawa', 'fukui'].each {|ken| p ken } def open(path) file = new(path) yield(file) file.close end open(path) {|file| file.write('hi') }
  10. 10. Mix-in • 制限された多重継承のようなもの • クラスはひとつのみ継承できる • モジュール(クラスをインスタンス化できな くしたようなもの)は複数インクルードでき る
  11. 11. メタプログラミング • オープンクラス • 定義済みのクラスを拡張できる • eval族(instance_eval, class_eval, define_method…) • 動的に文字列(or ブロック)を評価できる • method_missing • メソッド探索に失敗したときの振る舞いを定義できる
  12. 12. なによりストレスが多いとプロ グラミングが楽しめないじゃな いですか。 “Enjoy programming” が Ruby の真のモットーです。 ❝ Matz says: http://srad.jp/story/03/03/14/0258247/
  13. 13. 簡潔さ + 柔軟さ = 美しさ キレイに書けると楽しい!
  14. 14. わたしの Ruby の楽しみかた
  15. 15. “面白そう” と思ったモノを作る 大抵はくだらないやつ;-)
  16. 16. 例:その1 重い知る flada-auxv/omoishiru
  17. 17. 重い知るの機能 • Twitter で認証して利用を開始すると、 • Withings の体重計に乗ったら、 • Twitter の名前が体重になる。
  18. 18. http://www.slideshare.net/yuusakuiwamoto/perfect-body-48193674
  19. 19. 例:その2 Twitter のアイコンをランダムで YRYR するやつ flada-auxv/yryr-icon
  20. 20. yryr-icon の機能 • Twitter で認証して利用を開始すると、 • ランダムでYRYRなアイコン画像を設定できたり、 • 定期的に変更できる。 http://yryr-icon.herokuapp.com
  21. 21. 実 演 Live coding
  22. 22. Twitter のアイコンをランダムで 富山するやつ
  23. 23. 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
  24. 24. 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 }

Editor's Notes

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

×