O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

広島IT勉強会カレンダー(仮)はRubyを使っています

2016/03/05(土) Hiroshima Ruby Conference
http://hiroshima-ruby-conf.me/

  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

広島IT勉強会カレンダー(仮)はRubyを使っています

  1. 1. 広島IT勉強会カレ ンダー(仮)はRubyを 使っています Hiroshima Ruby Conference 2016/03/05 @takatayoshitake hiroshima.rb
  2. 2. お約束 この発表は個人的な物で仕事や所属等 は全然関係ありません。 誤記や間違い等あればご指摘頂けると 助かります。 @takatayoshitake
  3. 3. このプレゼンツールについて この資料はプログラマ向け(主にRubyist 向け)のプレゼンテーション ツール Rabbit を利用させて頂いております。 http://rabbit-shocker.org/ Ruby環境があれば gem install rabbit で 簡単に利用できます(Windowsで発表中)
  4. 4. 祝! Hiroshima Ruby Conference 開催ありがとうございます
  5. 5. 自己紹介 @takatayoshitake Ruby初心者。hiroshima.rb にも参加して います。 オープンソースカンファレンス広島のお 手伝いやいろんな勉強会でUstとかやっ てます。(多分今日も配信中)
  6. 6. RubyとTシャツと私 (自己紹介 の続き) ・勉強会に参加するようになったのが 2009年 ・OSC東京でIT勉強会カレンダーを知 ったのがきっかけ ・OSC2009島根でお手伝いしてたら Ruby Tシャツを頂く
  7. 7. Ruby Tシャツ (2009) サインは2010 オープンセミナー岡山で 頂きました
  8. 8. Hiroshima.rb 参加のきっかけ 勉強会等に Ruby Tシャツ 来て参加し てたら Hiroshima.rb 代表から 「Ruby 勉強会やろうぜ!」 と声をかけられたのが参加のきっか け…だった様な気がします(多分
  9. 9. Ruby Tシャツ (2012,2013) RubyWorld Conference 2012 , 2013 で購 入
  10. 10. RubyWorld Conference 2012 Top of Rubyist決定戦 http://codeiq.hatenablog.com/ entry/2012/10/29/200113 ●ランキング:11/9 14:00時点最終。 tktさん 0.0000093s n=10000 p (n/2)+((n**2)/12.to_f).round
  11. 11. Top of Rubyist決定戦 その後 まったくRubyっぽくない数学的計算で Ruby初心者がマグレで賞を頂いてし まったせいか、2012年 1回限りで翌年 から無くなりました(汗
  12. 12. Ruby フリース (2014) RubyWorld Conference 2014 懇親会の 抽選で頂きました
  13. 13. Ruby WordConference 2015 消えかかったサインを更新頂きました
  14. 14. Ruby WordConference 常連 2009年~2015年まで毎年参加
  15. 15. Ruby WordConference 2016 ・次回開催予定 2016年11月3日(木・祝),4日(金) http://2015.rubyworld-conf.org/ja/ news/2016/01/rwc2016/ ・今年は1日目が初の祝日開催! ・広島⇔松江 バスで最速2時間52分 ・ぜひみんなで参加しよう!
  16. 16. Hiroshima.rb Tシャツ(自作) ・オープンセミナー2016広島 懇親会 / LT駆動開発23 でプレゼント http://slides.com/tkt/20160206- ltdd23-hiroshimarubyconf
  17. 17. 今日のTシャツ(自作)
  18. 18. 会場のみなさんに質問 Googleカレンダーのデータを自動で Twitter,WordPress,Facebook,メルモ(メ ルマガ),ameblo,はてなブログ...等に投 稿させるブログラムを作成した事が... A. ある B. ない
  19. 19. 条件分岐 if (全員作成した事がある) then プレゼン終了 else (次のスライドに進む) end …これまで実際に終了したことはあり ません。
  20. 20. 今日の内容(1/2) ・オープンデータ ・地方版IT勉強会カレンダー(仮) ・カレンダーデータ(iCal) ・Rubyを使った各種データ投稿
  21. 21. 今日の内容(2/2) ・Twitter ・WordPress ・Facebook ・メルモ(メルマガ) ・ameblo(アメーバブログ) ・はてなブログ
  22. 22. オープンデータ ・今日(2016/03/05)はインターナショ ナル・オープンデータ・デイ2016 http://okfn.jp/ ・オープンデータについては多分LTで どなたか説明されると思うのでお任せ
  23. 23. 今日の資料について ・後で公開します …多分明日くらいかな? ・ソースはこのあたりにある予定 https://github.com/takata/hiitcal …間に合ってなかったら明日迄に追 加したい(汗
  24. 24. 今日の資料について(お詫び) ・コードは色々間違ってるかも知れな いので、おかしい所があったらご指摘 頂けると幸いです。 ・ics2lst.rb の Gemfile等は @eielh さ んが作り直して頂いたもの
  25. 25. 地方版IT勉強会カレンダー(仮) ・広島IT勉強会カレンダー http://j.mp/hiitcal2 ・岡山IT勉強会カレンダー http://j.mp/okaitcal2 ・山口IT勉強会カレンダー http://j.mp/ymgitcal
  26. 26. 主な情報源(1/2) http://azusaar.appspot.com/ http://eventdots.jp/ https://www.doorkeeper.jp/ http://skill-migaki.com/hiroshima/
  27. 27. 主な情報源(2/2) ・Twitter , Facebook 等のSNS ・過去に参加したセミナーや勉強会か らの通知 ・勉強会や懇親会からの口コミ ・広島の勉強会主催者向けの非公開 会議室でもお世話になってます
  28. 28. 情報収集時の課題 ・azusaar , dots 等の複数の検索に 「Hiroshima Ruby Conference」が出て こない? ・doorkeeper 等を使わず独自のWeb フォーム等で受け付けている勉強会 やセミナーは検索では見つけにくい 例) オープンソースカンファレンス等 ・検索だけでは全てを網羅出来ない
  29. 29. 広島&岡山&山口版IT勉強会カ レンダー(仮)の運用(現状) ・カレンダーへの登録作業は今の所 私一人でやってます
  30. 30. 広島&岡山&山口版IT勉強会カ レンダー(仮)の運用(希望) ・広島は自分で開催情報を把握した いし現状の登録数では今の所一人で も十分かな? ・岡山/山口は距離的にあまり勉強 会に参加出来てなくて個人的に情報 不足なので現地の方で一緒に更新頂 ける方を募集中!
  31. 31. 広島&岡山&山口版IT勉強会カ レンダー(仮)への登録依頼 ・Twitter , Facebook ,メール等で公開 URLの情報を頂ければ助かります。 ※最近物忘れが激しいので口頭で聞 いただけだとよく忘れます(汗
  32. 32. 広島&岡山&山口版IT勉強会カ レンダー(仮) 相談場所 ・Facebookで「広島&岡山&山口IT勉 強会カレンダー(仮)」というタレこみ場 所も一応あります。 https://www.facebook.com/ groups/777228482368109/ ※勉強会情報は流れないので情報が 欲しい方はこの後紹介の別ページへ
  33. 33. Googleカレンダーを使う理由 ・IT勉強会カレンダー(本家)の影響(現 在は停止中) ・公開/限定公開/非公開等、公開 範囲が選択できる
  34. 34. 申込画面から追加出来る ・https://www.doorkeeper.jp/ ・https://atnd.org/ ・http://connpass.com/ ・その他にも多数のサービスが対応
  35. 35. カレンダーに追加可能 ・他のカレンダーに追加される
  36. 36. 複数カレンダーを重ねて表示 出来る ・広島、岡山、山口等を重ねて表示
  37. 37. スマホアプリで見れる
  38. 38. Googleカレンダーの利点 ・複数人で編集できる …今の所一人ですが ・iCal形式でデータを出力できる (↑ここ重要)
  39. 39. 密かな理由 http://mezamane.com/ 予定を毎朝読み上げてくれる
  40. 40. iCAL出力結果(一部抜粋) BEGIN:VEVENT DTSTART:20160305T040000Z DTEND:20160305T080000Z DESCRIPTION:https://rubyassociation.doorkeeper.jp/events/38775 LOCATION:広島市中区幟町13番4号広島マツダビル3階 SUMMARY:[広島]Hiroshima Ruby Conference #hiroshimarb END:VEVENT ※実際には1イベントあたり13項目程 度あります。
  41. 41. カレンダーの更新情報 ・「カレンダーにいつ新しい情報が追 加されたのかわからない」との意見を 頂く ・手動でTwitter で呟く …手動で呟くのがめんどくさくなってき たので自動化
  42. 42. 過去(2015/1)の発表 ・広島IT勉強会カレンダー(仮)と自動 Tweetについて http://www.slideshare.net/ yo.takata/20150110-lddd10- hiitcaltweet
  43. 43. 過去(2015/1)の発表
  44. 44. 会場のみなさんに質問 Part 2 ・過去(2015/1)の発表「広島IT勉強会 カレンダー(仮)と自動Tweetについて」 を見たことが... A. ある B. ない
  45. 45. 条件分岐 Part 2 if (全員見た事がある) then スキップする else 説明する end
  46. 46. twitter 広島IT勉強会カレンダ ー(仮) @hiitcal https://twitter.com/hiitcal
  47. 47. twitter IT勉強会カレンダー 岡山IT勉強会カレンダー(仮) @okaitcal https://twitter.com/okaitcal 山口IT勉強会カレンダー(仮) @ymgitcal https://twitter.com/ymgitcal
  48. 48. プログラム概要(Twitter) https://github.com/takata/hiitcal itcal.sh (メインプログラム)
  49. 49. プログラム説明 itcal.sh ・メインプログラム(bash, 一部 awk) wget --quiet --output-document=basic.ics ${ICS_URL} ・wget で googleカレンダーから iCal 取得
  50. 50. プログラム説明 ics2tsv.rb ・iCal を1行のタブ区切りテキストへ TSV 【 Tab-Separated Values 】 ・正規表現でパターンマッチング ・iCalendar では parse でエラー(泣 …多分データの問題
  51. 51. プログラム説明 itcal.sh cat basic.ics | ./ics2tsv.rb | sed 's/,/,/' | sort > basic.tsv ・カレンダーデータ中のエスケープ文 字「」をsedで除去 ・日時順に並べ替え
  52. 52. プログラム説明 itcal.sh diff basic.tsv.1 basic.tsv | egrep "^> " | cut -c3- > basic.tsv.diff ・diff で 前回との差分を抽出 ・行頭に「>」が付いている部分が新規 ・cut で行頭の「>」と「 」(半角スペース )の2文字を取り除く
  53. 53. 環境変数の読み込み require 'dotenv' Dotenv.load sleeptime = ENV["SLEEPTIME"].to_i ・カレントディレクトリの .env ファイル を読み込み ・twitter 等で規制にかからないよう に sleeptime で投稿時の間隔を調整
  54. 54. RubyでTwitter投稿 tweetline.rb 前準備 require 'twitter' require 'pp' @client = Twitter::REST::Client.new( :consumer_key => ENV["TWITTER_CONSUMER_KEY"], :consumer_secret => ENV["TWITTER_CONSUMER_SECRET"], :access_token => ENV["TWITTER_ACCESS_TOKEN"], :access_token_secret => ENV["TWITTER_ACCESS_TOKEN_SECRET"] )
  55. 55. プログラム説明 tweetline.rb ・標準入力から1行づつ読み込みツイ ート STDIN.each do |line| @client.update(line.chomp) sleep(sleeptime) end
  56. 56. 過去(2016/1)の発表 WordPressへの投稿 Googleカレンダーからプログラムで WordPressに投稿してみた http://slides.com/tkt/20160130- wpxmlrpc
  57. 57. 過去(2016/1)の発表
  58. 58. 会場のみなさんに質問 Part 3 過去(2016/1)の発表「Googleカレンダ ーからプログラムでWordPressに投稿 してみた」を見たことが... A. ある B. ない
  59. 59. 条件分岐 Part 3 if (全員見た事がある) then スキップする else 説明する end
  60. 60. WordPress版 広島IT勉強会カ レンダー(仮) http://hiroshima.wp.itcal.link/
  61. 61. WordPress版 IT勉強会カレン ダー(仮) ・岡山IT勉強会カレンダー(仮) http://okayama.wp.itcal.link/ ・山口IT勉強会カレンダー(仮) http://yamaguchi.wp.itcal.link/
  62. 62. プログラム概要(WordPress) https://github.com/takata/hiitcal
  63. 63. RubyでWordPress投稿 require 'xmlrpc/client' server = XMLRPC::Client.new(wordpress_host, '/xmlrpc.php') struct = { 'title' => title, 'categories' => [wordpress_categories], 'description' => description, 'dateCreated' => date } id = server.call("metaWeblog.newPost",1,wordpress_userid, wordpress_password,struct,publish) ・件名、カテゴリ、本文、日時を指定し て投稿
  64. 64. 場所のGoogleマップへのリンク placeenc = URI.encode(row[3].split(/ /)[0]) 場所 <a href="https://www.google.co.jp/maps /place/#{placeenc}">#{row[3]}</a> ・URI.encode で場所(住所)を変換 ・GoogleMapのURLに連結
  65. 65. ここからようやく... ・ここまでは過去の発表のおさらい ・ようやくここから新しい内容 ・・・と言ってもGoogle検索したらすぐ に出てくるような簡単な内容ばかりで すが(汗
  66. 66. Facebook(1/3) 広島it勉強会カレンダー(仮) https://www.facebook.com/hiitcal/
  67. 67. Facebook(2/3) 岡山it勉強会カレンダー(仮) https://www.facebook.com/%E5%B2% A1%E5%B1%B1it%E5%8B%89%E5%BC% B7%E4%BC%9A%E3%82%AB%E3%83%AC %E3%83%B3%E3%83%80%E3%83%BC% E4%BB%AE-1009904569077364/ 「いいね」が 25 超えると短縮出来る
  68. 68. Facebook(3/3) 山口it勉強会カレンダー(仮) https://www.facebook.com/%E5%B1% B1%E5%8F%A3it%E5%8B%89%E5%BC% B7%E4%BC%9A%E3%82%AB%E3%83%AC %E3%83%B3%E3%83%80%E3%83%BC% E4%BB%AE-1717640731815293/ 「いいね」が 25 超えると短縮出来る
  69. 69. プログラム概要(facebook) https://github.com/takata/hiitcal
  70. 70. Ruby を使った Facebook への 投稿 require 'koala' facebook_admin_access_token=ENV["FACEBOOK_ADMIN_ACCESS_TOKEN"] facebook_page_id=ENV["FACEBOOK_PAGE_ID"] @user_graph = Koala::Facebook::API.new(facebook_admin_access_token) accounts = @user_graph.get_connections('me', 'accounts') page = accounts.find{|a| a['id'] == facebook_page_id} @page_graph = Koala::Facebook::API.new(page['access_token']) @page_graph.put_object(page['id'], 'feed', {:message => post_message, :name => post_name, :link => post_link})
  71. 71. Facebook への投稿 詳細 ・「facebook access token 取得」等で 検索すれば色々出てきます。 ※ facebook は頻繁にAPI等が変わる らしいので出来るだけ新しい情報を推 奨 ・2016年2月に確認した時点では v2.5
  72. 72. Facebook への投稿 課題 ・アクセストークン 2ヶ月で切れる(泣 ・今の所手動で更新(泣 ・ADMIN_ACCESS_TOKEN の更新も 自動化したい
  73. 73. サーバ環境 ConoHa VPS https://www.conoha.jp/conoha
  74. 74. Ruby のバージョン管理 ・CentOS 6 標準では 1.8系 gem を利用するため 2.3.0 へ ・RVM: Ruby Version Manager https://rvm.io/ ・chruby https://github.com/postmodern/ chruby
  75. 75. メール 「TwitteやFacebook等のSNSやってな いしWeb見に行くのめんどくさい」との 意見を頂く …カレンダーの更新情報をメールで 通知する様にしてみました
  76. 76. メルモ 日本最大級!携帯メルマガ“メルモ” http://merumo.ne.jp/ ・メールマガジンであればどこでも可 ・今回は無料で短文を送るだけと言う事 でこちらを試してみました。
  77. 77. メルモ 広島IT勉強会カレンダ ー(仮) http://merumo.ne.jp/00623689.html
  78. 78. メルモ IT勉強会カレンダー(仮) ・岡山、山口は準備中… ・プログラムは出来たけどメインには 組み込んでないので半自動
  79. 79. プログラム概要(メール)
  80. 80. Ruby を使った メール投稿 require 'mail' require 'mail-iso-2022-jp' mail = Mail.new(:charset => 'ISO-2022-JP') mail.from = mail_from mail.to = mail_to mail.subject = title mail.body = description mail.deliver UTF-8 では文字化けするので ISO-2022-JP
  81. 81. ameblo - アメーバブログ ・メールが投稿出来ると言う事はメール 投稿で記事がかけるブログも行けるの では…と言う事で試してみました アメーバブログ(アメブロ) http://ameblo.jp/
  82. 82. ameblo 広島IT勉強会カレンダ ー(仮) http://ameblo.jp/hiitcal/
  83. 83. ameblo IT勉強会カレンダー(仮 ) ・岡山IT勉強会カレンダー(仮) http://ameblo.jp/okaitcal/ ・山口IT勉強会カレンダー(仮) http://ameblo.jp/ymgitcal/
  84. 84. ameblo 課題 ・メール投稿だとHTMLが書けないの でリンクが有効にならない ・タイトル(件名)の文字数に制限があ り、長いと途中で切れる
  85. 85. はてなブログ http://hatenablog.com/ リンクとか勝手に付けてくれたような気 が…と言う事で試してみました。
  86. 86. はてなブログ 広島IT勉強会カ レンダー(仮) http://hiitcal.hatenablog.com/
  87. 87. はてなブログ IT勉強会カレン ダー(仮) ・岡山IT勉強会カレンダー(仮) http://okaitcal.hatenablog.com/ ・山口IT勉強会カレンダー(仮) http://ymgitcal.hatenablog.com/
  88. 88. はてなブログ ・自動リンクが便利! ・より高度な投稿はAPIがあるらしいけ ど、カレンダー更新通知程度ならこれ で十分かな?
  89. 89. プログラム概要(全体)
  90. 90. 多くの gem やサンプルに感謝 ・Rubyでは各サービスに対応した gem が豊富にある ・サンプルコードも多数あり、検索する と日本語の情報も多い ・公開頂いている開発者の方に感謝
  91. 91. さらなる投稿先 ・他にも良い投稿先があれば教えてく ださい。 …若い方向けに LINE は検討するべ きかと思いつつ LINEやってないので 時期未定 ・要望があればチャレンジしてみよう かな?
  92. 92. でも実現の目途は見えず(泣 ・LINE BUSINESS CONNECT は法人 でないと無理 ・LINE@ のWebを Ruby の Mechanize で頑張る? ・個人で出来るLINE投稿の自動化を 知ってる方がいたら教えて頂けると助 かります。
  93. 93. 今後の自動化 ・各方面への投稿は出来たけど、情 報収集&カレンダーへの投稿が手動 ・毎週開催される勉強会(すごい広島, Okayama.rb 等)は登録が遅れている ので自動化したい
  94. 94. 今後の自動化(とりあえずの対 応予定) ・情報抽出まで自動化し登録は目視 の半自動化を検討中 ・API使えばGoogleカレンダーへの投 稿も可能なハズ ・進展があれば今後のLT駆動開発あ たりで紹介したいと思います。 https://ltdd.doorkeeper.jp/
  95. 95. 今後の目標 ・一人では無理ですが、各県の勉強 会情報をカレンダーに登録し全国をカ バーしたい ・カレンダーデータも、作成したデータ も公開しているので自由に使って下さ い。
  96. 96. 何のために更新を続けてるの? ・IT勉強会カレンダー(本家)にお世話 になったので ・勉強会に参加して多くの事を学んだ から ・まだまだ勉強会の存在を知らない人 も多数いると思うので、一人でも多く の方が知るきっかけになれば幸いで す。
  97. 97. ストリーミング配信もしてます ・まだ勉強会に参加したことのない方 にも雰囲気を伝えられればとUstream 配信もやってます。 ・興味のある勉強会があれば、ぜひ 気軽に参加してね ・今回みたいに複数の勉強会が被っ て来たかったけど来れなかった方の ために
  98. 98. 今後の妄想 ・IT勉強会以外にも広島のアニメ・サ ブカルイベントカレンダーもひっそり更 新・公開してたりします。 ・こちらはあまり更新出来ていません が、今後情報を充実させて同様に公 開していきたいです。
  99. 99. こんな意見も… ・宣伝ばっかり頑張ってもダメ ・勉強会の中身を充実させたり、ブロ グ書いてアウトプットを頑張るべき …ごもっともです。
  100. 100. ぜひ情報発信しよう! ・最近自分もtwitterに呟く程度で、ブ ログとか全然書けてません(汗 ・今日の感想やご意見などあればブ ログ等にOutput頂けると幸いです ・簡単なプログラムでも何か作ったら 積極的に発表しよう!
  101. 101. こんな課題も… ・今日は広島市内で3つの勉強会が被っ てたり…
  102. 102. 参考に予定も入れ始めました ・検討中でも良いので情報を頂けると助 かります。
  103. 103. 最新情報 ・Link先の更新等は下記参照 https://github.com/takata/hiitcal/ wiki ・各Twitterでも呟くかも知れないので フォローしてね
  104. 104. まとめ ・Rubyはgemやサンプルコード等日本語 情報が多く初心者にやさしい ・カレンダー等、身近なデータでも公開 すると誰かの役に立つ事もあるよね ご清聴ありがとうございました

×