そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

『アオイホノオ』感想、エンジニア的に共感できて面白いやら痛いやら

昨年にはドラマ化され、柳楽優弥の怪演でも話題になった本作。

かくいう僕も再放送で後発ながらハマったくちで、原作漫画も全巻買い集めていたりする。

アオイホノオ(1) (ゲッサン少年サンデーコミックス)

アオイホノオ(1) (ゲッサン少年サンデーコミックス)

先日リリースされたAmazonプライムビデオのラインナップにドラマの方が入っているので、 暇を見つけては観なおしたりしている今日この頃。

第1話

第1話


さて本作は何が面白いかといえば、 オタク的なウンチクやら熱血マンガ的な暑苦しいリアクションやらももちろん魅力ではあるんだけども、 個人的には職業観みたいなとこで共感できて楽しいような痛々しいような気分にさせられる。

続きを読む

Dockerでデータ可視化環境をサクッと用意する

先週に引き続きBitcoin関連で週末コーディング。

blue1st.hateblo.jp

取引アルゴリズムを考える前に、とりあえずは可視化(と仮説の検証)が必要だろうということで。


ポート管理やら各種パスやら環境変数やらに煩わされたくない怠惰系のアプリケーションエンジニアとしては、 この手のツールがDockerで用意されてると簡単に試せて本当に助かる。

以下Docker Compose導入後という前提で。

blue1st.hateblo.jp

続きを読む

ビットコイン取引所BTCボックスのAPIを叩くgem作った

ここのところエンジニアっぽいエントリなかったなー&たまにRuby使っとかないと忘れちゃうなーということで。

github.com

最終的には自動取引とかやってみたいけど、ひとまず第一段階としてAPIを一通り叩けるもの作ってみた。

続きを読む

Bitcoin市場の値動きをチェックするHubotスクリプト書いた

最近はslackチャンネル作って、自分専用のタイムラインとして活用してたりする。

todoリストや備忘録としてはもちろん、Hubotのボットを駐在させて対話的に仕事させて遊んだりしている。


そんなわけで最近作ったのが、Bitcoinの値動き監視するスクリプト。

github.com

まだ体裁整えたりnpmに登録したりしてないけども。

cronでの通知先ルームがgeneral決め打ちだったりね

続きを読む

最近気になった技術ネタ

ここのとこ忙しくて、興味あることもやりたいこともいっぱいあるんだが全然消化できてない・・・


OSの通知センターにRubyからメッセージを投げる

前回紹介したterminal-notifierには、Rubyから使えるterminal-notifier-guardというのがある。

github.com

そんなわけでRubyの勉強も兼ねて

あたりを使ってはてなブログの当日のアクセス数を取得して通知するツールを書いてみた。

github.com

で、ツール自体は一応予定通り動きはしたんだが一つ誤算。

OSXてデフォではcron動いてないんですな。

定期的にコマンド叩かせようと思ってたんだけど、正攻法でlaunchdを記述するにしろ無理やりcron動かすにしろ面倒くさそう。

そのうち定時実行の仕組みを内部に含む形に書き直そうと思う。


Disque

会社のツールではRedisをジョブキュー的に使ってたりもするんだけど、どうやらそのRedisの作者がまさにジョブキュー用のプロダクトを作成してるっぽい。

github.com

qiita.com

そのうち試してみたい。


Electron

Visual Studio Codeで使われていることでもお馴染みElectron

今のところ紹介記事をなぞって動かしてみた程度だけど、本業のウェブ系のスタイルでデスクトップアプリが開発できるのはそこはかとなくワクワク感ありますな。

electron.atom.io

qiita.com

プラットフォーム・ブラウザ間での差異を気にしないでも済むので、例えば管理画面なんかでも使い勝手良いんじゃないかって気がする。


サブドメインワイルドカード指定

新しいのを立ち上げるたびに/etc/hostsを追記するのは面倒くさいし、かといってプライベートでDNS立ち上げるのもなーと思っていたけど、そういえばこの手がありましたな。

qiita.com

クライアントの数が少ない分にはこれが一番楽かもしれん。


bacon.js

同僚におふざけでIQ145本を貰ったんだけど、関数型プログラミング以前に論理展開が飛躍しすぎてついていけないし文章的にも厳しいものを感じて放置気味・・・

本自体はアレなんだけど「じゃあ実際のところ関数型プログラムてどういうの?」という興味だけは沸いたりはする。

qiita.com

さて、そんな中でキーワードとして目についたのがbacon.js

www.publickey1.jp

iQ145本ではなんでわざわざ配列でインプットする必要があるのかビタイチ分からなかった(「クール」とか言われましても・・・)のだけど、↑のスライドでスッと理解できたw

機会見つけて使ってみたい。


Heroku Docker

Heroku | Introducing 'heroku docker:release': Build & Deploy Heroku Apps with Docker

Herokuの'docker:release'の動き | SOTA

HerokuでDockerが動かせようになるの!?と思ったらそういうことではなくて、どっちかというとHerokuの環境を手元で再現できてそのままデプロイできる(=デプロイしてみたら何故か動かないという事態を避けられる)という感じらしい。


YAPC::Asia 2015

yapcasia.org

出不精マンなんでこれまで勉強会とかイベント事には関わってこなかったけど、今年で最後ということで思い切って個人スポンサーチケット買ってみた。

8月が楽しみ。

phantomjs-nodeでスクレイピングしてみる

