私はもっぱらバックエンドの弱小PHPerなので、フロントの技術はさっぱりなんです。これまではJavascriptは本当にたしなむ程度しか触っていませんでした。ところがここ数週間の間、どうしてもJavascriptと(というかNode.js)少し真剣に向き合う機会があり、かなり悪戦苦闘する日々が続きました。私のようにC言語やPHP出身のプログラマだとJavascript(というかNode.js)の基本概念って、慣れるのにすごくハードルが高いんじゃないかな、と思います(あくまで個人的な感想ですが)。世のJavascript屋さんは本当に優秀なんだなーと感服するばかりなのです。何回にも分けて記事を書くことで、自分がつまづいた場所をなるべく詳細に記録していきたいと思います(で、できるかな!?)。このシリーズを読み終わるころには以下のような技術を学んでもらえたらいいなと思います。Script)からアプリを呼び出す・Node.jsの非同期処理(Promiseを使った実装)すっごい偉そうに言ってますが、私ただの弱小PHPer、Javascriptに関しては学生以下レベルですので、あまり期待しないほうが良いかもです。とあるWebサイトをスクレイピングしたいこの一連のシリーズでは、とあるサイトをスクレイピングしたいと思います。今回は対象のサイトを一定間隔で、例えば30分おきにスクレイピングしたいのです。考えて、PHPでやるならサーバーにスクレイピング用のスクリプトを置いて、cronで定期実行するかなぁと思うのですが、今回はやめました。MySQLという構成以外の何かに手を出したかったのです。今にして思えばこのナイーブな好奇心のせいで、ずいぶん苦労してしまったわけなんですが。この組合せにたどり着くまでにも、ずいぶん時間を浪費しましたが、その経緯はまた別の記事に譲ろうと思います。私のようにPHP程度で生きている人間にとっては、どうも聞きなれない用語ばかりです。ここで、簡単にそれぞれの用語について説明してみます。Functionsの説明の前に、まずGoogleが展開しているFirebaseというサービスがあります。Serviceの頭文字から来ているみたいです(詳しくは分かりません)。アプリケーションのバックエンドサービス」らしいですよ。mBaaSが何なのかはそれほど重要ではありません。Firebaseは従量課金制のサービスですが、個人利用程度の目的であれば、基本的に無料で使うことができます。Functionsという位置づけになります。Functionsとほとんど同義なんじゃないかと思います。いろんなサービスとは、静的なHTMLファイルのホスティングだったり、Firestoreというデータベースだったり、単なるストレージだったりします。使う最大の利点は、プログラムをホスティングするサーバーを用意しなくて良いところなんじゃないかと思います。これまでは、PHPでもJAVAでもRubyでも、どのような言語を選んでも、とにかくどこかでホスティング環境を購入して、そこに自分が作ったプログラムをFTPソフトでアップロードする必要がありました。AWSでEC2を購入したり、どこかのWebホスティングサービスに契約したりする必要があります。Firebaseではもう最初っからGoogleがホスティング環境を用意してくれています。Googleアカウントさえあれば、ほとんど無料で使うことができます。私たちプログラマがすることは、プログラムを書いてアップロード(デプロイ)するだけ。あとは勝手にプログラムがインターネットに公開されることになります。Script)から定期的に呼び出す、という構成で定期実行のスクレイピングをやってみたいと考えています。Node.jsに手を出す運びとなったのでした。次にNode.jsですが、私にとってNode.jsに対するイメージと言えば「javascriptがサーバーサイドで動くよ」程度の認識でした。「いやいやいや、サーバサイドならPHPあればいいでしょ。Javascriptだなんて冗談が過ぎるヨ。新しい言語でやるにしても、これからやるなら断然Go言語だよねー」くらいに思っていたので、Node.jsは完全に軽視していました(ごめんよNode.js)。Functions)のせいで、不本意にもNode.jsに足を突っ込まざるを得なくなってしまったというわけなんです(今でもNode.jsの必要性はイマイチ分かっていません汗)。Node.js用のスクレイピングモジュールNode.jsでは、いろんなライブラリ的な関数群が提供されています。Node.jsではこのようなライブラリをモジュールと呼ぶみたいです。私が調べた限り、Node.jsでスクレイピングをするならこのCheerioというモジュールが最も一般的らしいので、これを採用することにしました。一般的に、スクレイピングをするなら優秀なHTMLのパーサーが必要になると思います。要は、HTMLのテキストを読み込んで、その中のタグ構造をプログラムが扱いやすいように変換する機能です(これをパース=解析と呼びます)。このCheerioというモジュールを使うと、jQueryのセレクタと同じような記法で要素を取得することができます。ちなみに、PHPを使ってスクレイピングするなら、phpQueryというライブラリが存在しています。こちらもまたjQuery様式で要素を取得することができるようになるライブラリです。jQueryライクに要素を取得できるっていうのは、多くのプログラマにとって需要があるんですね。Googleが提供する色んなサービスをプログラムから利用できるようにするものって感じだと思います。Sheetの内容を使ってGmailにメールの下書きを作成したり、なんてことができると思います(やったことがないので断言できないのですが、、、)。GASが対応しているGoogleのサービスは非常に多岐にわたっています。数え上げたらきりがありませんが、これらのサービスをGASで連携させると、いろんな場面でオフィスワークの自動化ができると思います。Webに公開したAPIを、定期的に実行する用途で使います。実は、これはGASでやる必要はありません。GASを選んだ理由は、Webリクエストを定期的に実行できるからです。Functionsで公開したアプリ(API)を叩くのにちょうど良いかな、と思ったからです。Functionsでも、APIを定期的に実行する機能はあるようですが、少しややこしそうだったのと、ほんの少しお金がかかりそうだったので止めました(月間数十円レベルだと思いますが)。前書きというか能書きが長くなったので続きは次回にします。開発を進めるにあたって、環境を整えたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。VBAFirebasejavascriptWeb制作タイトルとURLをコピーしました。