プログラミングを始めて10か月で出来るようになること

プログラミングを始めて10か月経って出来るようになったことを報告します。

前回の報告はこちら。
https://kengotakimoto.com/post-1627/

今回の報告内容は次の通りです。

  • [R] twitter スクレイピング方法を修得
  • PHP と R の連携方法を修得
  • Graph API 使い方を修得
  • ページプラグイン 使い方を修得
  • 最近の課題

[R] twitter スクレイピング方法を修得

twitterR でユーザ情報をスクレイピング

Rという言語を使う機会が増えてきました.
統計学を利用している方々には有名だそうですね。

RはWEB周り(主にJavaScript)のパッケージが豊富に用意されています。
統計家でなくとも、何らかのWEB分析結果を図表で表したい方にはおすすめできるツールです。

今回は twitterR というパッケージを利用してtwitterの情報を取得しました。
twitterRの使い方等はCRANの資料を参照して下さい。
Package ‘twitteR’
  

この作業で得たもの

この作業からは次の2点が得られました。

  • 情報取得手段が増えた
  • 取得できない情報もある ということを知った

まず、情報取得手段が増えました。
今まではPHPでスクレイピングをしてきました。
たとえば、私のブログをPHPでスクレイピングする方法は次の記事で紹介しました。
https://kengotakimoto.com/post-717/

選択肢の一つとして、今後はRの利用が考えられます。
PHPとRで、どちらがより楽に扱えるかを比較することができます。
考えを実現する手段が増えたのは嬉しいです。
  
次に、取得できない情報もある ということを知りました。

パッケージやAPIを使えば、全ての情報が取得できると思っていました。
今回の例ならtwitterです。
どうやら全ての情報ではなく、特定の情報が簡単に入手・利用可能というのが正しい認識のようです。

たとえば、次のような方々の情報は取得できません。

  • フォロワのみにツイートを公開している人
  • 何らかの理由で情報取得できない人

後者についてですが、何らかの理由で情報取得ができないユーザがいます。
この点については原因を追うつもりはありません。

取得できない情報もあるんだなぁ という点を知れたのが収穫でした。
  

PHP と R の連携方法を修得

またRの話題です。
  

PHPからRを呼び出す方法を修得

RはPHPからバッチ的な記述で操作可能です。
たとえば次のように。

    $cmd = "R --vanilla --slave --args '$data'  < smpl.R";
    exec($cmd, $res, $errSt);

–vanilla :スクリプト実行時に他のオブジェクトを読み込まないためのオプション
–slave :スクリプト実行時に標準出力表示情報を抑えるためのオプション
–args : args以下をデータとして渡すオプション

execの第三引数は、excexを実行した際の状態を返してくれます。
詳しくはマニュアル参照。
http://php.net/manual/ja/function.exec.php
  
args 以下は複数の値を渡すことが可能です。
ですが、個人的にそれはオススメしません。
事前にjson等でRに渡したい値を外部ファイル化しましょう。
data.json みたいに。
理由は、args以下で複数の値を渡してもR側で正しく読み込むのが困難だからです。
単純に、値を格納したファイルを用意した方が取り扱いが楽です。

R -> PHP へデータを返す時も同様です。
PHPへデータを返す必要がある場合は、そのデータも外部ファイル化しましょう。
データの流れも、ファイルの取扱もシンプルな方が良いです。
  

この作業で得たもの

標準入力、標準出力 について学べました。

execコマンドやバッチ処理について調べると、嫌というほどこの言葉が出てきます。
C言語ユーザの方々にとっては常識のようです。
恥ずかしながら、私は今回初めて知りました。

この点については次のサイトが非常に分かりやすく解説しています。
本当にお世話になりました。

http://www.creatology.jp/unix/outin.html
  
PHPとRの連携には苦戦しました。
centOSにRserverを入れたり、Rのパッケージが上手くインストールできなかったり。
MySQLのバージョン絡みでコンフリクトを起こしたり。
–args の引数に複数のデータを渡してもRで上手く読み込めなかったり。

相変わらず環境構築で躓くことが多いです。
  

Graph API 使い方を修得

PHPから Graph API を利用した話題です。
  

Graph API で投稿情報を取得

Graph APIはfacebookが用意しているAPIの一つです。
これを利用することで、facebookページの情報を引っ張ってくることが可能になります。

Graph APIの概要

Graph APIは、Facebookプラットフォームにデータを取り込んだり、
Facebookプラットフォームからデータを取り出したりするための主要な手段です。
データのクエリ、新しい記事の投稿、広告の管理、写真のアップロード、
アプリで行う必要があるその他のさまざまなタスクに利用できる
ローレベルのHTTPベースのAPIです。
  
