Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

わたしのRubyの楽しみかた

8,428 views

Published on

わたしの Ruby の楽しみかた @flada_auxv
富山合同勉強会2016 http://toyama-eng.connpass.com/event/24840/

Published in: Internet
  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

わたしの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 }

×