ぽこひでブログ

ほのぼの大学4年をやってる [ぽこひで] の学生エンジニアブログ?

初WordpressでSEO対策ちょっとしてみた。

大学3年やってる ぽこひで です(´∀`)b

普段はRailsで趣味でサービス作ってたり、サークルでなんか作ってたりする系の人間です。PHPは本読みながら画像掲示板作ったくらいの ど素人ですが、今回使うことになったのでドギマギしてます。。

今年の4月から地元でベンチャーインターンしながら、WEB制作のバイトしながら、サークルでアプリ作りながら、趣味でサービス作って...という予定で多分死にます。なので、死ぬまでにそこで得た知識を少しずつブログで還元していこうかなと。

4月からバイト予定のWEB制作の会社?でなぜか最初の3日間はインターンって形で参加しろーってなったので、今日はその2日目です。Wordpressでサイトを作っているらしく、いきなり管理画面のIDとパスワードを教えられて、直接いじってみた感じです。すでに動いているサイトを。。危険すぎる。

特にPHPの関数も覚えてないペーペーがいきなり管理画面からいじっていいものか。とにかく、実装する予定の内容は以下の通り

各記事のタイトルを変えて、SEO対策する。

どうやら現状のGoogleさんのページランクでは、メタタグのキーワードはあんまり重要視されていないらしく、じゃあ一番ページランクに影響の与える要因は何か。それはタイトル!タイトルにそのページにヒットしてもらうキーワードを含んでキャッチーな感じにする。みたいなことを教えてもらってじゃあそれを早速サイトに反映してみようってことになりました。

LIGのSEOの基本中の基本!「titleタグ」「meta description」「h1タグ」の書き方まとめに載ってた例を一つ

Before

タイトル: 画像・動画 アプリ | iPhone/iPadアプリ -Appliv

After

タイトル: 画像・動画 おすすめアプリランキング | iPhone/iPadアプリ -Appliv

こんな感じにシンプルに一緒に検索するだろうなってのを予想して、それをタイトルに含めちゃえばもちろん見つかりやすくなるよねーってやつです。単純ですね。それをWordpress初心者がいじってみました。

記事はすでに階層分けされたカテゴリに所属していたので、その記事の直属のカテゴリをタイトルに含めて、

記事タイトル | カテゴリ名 | サイト名

こんな感じにしよう!ってことで、早速初めてWordpress触ってみました。

調べてみるとheader.php内の wp_title っていうよくわからない関数でタイトルを生成しているらしく、ただデフォルトの関数だと今回みたいな仕様にはできない感じなので、ググったらオーバーライドできるみたいなのでそれで、頑張って書こう!

functions.php

  add_filter('wp_title', 'wp_custom_title', 0);
  
  function wp_custom_title($title) {
    $categories = get_the_category();
    $full_title = $title . " | ";
    foreach( $categories as $cat ) {
      $full_title .= $cat->cat_name . " | ";
    }
    return $full_title . get_bloginfo( 'name' );
  }

すでに用意されてるwp_title関数だと不十分なので、wp_custom_titleという関数を作って、add_filterで関数をオーバーライドする感じ。get_the_category( )を用いたら、その記事が所属しているカテゴリ一覧がarrayで返ってくるらしいから、それをeach文で回して" | "で結合して...てな感じで最初に実装しようとしていた、記事の直属のカテゴリだけを取り出す関数がないらしいので、とりあえずはここまで実装して終わりました!

wordpressPHPもほぼ初心者だったんです。勘弁してください。wordpressのことよくわかってないので、怖すぎるんですが、管理ページで編集した内容がそのまま本番環境に反映されちゃってて、恐ろしすぎました。開発環境を自分のPCに構築しなきゃ。。MAMPいれなきゃ(´・ω・`)って思ったり。。

なんで思ったかって?それはですね。

wp_custom_titleの関数ないをPHP初心者がいじってるうちに、文法的なエラーとか起こしちゃったらしく、本番環境が落ちちゃったんですね。管理ページもろもろ。恐ろしすぎます。冷や汗かきました、まじで

こんな初歩的なPHPerですが、がんばろーっと。では(゚▽^〃)ノシ

サンタは単独犯か

概要

サンタは古くから親から子供に語り継がれる存在だが、『サンタとは何か』がつかめない。そこで、ある仮説を元に持論を展開してみた。

はじめに

約100年前、ヴァンジアという8歳の少女がニューヨークの地元紙に「サンタはいるのか?」という手紙を出した。その質問に対して、地元紙の編集者、フランシス・チャーチは

「もちろん、存在する。誰も見たことがないからといって、それはサンタがいない証拠にはならないよ。愛は見えないけど、確かに愛は存在する。思いは見えないけど、思いやりは目に見えるし触れることだって出来る。このように、サンタは見えないけど、存在するんだ。」

と答えた。ここでは、彼の言う通り、サンタは存在すると仮定する。では、その存在するサンタの罪状について調べてみよう。

