マークのところをクリック。URLにアクセスすると、LINEに何か通知が届く、というところまではできた。IFTTTのAPI調整このDocumentationのページ、薄い四角のところは実は文字が入力可能だったりする。it!を使うと・・・おぉ、ちゃんと文字が入ったメッセージが届いた!あ、画像からはKEYは消してます。いうことで、このURLをPerlで組み立て、そしてMojolicious::Liteのボタンを押した時にURLに送信するようにすれば、レギュレーションは満たせそう。ちなみに、このDocumentationページから入力が可能ってのがわからなくて、2時間くらい試行錯誤したよ!というわけで、出来上がったコードがこれです。第5回はサブルーチンもやったので、IFTTTにリクエスト投げるところはサブルーチンにしてみました。gist.github.com注意このコードをインターネットに置いた場合、誰彼構わずボタンが押しまくられるだろうことは想像に難くないです。自分の手元のパソコンで利用するだけであれば十分でしょう。IFTTTと連携したレシピをPerlから制御することができる、というのは日々の暮らしがちょっと楽になる素晴らしい技術だと思います。IFTTT経由ではなく、直接LINEのAPIを使ってみるのも良いかもしれません。受講された方、サポーターの方、気温と湿度の高い中、お疲れ様でした。講師をやったジャージの人です。Perl入学式第5回です。Webアプリに関するスライドも大改修を施しました。その影響でいくつか表記の抜けや不整合があり、お手数とご迷惑をおかけしました。スライドの修正は完了しており、近々反映予定です。スライドの修正が完了しました。コードの追加や削除、編集をGitHubのdiffを使うことで、わかりやすく提示できたと考えています。講義に利用したスライドはMarkdown形式で公開しています。復習に使ってください。スライドの最後の方に「落ち穂拾い」として追加のコンテンツもあります。チャレンジしてみてください。github.comスライド中にある練習問題の解答例を掲載しています。It.(やり方は何通りもある))の一つとして、参考にしてください。つけて聞いてみてください。面からSlackの方をお勧めします。Perl入学式を終えた方へ一昨年、同じようなエントリ書いていたんで、リンク貼っておきます。sironekotoro.hateblo.jp以下、講義中に言及したオススメ。自分のエントリを並べておきます。は年に2回、同じ内容を繰り返す受講スケジュールでやってきました。今年後半の構成はちょっと変わる可能性があります。(変わらない可能性もある)connpassやTwitter、Slackでの告知があると思いますので、興味のある方は続報をお待ちください。YAPC::Japanが開催されるようです。公式発表を楽しみに待ちましょう。YAPCはPerlの話はもちろん、様々なシステムやサービスの構成、ベストプラクティスや新しい知見を得られる場です。参加を強くお勧めします。受講した方とお会いできるのを楽しみにしてます。無料apps.apple.comuzulla.hateblo.jpspeakerdeck.comscratch.mit.edu今回の懇親会のお題については別エントリで。さん「謎のカタツムリみたいなやつに引数が入っていると思って下さい」。見たらカタツムリに見えてしまう。お疲れ様でしたTweet広告を非表示にするもっと読むコメントを書く2019-08-26PerlからGoogleの感情分析を使ってみるお盆明けから妙に気分が沈んだり、なんかおかしいなーって感じですが、みなさんお元気でしょうか。毎日twitterでつぶやいているツイ廃としては、過去に呟いた内容をもとに、いつからおかしくなったのか?ってのを調べてみようと思ったのです。思って、twitterの履歴から感情分析とかしたら面白そう・・・ってことで日本語で感情分析できるGoogleのAPI使えないかなーってやってみてた。APIKEYベタ書きならリクエスト投げて戻ってくるところまでいけた。今回はGoogleの感情分析APIを使ってみるところまでやってみました。Kit)は提供されていない・・・けど、WebAPIであればリクエストを投げて受け取るだけなので安心(安心?JSONでPOSTして、JSONで受け取る、ということなのでSDKなくてもなんとかなりそうですね。CloudのAPI_KEYの取得とクレジットカード登録の必要があり、そこはハードルが高いかもしれません。うちの場合、昔、BigQuery試してみた時にクレカを登録していました。公式サイトcloud.google.comGoogleのAPI使うための認証情報の扱いとか。環境変数の設定のあたりcloud.google.com公式サイトのほか、こちらのページが大変参考になりました。つかってリクエストを投げてくれるところがあって、Perlで書くにあたって大変助かりました。つかってgoogle-cloud-sdkを入れる際に参考にしました。書いていたからなのでしたうごいたー!こんな感じです。あー、参考にならない書き方ーあと、やはり環境構築が鬼門だなぁという感じ。コードでも、コードがあればなんとかなりそうなので、コードを置いておきますね。昨今のWebではhttps化が進んでいます。安全な通信をするためにデータを暗号化/復号するのですが、そのためのモジュールが別途必要です。サンプルスクリプトを試したところ、httpのサイト(例:http://www.hatena.ne.jp/)はアクセスできるが、httpsのサイト(例:https://www.yahoo.co.jp)にPerlのスクリプトからアクセスできず。IO::Socket::SSL大文字小文字を厳密に見てくるので注意こっちはなんか時間切れとか出てくる。perl-IO-Socket-SSLインストールできたうごいた!こんな感じでした。動いてしまえば「許そう、全てを・・・」って気分になりませんか。HTTPクライアント編HTTPクライアントというのは、Chromeとか、Firefoxとかそういったブラウザです。HTTPサーバーにアクセスし、情報を得るものです。プログラムからもHTTPサーバにアクセスして情報を得ることができます。以下はPerlでのHTTPクライアントの紹介です。5.13.9以降であればコアモジュールとしてPerl本体と一緒にインストールされるモジュール。普通にPerlをインストールすれば大概の環境では使えるはず。ページにあるサンプルをPerl入学式にある範囲で書き直したものです。Japanに変えています。リファレンス回をやった人だと見覚えがあるのではないでしょうか。ハッシュリファレンスですね。成功してたら、HTTPのステータスコードを表示。インストールが必要なモジュール。略称で、PerlをつかってWebにアクセスするときの基本的なモジュールです。ヤフーのHTMLが表示される}HTTP::Tinyと大体同じですね。うちのコメントも早くも簡素になってきました。大元である、HTTPアクセスに必要なことの全てが詰まったフルセット版です。ユーザーエージェントの変更やPOSTでのデータ送信など、HTTP通信を使った機能が詰まっています。ヤフーのHTMLが表示される}Furlperldoc.jptokuhiromさん作成の「早い」ライブラリ。Furlはもう一つのHTTPクライアントライブラリです。Furlはこれらの問題を解決します。$res->content;}Webスクレイピングここまで紹介したものは、Webサーバーにアクセスして、そこから情報を取得するものでした。ほとんどの用途では、Webの情報が全て必要なわけではなく、ごく一部のみ必要だったりします。いった情報を都度、正規表現などを使って取り出してもいいですが、もっと楽はできないものでしょうか?そんなプログラマの三大美徳「怠惰」を実現させるツール、ありそうですよね。Webサーバから返ってきたデータのうち、必要な部分だけ取り出す、こそげとる、それがスクレイピングと言われるツールです。ここからはPerlのスクレイピングモジュールを使ってYahooニュースからトピック一覧だけ取り出してみます。いう本で知って、ほぼこれをメインに使っています。要素の指定にXPathとCSSセレクタを利用することができます。この本には他にもPerlのモジュールがたくさん載っているので、やや古いとはいえオススメです。interface.Javascriptのライブラリ、JQueryに似た方法で要素を指定してスクレイピンすることができるモジュールです。実はJQuery使ったことないので、わからない・・・でも、直感的に要素を指定できる感じで良いですね。});HTML::TreeBuildermetacpan.orgスクレイピングツールのくくりに入れましたが、HTML::TreeBuilderはHTMLをパース(解析)するためのツールです。正確なHTMLは<html>の中に<head>と<body>タグがあり、その中にさらに複数のタグが配置されています。これを、<html>という太い幹から<head>と<body>という枝が生え、さらにその枝から別の枝が生え・・・という木構造で解析していきます。}}閑話休題WWW::Mechanizeperldoc.jp一部の人には刺さるかもしれません。今まで紹介したものは、Webサーバから情報を持ってくるものと、Webページから特定のデータを抜き出す(スクレイピングする)ものでした。Webサーバからデータを受け取り、そのあとにリンクをたどったり、入力欄に文字を入れてボタンを押す、なんてことができます。以下は、Yahooの検索ページの入力欄に「Perl入学式」という文字を入力して、その検索結果を得るスクリプトです。$mech->{content};どうでしょう、ずらっとHTMLが表示されて、その中にかすかに検索結果らしきものが見えますね・・・これを整形したい・・・と思いませんか?うちは思います。いうことで、ここで、先に登場したスクレイピングツールを使います。WWW::MechanizeでYahoo検索した結果から、タイトルとリンクをWeb::Scraperで取り出してみます。APIは外せないのでは?と思い至りました。APIは簡単にいうと、プログラムが使いやすいように整形されたデータのやり取り、というところでしょうか。詳細はググったり調べたりでお願いします。APIで提供されているデータの取得と利用が容易になります。ここでは、無料で利用できるAPIとして、Livedoorの天気予報APIを利用します。weather.livedoor.com地域は東京地方、今日(2019年8月4日)の最高気温を調べてみます。成功してたら、HTTPのステータスコードを表示。取得したデータはJSON形式なので、Perlで操作しやすいように変換する。変えることで、大阪の最高気温を出したりすることができます。ここを変数にすると、他の地域の気温を見たいときに楽ですね。その数字を標準入力から入れられると楽かも。Webアプリから地域を選べるようにすれば・・・となります。さんから教えてもらったのがこのツール。インストールして、コマンドラインから1行、ワンライナーです。$content->{forecasts}->[0]->{temperature}->{max}->{celsius}'ということでPerlでWebにアクセスしてデータ集める方法でした。さんからのお題は双六で「あがり」までの平均何回サイコロを振れば良いか?を計算するものでした。さんが書いてくれております。@nishiru3++nishiru3.hatenablog.comうちはこんな感じで解いてみました。100回とか10万回とか変えられるよう、変数に入れておく。サイコロを振った合計回数を格納する変数。$number_of_trials;今回のピザ会は盛況だった他にもライフゲームImger並列処理とネタが多くて、一通り書いてからブログ公開だとしばらくかかりそうだなーってことで、先にかいた双六から公開しまする。受講された方、サポーターの方、大変湿度の高い中、お疲れ様でした。講師をやったジャージの人です。Perl入学式第4回です。カリキュラム改定に伴い、Perl初学者には難しい(しかし避けては通れない)「リファレンス」で1回丸々使う回となりました。講義に利用したスライドはMarkdown形式で公開しています。復習に使ってください。github.comまた、講義中に数回言及しましたが、練習問題も骨のあるものになっています。面からSlackの方をお勧めします。Perl」をお勧めします。今日はネタが多くてちょっと後日にまとめて書く予定です。ImgerWebサイトの死活監視を並列で処理したい!AnyEvent解決したいコード、困っているコードをプロジェクターに映し出して、いろいろとみていくの、楽しかったですね。モブプログラミングってあんな感じなのかな。次回は8月の後半での開催を予定しています。やるのはWebフレームワーク、Mojoliciousモジョリシャスです。PerlとMojoliciousを通して、Webアプリケーションの骨組みとデータの流れを学習していきます。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。