藤井太洋氏の小説『アンダーグラウンド・マーケット』を読んで興味を持ち、仮想通貨ってやつをちょっとかじってみようということでBtcboxに登録してみた先週。

blue1st.hateblo.jp

「儲けたいぜー」というよりは「ちょっと遊んでみよう」というスタンスではあるけれど、それでも手持ちのコインが値上がりすると少しワクワクしますな。

BTCボックス|ビットコイン取引所

ヘルプによるとAPIが用意されているらしく、確かにサンプルの通りに叩くとそれらしい値が返ってくるが、どうもBitcoinだけが対象でより単価の低いLitecoinやDogdecoinについては見当たらない。

サイトを確認するかぎりスクレイピング自体を禁止する規約は無さそうだった(拾った情報を使ったウェブアプリとかになると流石にNGぽい)ので、各コインの現在の状況を取得できるスクリプトを書いてみた。


使うもの

以前はCasperJSを使用していたものの、あれらはNodeとは独立して動く仕組みなため、取得してきたデータを活用するには「外部コマンドの形で呼んで戻り値として・・・」とか「ファイルを定期的に吐かせて・・・」とか何かしらの歪曲的な手段が必要になる。

blue1st.hateblo.jp


そんなわけで今回はNodeからPhantomJS使えるようにするブリッジphantomjs-nodeを使用してみた。

github.com


また、Hubotのスクリプトを書いていてフィーリングが悪くなかったCoffeescriptを使用してみた。


導入

PhantomJS自体とCoffeescriptをインストールした上でnpm install phantom cheerioで今回使用するphantomjs-nodeおよびcheerioをインストール


記述

githubのReadmeを参考にCoffeescriptで記述する。

btcboxの各種値をスクレイピングするスクリプト。


引数として指定されたコインの種類のURLをpage.openで開き、取得してきたhtmlタグをcheerioに食わせてスクレイピングする。

phantomJSの説明は割愛。(一番上で挙げたエントリの方に書いた)

cheerioはjQueryを再実装したもの(らしい)で、つまり使い慣れたセレクタでhtmlの要素を取得したりできる。

よってChromeディベロッパーツールなんかで欲しい部分のタグを調べてそれを記述してやればよいのだ。


使用法

例えばLitecoinについて取得したければ・・・

$ coffee btcbox.coffee ltc
opened btcbox-ltc? success
価格 ¥169
高値 ¥172
安値 ¥169
売気配値 ¥169
買気配値 ¥168
出来高 668.244

てな具合。


Coffeescriptなんで当然のごとくコンパイルしてJavascriptにもできる。

$ coffee -c btcbox.coffee
$ node btcbox.js doge
opened btcbox-doge? success
価格 ¥0.0144
高値 ¥0.0145
安値 ¥0.0144
売気配値 ¥0.0144
買気配値 ¥0.0125
出来高 17756

今回のスクリプトだけだと特に何をするでもないけど、例えばこれをcronで動かしてストレージに貯めて長期的な値動きをみるとか自動取引に使うとか、何かしらのメッセージにより自分への通知として流すだとか、Nodeなんでそれなりに使いようはあると思う。


Coffeescript最初は目が慣れずに戸惑ったけど、書いていってみればなかなか合理的な文法で面白いですな。

Javascriptのコールバック無間地獄がかなり見易く書き易くなる。

コンパイルされたJavasciptも人間が読める記述になっているのは好印象。

AltJSはそんなに気乗りしなくてやるとしてもDartかなーと思ってたけど、これはちょっと始めてみても良いかなって気がしてきた。

つくって覚えるCoffeeScript入門

つくって覚えるCoffeeScript入門


追記

と、ここまでやってきて、Githubに同じくbtcbox関連のプロジェクトを見つけて読んでみたら、何か普通にltcとかdogeとかも扱えそうな雰囲気。

もしやと思ってAPIの後ろにcoinパラメータ追加してみたら取れた!

https://www.btcbox.co.jp/api/v1/ticker/?coin=btc

https://www.btcbox.co.jp/api/v1/ticker/?coin=ltc

https://www.btcbox.co.jp/api/v1/ticker/?coin=doge

そういうのあるなら書いといてよー・・・

ヘルプ


まあそれはそれとして、Node&Coffeescriptでphantomjsを扱えたので、例えばHubot越しにページのスクリーンショットを取得するとか、もっと複雑なことをさせるとかできるわけだ。

応用は効きそうである。

Hubotで定期的にはてブITカテゴリのホットエントリを呟かせてみる

何気に初Gist。

気が向いたらコピペで載せられるような手軽さが良いですな。

積極的に使っていきたい。


blue1st.hateblo.jp

会社でLet's Chat&Hubotを試し始めたということで、開発チームの話題提供用に定期的にはてブITカテゴリのホットエントリを呟かせるスクリプト書いてみた。

はてなブックマークのITカテゴリのホットエントリを定期的につぶやくHubotスクリプト。packag ...


↓の記事を参考にRSSを取得して、パースしてタイトルとURL要素から文章を生成して呟かせる。

syncer.jp


先日書いた感じにHubotを導入した上で、

  1. package.jsonにcron・xmljson・requestを追記
  2. 今回のスクリプトを適当にscriptディレクトリに放り込む

で準備完了。

指定した時間になったらつぶやいてくれる。

30件は流石にウザったいので個数減らそうかと検討中。



いちおうWeb系の端くれな割に全然Github使えてなかったので、↓の本買って目下勉強中。

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

積極的に使っていきたい。