殺人を犯さない国際指名手配犯

昔からクリスマスの夜には

みんなが寝静まった夜にトナカイに乗ったサンタクロースがやってきて、サンタ工場で作ってきた子供たちがそれぞれ願ったプレゼントを靴下の中に入れる。その後は静かに家を後にして、ベルの音ともに空を飛び、次の家の子供に再びプレゼントを届け、また静かに立ち去る...

といった心温まる話があると信じられている。しかし、一体この心温まる話にはいくつの犯罪が隠されているのだろうか。

  • 住居侵入罪

刑法130条に定められていて、3年以下の懲役または50万円以下の罰金。一般的に言われる「不法侵入」に同じ。
サンタは子供にプレゼントを与えるという実に正当的な理由を口実に不法侵入を繰り返している。さらに、計画性は非常に高く指紋などの「そこに居た」という痕跡を一切残さない。

  • 窃盗未遂

問われるかはその時のサンタによるが、他人の家に無断で侵入し、暗闇の中で靴下を探すためにあたりを物色する。この行為自体で未遂としての被害が出せる。

  • 動物虐待

サンタの所業はクリスマスの夜、その数時間のうちに行われている。しかも、その数時間のうちに全世界を回るのであれば、トナカイにかなりの過酷な労働をかせていると推測される。これは、動物虐待の罪にとられる可能性がゼロではない。問われた場合、一年以下の懲役または100万円以下の罰金がかせられる。

サンタは自分の工場で無許可であらゆる物を製造し、故意に著作権に違反しているので、10年以下の懲役または100万円以下の罰金にかせられる。

  • 航空法違反

航空法第11条によると、「航空機は有効な耐空証明を受けているものでなければ、航空の用に供してはならない」とされていて、耐空証明をおそらく受けていないであろうソリは当然違反の対象となる。また、航空法第79条によると、「航空機は、陸上にあっては飛行場以外の場所において、離陸し、又は着陸してはならない」とされ、1日に何度も離着陸していると思われるサンタは故意にこれらの違反をしている。
ちなみに航空機とは日本の航空法では「人が乗って航空の用に供することが出来る飛行機、回転翼航空機、滑空機及びひこう性そのほか政令で定める航空の用に供することが出来る機器」とされている。ソリはサンタを乗せて空を飛び回っているが、ソリが機器か?と言われると戸惑うところがあるので、実際に捕まえて空を飛べる要因を調査する必要があると思われる。

ベルの音を異常に大きくして静穏を害し近隣に迷惑をかけた場合や、日本など煙突の少ない国においてはサンタは一般的に表から屋内に入る手段としてピッキング道具で開錠して侵入していると考えられるので、その場合の特殊開錠用具の所持の禁止などに関する法律によって軽犯罪法に違反している可能性がある。


このように、サンタは不法に家に侵入して、どこで入手したかも定かではない製造方法に従って故意に著作権を侵害し製造したプレゼントを靴下に入れるために、あたりを物色して靴下を探す。そして、靴下に入れた後、自分が来たという痕跡をなくすために指紋などを拭き取り、その豊満な体をソリに乗せトナカイに過酷な重労働を課して、無許可で夜の空をベルを鳴らしながら飛行していく。
http://yaplog.jp/cv/rochirico/img/219/xmas09-01_p.jpg


そして、サンタは平然とこれらの行為を世界規模で、国境を無断で渡り、不法入国をしながら何万・何億回と繰り返す。つまり、サンタは全世界で不法侵入を犯しながらも一切の痕跡は残さず子供を限定に違法に製造した物を渡し、しかも見たこともないとされる非常に理知的な国際犯罪者だと言える。ただ、サンタの本当にすごいところはここではない。

巨万の富を得たサンタ

100年前シカゴの暗黒街の大ボスとして恐れられていたギャング、アル・カポネも最終的には警察に捕まった。にも、関わらず、同時期いやそれ以上に昔からアル・カポネよりも国際的に大規模な犯罪を犯してきているサンタは一体全体なぜ捕まらないのか。

サンタは大多数の犯罪を犯しているが、たとえ世界中のどの警察機関に「サンタに不法侵入された」と被害届を出したとしても、おそらく警察は調査には乗り出さないだろう。
この根拠からある仮説を立てた。

サンタは警察機関に多大な資金援助または、買収しているために警察がてを出せない

以上の仮説によると、サンタは何らかの方法によって巨万の富を得た世界的大富豪だと推測出来る。お金には代えられない夢を配るサンタにとって人を買うことは簡単な事なのかもしれない。

サンタはなぜ見つけられないか

警察に行ってもサンタの調査には乗り出さないことから、富豪かなといったちょっとした結論には至ったかが、そもそもなぜサンタは誰にも見られることなく全世界で犯罪を実行できているのか。

サンタ不可視説

近年では世界の技術も進化をしていて、以下のような光学迷彩を実現できている。
gigazine.net

irorio.jp