引用:

  

この作業で得たもの

アクセストークンについて学びました。

twitterR での操作についても同じことが言えます。
APIを利用するときはトークンを利用する場合が多いです。
facebookの場合はクエリの作り方に多少注意が必要で、取得したいオブジェクトごとにその上限(limitで指定できる値)が異なります。
今回は不要な作業でしたが、ページング処理がやや面倒そうでした。
次回扱うときは、ページングの取り扱いを深く学びたいです。

クエリ作成時に役立ったのが Graph APIエクスプローラ。
facebookにログインしてから使いましょう.
https://developers.facebook.com/tools/explorer
  

ページプラグイン 使い方を修得

またfacebookの話題。
  

ページプラグインを利用してブログをオシャレに

ページプラグインを使うとこんなにオシャレな表示が実現可能です。

fbPage_10Month

ページプラグインについての詳細は公式HPをチェック。

ページプラグイン

ページプラグインがあれば、Facebookページをウェブサイトに簡単に埋め込んで宣伝することができます。
サイトの訪問者はFacebookでの操作と同様にFacebookページに「いいね!」したりシェアしたりできます。
訪問中のサイトを離れる必要はありません。
  
引用:
https://developers.facebook.com/docs/plugins/page-plugin?locale=ja_JP

ペジプラグインを利用したキッカケは、総投稿記事数100記事 を達成したからです。
これを節目にブログデザインを変更しました。
その時の記事はこちら。

https://kengotakimoto.com/post-1809/
  
直近では たきもとけんご.com はfacebookページ限定でどうこうする、といった予定はありません。
だから、直近ではこのスキルを上手く活用できないです。

ベタベタ複数箇所に貼ると非同期処理に失敗して表示速度低下を招くし。

こんなことができるようになった! というスキルアップを目的に着手しました。

FBページ、twitter、Google+ 、いずれかのSNS限定で何らかの情報発信を行う機会があれば再度活用します。
  

最近の課題

本記事のまとめとして、最近抱えている課題を紹介します。
  

やりたいことに着手していない

私の時間の使い方がかなり非効率なので、自己分析の結果を紹介します。
似たような悩みを抱えている方に少しでも情報提供できればなと。
  
直近ではWordPressテーマを自作して、配布したいです。
そのためには、かなりの時間を費やす必要があります。
でも、現状それができていない。
  
本当は コレ がしたい!
でも、時間が取れない!
何故だ!?

これは社会人なら誰もが一度は通る道だと思います。
私は数えきれないくらいこの道を通ってきました。
そして、また戻ってきちゃいました。
  
考えられる原因は次の通り。

  • 解決方法ばかり考えて、行動していない
  • そもそも考える時間が長すぎる

考える事自体は良いことです。
でも、その時間のアウトプット量は ゼロ です。
考える時間がながければ長いほど、アウトプットに使える時間は削られます。

ここでいうアウトプットとは、

  • 自作WPテーマ
  • Blog記事数

など。
  
じゃあ、やりたいことに着手するためいはどうすればいいか。
  

アウトプットしながら軌道修正するしかない

私の場合は次の通り。

  • Blogの更新は続ける
  • WPテーマの勉強も続ける
  • 両方続けながら状況改善を目指す

Blog更新時間を削って、そこで生まれた時間をWPテーマ作成に充てようかとも思いましたが。
止めました。
理由は、Blogのアウトプット量が完全に ゼロ になるから。

そもそも、
「Blogも更新しなきゃ。WPテーマも作らなきゃ。」
という具合に、二兎追って一兎も得られない日々が続いていたので。
この期間のアウトプット量はゼロです。
完全に日々を消費、むしろ浪費していました。

だから、アウトプット量は減らさずに軌道修正します。
どうやるかは未定ですが。

走りながら考えられるようにならなければ。
  
毎回「最近の課題」がうまくまとめられませんが、今回は以上です。
  
[amazonjs asin=”4478068208″ locale=”JP” title=”ゼロ秒思考行動編―――即断即決、即実行のトレーニング”]
  
[amazonjs asin=”4862804993″ locale=”JP” title=”いつも時間に追われている人のための「超」時間術”]

1985年生まれ 東京都在住 フリーランスWEBエンジニア.
30歳からWEBプログラミングを独学で習得. その後エンジニアとして某企業にコミット.
現在は週3日稼働のフリーランスエンジニアとして活躍.
学んだことを中心に web 界隈の人達に向けた情報を発信.

たきもとをフォローする
BLOG
\ share /
たきもと.com

コメント

Secured By miniOrange