またこういった光学迷彩だけでなく、人にとっての透明は「可視光線全域の光を透過」すればいいので、そういった方面での研究も進んでいる。らしい。いろいろと研究段階ではあるが、著作権を堂々と侵害しながら製造し続ける超巨大工場を持つサンタにとって、これらの技術を応用して、光学迷彩マントを作ることは可能かもしれない。そうすれば、完全な不可視化は不可能だとしても、暗闇で見えなくなるには十分な不可視効果が得られるだろう。

しかし、果たしてこれがサンタが誰にも見られたことのない理由だろうか・・・否!
確かにこの最新技術における不可視化は可能で、実査にサンタが自作した光学迷彩マントを使っている可能性が無きにしもあらずだが、1000年前近くからの存在が確認されているサンタが一度も見られていないということは、昔からも見られていないことを考慮しなくてはならない。そのため、この光学迷彩説は捨てざるを得ない。

サンタ原子説

ここではじめの フランシス・チャーチの話を思い出して欲しい。

「サンタは見えないが、それがそこに居ない証拠にはならない・・・愛は見えないが存在する・・・(ry」

つまり、サンタは見えないが、確かにそこにいる・・・のです!これだけでは分かりづらいので、例を挙げてみます。

あなたの目の前には空気があってそのうち20%は酸素ですが、あなたはその酸素を見ることが出来ますか?もちろん出来ませんよね。(もし、見えたらヤバスですね)何故かって、人間には肉眼でき見ることの出来る最低限の大きさがあって、それ以下は見えません。しかし、実際にそこには酸素が存在する。

これをサンタに置き換えると、サンタは原子並みに小さい といえます。


前述しましたが「誰も」サンタを見たことがないのです。けれども、この「誰も」という表現はあくまで人間主観の考え方であって、顕微鏡で詳しく調べれば見ることが可能です。だからと言って、今まで空気中の微細なサンタクロースの存在を確かめた人はこの世にはいません。このようなことから、サンタクロースは今まで一切の人間に肉眼で見られることなく不法侵入を繰り返せたわけです。
また、サンタは自ら指紋を拭き取っているのではなく、あまりに指紋が小すぎて今の技術では検出できなかったり、どんな家でも隙間風が入るようにサンタはピッキングでわざわざ開錠することもなく、平然と不法侵入できていたのです。

砂粒サンタ

そうすると、サンタの全長はどのくらいなのか。
http://blog.digital-lemon.com/images/santaclaus2011_2.png


肉眼の限界 > サンタの全長 > 最小単位、原子の大きさ
0.01 cm   > サンタの全長 > 0.00000001cm

となる。最小の砂の定義が1/16mm、つまり約0.006cmなので、肉眼に見えないことを考慮すると、一番大きくてもサンタは砂一粒並みの大きさということになります。これで、この1000年間にサンタが誰にも見られなかった、見えなかった疑問が解けました。しかし、これによって新たな問題が生じた。

そもそも、砂粒サンタ一人で全世界に不法侵入が可能なのか。

仮に子供が寝静まるであろう23時から翌6時までの7時間の間に地球1周(40000km)を移動することを考える。そうすると、砂粒サンタは約1400m/s(マッハ4)で動く必要があります。これは、相対的に静止している砂粒サンタが風速1400m/sの風を受けているようなもので、この条件からこの速さで移動する砂粒サンタにかかる力を計算してみる。

風荷重 ( kg・f / m^2 )  = 1/16 x V^2
この式に1400m/sを代入すると、風荷重は約12000(kg・f/m^2)となって、これは約1180(N/m^2)に等しい。次に砂粒サンタの大きさを求める。計算を簡略化するために砂粒サンタは直径0.006cmの円とする。すると、移動する時にあたる面積Sは0.000000011304(m^2)となるので、移動中に砂粒サンタが体に受ける圧力は約1045^11Nとなります。これは仮に砂粒サンタの体重が0.1gだとしても、砂粒サンタが体に受けるGは1066x10^11Gとなります。

以上適当に概算すると、この砂粒サンタは移動すると10^13Gくらいが体にかかっておそらく移動した瞬間にサンタは消し飛んでしまいます。戦闘機の旋回でさえ最大9Gしか掛からないのに、生身の人間が9Gに耐えるためには訓練や耐Gスーツなどが必要なことを踏まえると、この砂粒サンタの非人間さが伺えますね。「さすがサンタ!」って感じですが、サンタの形を円や球でなく人型にすれば、少し小走り程度で走っても、一瞬で手足がもげて・・・と無残なことになってしまう。さらに、高速で動くことで前方の空気が圧縮されて超高圧になるので、それと共に温度が上昇します。約1400m/sで移動すると、前方の空気は約15気圧に圧縮されその時の空気の温度は540℃までに上昇する。衣服の発火温度が500℃〜600℃なので、あのサンタの服は耐熱仕様なんでしょうね。

以上、延々と砂粒サンタが単独で世界中にプレゼントを配布していたなら・・・という仮定でサンタのステータスについて考えてみたが、どう考えてもスーパーサイヤ人の何億倍くらいの超人になってしまう。「サンタは実はちっさくて超人だった」ではしっくりこないので、サンタ単独犯説は捨てることにする。

国際的犯罪組織

先ほどのサンタのステータスはサンタが一人でごく限られた時間に世界中を回る必要があったために求められたステータスで、ようはサンタが複数人いればさきほど並みのステータスは求められない。つまり、サンタは実は単独犯ではなく、世界規模の犯罪組織の一員であったのだ。1molが原子6.02x10^23個で空気中1Lに22.4molの分子が存在するように、サンタも1立法メートルあたりに何人いるかという表現が正しいと思われる。そうすれば、代替的な移動も必要なしに毎年自分の担当する範囲の家に不法侵入するだけの話で済む。

まとめ

さて、このように『サンタ』とは

世界中の警察機関を買収できるほどの金を持つ組織で1立法メートルあたりに数人といった割合で存在する原子大のスナンタ(砂+サンタ)の大規模集団

という結論に達した。
そして、サンタは日々いろいろな場面で被害にあっている。砂粒ほどの微細のサンタは主に大気中に浮遊していると考えられ、人間の呼吸の吸引による被害や、酸性雨による溶解などが原因で常に個体数は減少していると思われる。この自然によるサンタの検挙が世界的犯罪組織の撲滅につながるのだろう。


「壁|д゜)あっ!・・・今サンタ吸いませんでした?」

バナナはおやつに入るのか。

概要

昔からよくされる質問の一つ。大抵小学生の遠足とかで目立ちたがり屋の子が先生があいまいな答えしか持っていない事を知っている上で、自己主張をするためにこれを質問する。そんな質問『バナナはおやつに入るのか』について、個人的見解を述べていく。

仮定:

*ただし、先生が生徒に対して言う「おやつは300円まで」というルールは絶対で、万が一金額をオーバーしてしまった場合は、止むを得ず全没収する事とし、ルールには必ず意味があるとする。

はじめに

そもそもバナナとおやつの定義はどうなっているのか。

バナナ: 

果実を食用とする品種群の総称。またその果実の事。いくつかの原種から育種された多年草

おやつ: 

午後2時頃に食べる間食の事をさす。栄養補給の意味合いから糖質や炭水化物が主体になりやすい傾向がある。

上記の事から、"おやつ"は糖質・炭水化物が主体となっている事に注目して、一般的に人々から"おやつ"と認識されているものとバナナを比較してみる。比較した結果は以下のようになった。

糖分(g) / 100g 炭水化物(g) / 100g
バナナ 12.23 22.84
チョコレート 36.71 52.42
キャラメル 78.26 78.26


例が少ないが、この表からはバナナが"おやつ"に属するとは言い難い。しかし、完全な"おやつ"という定義が決まっているわけではないので、これは一旦保留にする。

弁当の定義

いきなり話が変わって弁当の定義を一応定めておく。一般的に遠足に行く時に、先生は「おやつは300円まで」というルールに関して、"おやつ"の規制は300円までと決まっているが、弁当に関するルールは言わない。ここで、仮に弁当箱に入っている食べ物全てを"弁当"とみなすとする。すると、いくらおやつを買ったとしても弁当箱に入れてしまえば、それは"弁当"となり、"おやつ"としてカウントされなくなってしまう。しかし、これでは「おやつは300円まで」というルールに意味がなくなってしまい、上記に定めた赤字のルールに反する。
よって、今回は弁当の中に入っている物が全て"弁当"とする、は偽とする。

バナナと"おやつ"の相違点

ところで、バナナと"おやつ"の違いはなんだろう。糖分、炭水化物の量による違いは見られたが、それ以外に今回思いついた違いをあげていく。

  1. バナナは果物であって、保存性に乏しい(腐りやすい)。
  2. 基本的に放送されている"おやつ"に対して、シールを剥がしてしまえばバナナがどこ産なのかがはっきりしない。(300円のバナナを100円と偽装できる可能性あり)
  3. 基本的に"おやつ"が定価なのに対して、バナナに限らず果物・野菜の値段は気象条件に左右され、変動する。

以上、あげた3つを違いとする。

ルールの絶対性

始めに提示した仮定に従うと、先生の「おやつは300円まで」というルールに対して、"おやつ"が300円をオーバーすると没収するとしている。ここで、"おやつ"の合計が301円で、これを許容してしまうと「おやつは300円まで」というルールが意味を持たなくなってしまうので、先生は確実に"おやつ"の合計を検証しなければいけない。しかし、遠足などの現場を想像してみよう。全生徒が先生に買った"おやつ"のレシートを提出し、計算しているか・・・と問われると、実際そうではないだろう。ならば、先生はどうやって"おやつ"の合計金額を計算しているのか。

おそらく目算である。

先生はあらかじめ生徒たちが買いそうな"おやつ"の定価を調べておき、当日その記憶と照らし合わせて目算を行っていると推測される。そうして、先生は遠足の時間にそれとなーく1人1人の生徒に話しかけるていで近づき、"おやつ"の合計金額を目算し、ルールを破った物には全没収という罰を与えているのだ。

しかし、ここで生徒が"おやつ"として、プリキュアシール付きガムを買ってきたとしよう。これには先生は非常に困惑することだろう。先生は暗記していない商品の定価がわからないことに加え、はたしてプリキュアシールを"おやつ"として見なしていいのかどうかも判断しなければならない。プリキュアシールを教育の場に不必要なものとし、没収してしまうのか。ただその場合に、没収したプリキュアシールの分だけ定価から減算して計算すべきか、悩ましいところだろう。

あいまいな目算

今、上で述べたような非常にあいまいな目算は先生の立場からして避けたいと考えられる。これはプリキュアシール付きガムと同様にバナナにも言えることである。
価格が気象条件によって変動しやすい果物系のバナナは買った時点での定価と、遠足当日の定価との差が生まれる可能性がゼロとは言えない。つまり、生徒がバナナを100円で買ったというレシートを持った状態で当日バナナを食べていたとしても、産地で豪雨が発生して、一気にバナナの価格が高騰・・・遠足当日には同じバナナの定価が120円になっている場合が考えられる。
この場合、もし現時点で120円の価値のあるバナナを100円の価値と認めるのは不当であって、もしこれを認めてしまえば以下のような事例が発生してしまう。

本来の価値が30円の"おやつ"を友達から10円で買うことがルールに反しないことになるので、"おやつ"を大量に遠足とは無関係という名目で買い、友達同士でそれを『買う』のではなく『無償であげる』としてしまえば、「おやつは300円まで」に意味がなくなってしまうので、これを認めてしまってはならない。

結論

以上のことから、バナナなどの果物・野菜は先生にとって目算の敵であり、遠足当日での定価がはっきりしない点で"おやつ"と認めたくない理由が存在することがわかった。他にも、バナナから産地のシールを剥がしてしまえば、そのバナナがどこ産のバナナかを特定しずらく先生がそのバナナの現時点での定価を調べるさいの時間ロスなど、面倒な点が挙げられる。また、生徒にとっても価格が変動するバナナはリスキーであり、それらを踏まえた上で

生徒から「バナナはおやつに入るのか」という質問に対して、先生は

『気象条件にとらわれず、常に定価で販売するメーカーを見つけ、なおバナナ本体にその産地がしっかりと記載されているという条件下でなら"おやつ"に入る。ただし、万が一、定価が変動して"おやつ"の合計金額がオーバーしてしまった場合の一切の責任は本人が負うことになります。』

というのが一番、妥当な答えなのだろう。以上、個人的な見解でした。

東海の学生エンジニアでゆる〜く勉強会わず

こんばんは。
今日は伏見のコワーキングスペース:アライブで10:00 ~ 18:00の間、東海の学生エンジニア5人でゆる〜く勉強会をしてきました。特に目標はなく各自好きな勉強をやりながら楽しく話そうよ!的な感じで楽しく勉強してきました(^o^)

普段はRailsを用いて簡単なWebアプリ開発を行っていたのですが、今まではローカル開発環境でデータベースも初期設定のsqlite3のまんま。フレームワークの優しい優しい環境に頼りきりで少し書いていた程度だったけど、先週のハッカソンで全く手を触れてこなかったサーバーサイドを触ることに。。。『やばいっ...サーバとかデータベースの知識すら一切ない...』

こういった経緯もあり、今日はとりあえずRailsMySQLにデータベースを設定する方法と、Herokuでデブロイする方法を勉強してました。grapesというgemを使えばWebAPIも簡単?に設計できそうだから、とりあえずサーバー周りを勉強してからAPI設計の勉強って感じでこれから勉強していきたいですね。それと並行でSwiftも勉強して...という流れが理想な感じ。

とりあえずこれが個人的にはわかりやすかった。
MySQL用のデータベース設定ファイル(database.yml)
Ruby on RailsでMySQLを使用する際に必要な作業手順
設定をMySQLに変更しただけだから、恩恵を特に感じなかったから正直これから使うかはわからないけど今度のインターンMySQLを慣れとけって言われたから触ってみた😅

そのあとherokuでRailsで作ったアプリをデブロイする方法をいろいろ検索してたけど、結局個人的にはドットインストールが一番わかりやすかった笑
あとこれが分かりやすそうだったから、
herokuでRailsアプリを公開する手順をゆっくり丁寧に。

正直サーバー周りはさっぱりで今日1日ひたすらいろんなサイト見てたけど、わかった感じ全くなくてサーバー周り辛すぎーって感じたけど、とりあえずRailsアプリをデブロイする方法はなんとなくわかったから今後何かしら適当にアップしたいなーって感じです。
っていう今日の日記でした‼︎

Rubyのclockworkを使って為替情報を定期的に取得

noob-programmer.hatenablog.com
前回、為替情報を取得したので、もうちょっと有用性をもたすために、定期取得を実装してみました。定期実行っていったらRubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例に書いてあったcronが一般的なのかなって思って使い方調べてみたらRubyにはclockworkっていうgemがあるみたいで、使いやすそうだったので、今回はこれを使いました!

gem install clockwork

で入れると、簡単にいれれて、実行例は

この検索上位に出てきたサイト2つを参考に。っていっても、思ったより簡単でした。clockworkの中身は一切見てないので詳しい実装方法はよくわかんないですが、基本的にはこれで動くようです。

#clock.rb
require 'clockwork'
include Clockwork

every(5.minutes, ' ') do
  #ここに5分おきに実現したい処理を書く
  puts "5分おきに処理されてまっせ"
end

以上!こんだけです。こんだけで、5分おきになんらかの処理をしてくれるコード出来上がり。恐ろしく簡単でした。実行方法は

#ruby clock.rbではなくて
$ clockwork clock.rb

で実行可能です。ただこれだけでは、端末を終了すると、定期実行と言っておきながら、中断されてしまうので、バックグラウンドで実行させるためにnohupコマンドと & を使います。

$ nohup clockwork clock.rb &

で実行できて、中止したいときは

$ ps -x | grep clock
$ kill [プロセスID]

でできるそうです。nohupコマンドは実行すると出力内容は全て、カレントフォルダ上にnohup.outというテキストファイルができてそこに保存されているはずです。

詳しい記法は下のサイトで確認してみてください。
tomykaira/clockwork · GitHub

ということで、以上の実行例をもとに前回のプログラムを改良してみるとこんな感じになりました。

require 'open-uri'
require 'json'
require 'clockwork'
include Clockwork

every(5.minutes,'fx-rate') do 
	html = open('http://www.gaitameonline.com/rateaj/getrate').read
	json = JSON.parse(html)['quotes']
	#ある時間帯の為替情報を国ごとに取得
	now = Time.now.strftime("%Y/%m/%d %H:%M:%S")

	#各データのテキストに書き込む。
	json.each do |data|
  		filename = 'fx-rate/' + data['currencyPairCode'].downcase + '.txt'
  		File.open(filename,'a') do |f|
  		#f.puts "日時,高値,安値,始値,ASK,BID"
  		f.puts "#{now},#{data['high']},#{data['low']},#{data['open']},#{data['ask']},#{data['bid']}"
  		end  
	end
	puts "#{now}に取得完了"
end

中身は全く変わってなくて、為替取得した時のプログラムをevery(5.minutes, 'fx-rate') do ~~~~ endでかこっただけ。 中身の処理も前回みたいに出力するだけじゃなくて、5分おきに為替情報を取得するために、各通貨ペアごとのtxtファイルに為替情報を追加していく感じにしました。
これを

$ nohup clockwork clock.rb &

で実行して、いまこの記事書いてる最中も実験で実行しているとこです。これで試験的にデータを1日分集めて、実際に今度はグラフにでもしてみよっかなーって思ってます。ではでは

Rubyで超簡単に為替取得してみた

こんにちは。
Fxを去年の10月から始めていて、それなりに山(黒田バズーカーとかとか)を乗り越えてきて今に至る身なんですが、Rubyを勉強し始めたことだし、せっかくだから機械学習かなんかでシステムトレード的な予測システムを作ってみたいな!って思ったので、とりあえずはデータの取得方法を考えなくてはってことで為替取得してみました。

色々調べてみると、

といったブログが出てきたのでこれらを参考に、一番最適そうな取得方法を考えてみました。xcurrencyってやつは使いやすそうですたが、1日10回までらしくデータが少ないのなんのってことで却下。Googleファイナンスから取得するのもいいけど、一つずつURLを指定しなくちゃいけなくてめんどそうってことで却下。今回は一気にいろんな通貨を観れるこいつに決めました。

http://www.gaitameonline.com/rateaj/getrate

これがサイトなのかよく分かりませんが、常時最新の為替を表示してくれているような便利なサイト?だったので、こいつに決めた!実際に、正規のFxトレード会社の為替データとリアルタイムで見比べても1銭程度のズレはあったもののある程度正確そうでした。
このURLからHTMLを取得してみると明らかにjson形式だったのでJSONでパースしまくりんぐ。
ちなみに取得データはこんな感じ

puts JSON.parse(open(url))
 #=>
{"quotes"=>[{"high"=>"2.0089", "open"=>"2.0051", "bid"=>"2.0030", "currencyPairCode"=>"GBPNZD", "ask"=>"2.0047", "low"=>"1.9998"}, {"high"=>"99.35", "open"=>"99.28", "bid"=>"99.11", "currencyPairCode"=>"CADJPY", "ask"=>"99.16", "low"=>"99.05"}, {"high"=>"1.9407", "open"=>"1.9284", "bid"=>"1.9119", "currencyPairCode"=>"GBPAUD", "ask"=>"1.9128", "low"=>"1.9099"}, {"high"=>"95.03", "open"=>"94.12", "bid"=>"94.94", "currencyPairCode"=>"AUDJPY", "ask"=>"94.97", "low"=>"93.54"}, {"high"=>"1.0480", "open"=>"1.0393", "bid"=>"1.0473", "currencyPairCode"=>"AUDNZD", "ask"=>"1.0483", "low"=>"1.0358"}, {"high"=>"1.3494", "open"=>"1.3479", "bid"=>"1.3480", "currencyPairC...

こいつを一気に出力されるとこのようなプログラムになった。

require 'open-uri'
require 'json'

html = open('http://www.gaitameonline.com/rateaj/getrate').read
json = JSON.parse(html)['quotes']
puts Time.now.strftime("%Y/%m/%d %H:%M:%S")
json.each do |data|
  puts "通貨:#{data['currencyPairCode']} 最高値:#{data['high']} 最安値:#{data['low']} ASK:#{data['ask']} BID:#{data['bid']} 開始値:#{data['open']}"
end

驚いたことにたったこんだけ、これでこのプログラムを実行した時点での各通貨の為替データが出力できました。ただし、このサイトには時間は載ってなかったので、スクレイピングした時の時間も一緒に出力。ちなみに出力結果は以下のような感じになった。

2015/05/05 14:58:52
通貨:GBPNZD 最高値:2.0089 最安値:1.9998 ASK:2.0100 BID:2.0083 開始値:2.0051
通貨:CADJPY 最高値:99.35 最安値:99.05 ASK:99.10 BID:99.05 開始値:99.28
通貨:GBPAUD 最高値:1.9407 最安値:1.9099 ASK:1.9167 BID:1.9158 開始値:1.9284
通貨:AUDJPY 最高値:95.03 最安値:93.54 ASK:94.78 BID:94.75 開始値:94.12
通貨:AUDNZD 最高値:1.0481 最安値:1.0358 ASK:1.0489 BID:1.0479 開始値:1.0393
通貨:EURCAD 最高値:1.3494 最安値:1.3472 ASK:1.3492 BID:1.3485 開始値:1.3479
通貨:EURUSD 最高値:1.1151 最安値:1.1123 ASK:1.1131 BID:1.1130 開始値:1.1147
通貨:NZDJPY 最高値:90.73 最安値:90.32 ASK:90.41 BID:90.35 開始値:90.52
通貨:USDCAD 最高値:1.2119 最安値:1.2082 ASK:1.2121 BID:1.2115 開始値:1.2091
通貨:EURGBP 最高値:0.7372 最安値:0.7356 ASK:0.7361 BID:0.7357 開始値:0.7370
通貨:GBPUSD 最高値:1.5128 最安値:1.5107 ASK:1.5127 BID:1.5124 開始値:1.5117
通貨:ZARJPY 最高値:9.901 最安値:9.877 ASK:10.033 BID:9.883 開始値:9.884
通貨:EURCHF 最高値:1.0417 最安値:1.0402 ASK:1.0416 BID:1.0411 開始値:1.0409
通貨:CHFJPY 最高値:128.71 最安値:128.25 ASK:128.36 BID:128.31 開始値:128.52
通貨:AUDUSD 最高値:0.7917 最安値:0.7784 ASK:0.7894 BID:0.7892 開始値:0.7836
通貨:USDCHF 最高値:0.9361 最安値:0.9329 ASK:0.9358 BID:0.9354 開始値:0.9337
通貨:EURJPY 最高値:133.96 最安値:133.56 ASK:133.66 BID:133.64 開始値:133.85
通貨:GBPCHF 最高値:1.4150 最安値:1.4105 ASK:1.4156 BID:1.4147 開始値:1.4116
通貨:EURNZD 最高値:1.4798 最安値:1.4726 ASK:1.4791 BID:1.4779 開始値:1.4780
通貨:NZDUSD 最高値:0.7554 最安値:0.7519 ASK:0.7531 BID:0.7525 開始値:0.7535
通貨:USDJPY 最高値:120.19 最安値:120.02 ASK:120.07 BID:120.06 開始値:120.14
通貨:EURAUD 最高値:1.4276 最安値:1.4058 ASK:1.4106 BID:1.4098 開始値:1.4219
通貨:AUDCHF 最高値:0.7403 最安値:0.7282 ASK:0.7387 BID:0.7381 開始値:0.7316
通貨:GBPJPY 最高値:181.74 最安値:181.47 ASK:181.63 BID:181.60 開始値:181.65

これである時間における為替データを取得できたので、こいつを使って何日か分のデータを数分おきに取得したいけど、たしか

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

に書いてあった気がするから、また読み直して使ってみよう。今回使ったサイトは詳しくはわからないけど、1分おきくらいに更新されていたので、間隔を秒単位にすると変化してないかも。あと、スクレイピングはほどほどに

2015年公開の大作ハリウッド映画やゔぁい

今年は大作映画の続編とかが公開するので、色々楽しみです^^
てなわけで、自分の整理用にここに見たい映画をまとめます。

  • 7月4日 『アベンジャーズ/エイジ・オブ・ウルトロン』


デレクの予告:映画『アベンジャーズ/エイジ・オブ・ウルトロン』 予告編3 - YouTube

アベンジャーズの続編で今回も色んなアメコミヒーローが登場する人気作で迫力はおそらく満点!映画館で観る価値あり!ただ、そこまで求めないけど、脚本的にはトニースタークが作ったロボットが暴走して世界を破滅に追いやりそうだから俺たちがなんとかしなきゃ⁉︎みたいな「はぁ?知るかよ」的なストーリーらしいです。予告編を見る限り。先日映画を観に行った時に、予告編が劇場で流れてやっぱ規模が違うなーってw
ロボットも厨二心をくすぐる作りでターミネータなんかより断然かっこよかったので、これは見るしか


映画『ターミネーター:新起動/ジェニシス』第2弾予告編 - YouTube

待ちに待ったターミネーターの続編!ってバイオハザードの続編と同じくらい待ち遠しかった作品だけど、最近のターミネーターバイオハザードはえっ?って感じが強すぎてなかなか愛着わかないw
個人的にはターミネータもバイオハザードも2が最高作品だと思ってて、しかも今回のターミネーターは2のオマージュってか液体金属野郎再びってもろパクリじゃないか!?って思ってます。みたいですけど笑
ただ、未来過去行ったり来たりする作品のせいか続編の度にキャストが丸代わり。やっぱ愛着わけないですよー

  • 8月7日 『ミッションインポッシブル/ローグ・ネイション』


映画『ミッション:インポッシブル/ローグ・ネイション』ティザー予告映像 - YouTube

スパイ映画の金字塔!って言ったらさすがに言い過ぎ感あるけど、007の方が世界観好きだし。。でも、あの音楽といい、毎回出てくるかっちょいいスパイ道具といい、現実味はなくても厨二心をくすぐるのが上手すぎる作品。予告編観る感じイーサンだけじゃなくて、周りのチームも前作と同じなので楽しそう。絶対みよっと。

  • 8月7日 『ジュラシックワールド』


映画『ジュラシック・ワールド』第1弾日本版予告編 - YouTube

映画の設定的に1作目から22年後の世界で、これはジュラシックパークから22年後の今年にジュラシックワールド公開を意図した設定らしくそこに感銘受けるよりもうそんなに経ったのか!って感じ。と時代の流れにショックを受ける20歳です^^
ジュラシックパークは個人的に迫力だけじゃなくて、脚本も好きで専門まで言ったらこんな再生技術はまだまだ現代じゃありえねーとか化石からじゃ無理だボケとか思われているかもですが、にわか理系野郎からしたら、設定が理系チックなだけにちょっと興奮ぎみ。ジュラシックパーク以上に多種多様な恐竜を登場させてたり、あの孤島のジャングル感とか映像美も楽しみ。

  • 12月4日 『007 スペクター』


『007』最新作の映像公開!『007 スペクター』特報 - YouTube

ダニエルクレイグかっこいい‼︎なんか興奮度合いを書くのが疲れてきました。。正直ミッションインポッシブルよりこっち押し。ダニエル推しメン。


映画『スター・ウォーズ/フォースの覚醒』特報第2弾 - YouTube

2015年後半だからまだ半年あるけど、楽しみ!とりあえず、スターウォーズ復習しとこっと。



こんな感じで超大作の続編がどんどん公開される2015年に期待大!
ただ、マトリックスのあの兄弟監督の最新作『ジュピター』とかあの予告編の映像美感やべー!ってテンション高めで見に行ったら、これまた気分害する人がいるかもしれない批判だらけで申し訳ないけど...
せっかく宇宙が舞台で街の近未来感とか細かく作り込まれててもっと世界観も楽しみたかったのに、ジュピターすぐに爆破されたりして、映像美の無駄遣いって感じがしちゃいましたw あと、飛行船1機つっこんだだけで、崩壊するジュピターはもろすぎでしょw内容的に続編あるんだろうなって感じ。批判しときながらもちろん見に行きますっb

映画の予告編で最近よく観る『進撃の巨人』の実写版にも少しながら興味があるけど、この予告編見る限り邦画ということもあって、正直予告編で巨人が出てるシーンをちょろちょろ出してるけど、本編ですらそれぐらいしか巨人が出てくるシーンないんじゃねぇの⁉︎っていう不安感あり。見てみたいけど。


「進撃の巨人」予告 - YouTube

バイオハザードの続編も期待だけど、あの監督&ミラジョビッチ夫婦がずっこんばっこんして妊娠休暇なうだから次作はいつになるのだろうか。この前も産んでなかったっけ?