BigQuery gem に contribute した

はじめに

今日は #bq_sushi tokyo #3 - connpass ですね

🍣は出ないそうですよ(笑)

bigquery を触り始めた

業務上必要があって良くわからないまま BigQuery gem 選択したが、想像以上に機能が足りなくて振り返ってみると結構 pull request していた

最初は慣れない英語でドキドキしていたけれどもなんとかなってしまった。やってみるものだなー

github.com

github.com

github.com

github.com

github.com

最終的には google-api-ruby-client の 0.9.3 対応というかなり大きな変更を送って「さすがにこれは取り込まれないだろう」とおもっていたらあっさり取り込まれて拍子抜けしてしまった

github.com

残念ながら少し bug が残っていて、他の人が fix した pull request を投げてくれているんだけど、別の変更も入っていてちょっと中途半端な印象。どうしたものかな… author もいまいち active ではないし。業務上でも google-api-ruby-client への replace が進んでしまってあまり必要では無くなってしまった感があるし

github.com

ちなみに 0.9.3 対応はまだ rubygems にリリースされていないです

おわりに

1月に部署異動してから新しい事にチャレンジさせてもらった

いろいろと周りに迷惑はかけていると思うけれど、辛抱強くサポートしてもらっていて本当にありがたい

頑張っていかなければ!

2015年の振り返り

はじめに

kysnm.hatenablog.com

今年は書きます!

イベントスタッフ

HTML5 Conference - html5j | Doorkeeper

nodeschool tokyo (東京Node学園 入学式) - connpass

NodeSchool International Day in Tokyo - connpass

次世代 Web カンファレンス - connpass

東京Node学園祭2015 - connpass

Go Conference 2015 Winter - dots. [ドッツ]

コアスタッフとして関わっていたのは 東京Node学園祭2015 と 次世代Webカンファレンス のみで後は当日スタッフでした

次世代Webカンファレンスはいろいろな人と関われて本当に楽しいイベントでした。声をかけてくれた @Jxck_ にはものすごく感謝しています

もうすっかりスタッフが板についてしまって「日本の勉強会を影で支える人」とかいじられたりしていますが、勉強会参加数は昔より減っていて、知り合いがいるような場所にしか顔を出さない傾向にあるかもです

東京Node学園祭2015 や RubyKaigi2015(参加のみ) などで海外の人達と触れる機会も増えてきてますます英語の重要性が高まっているので、来年はもっとコミュニケーション取れるように頑張りたい

今年は本当にコミュニティに関わってきた事がプラスになっていると感じる事が多かったので引き続き出来る限りの事はやっていきたいと思います

ちなみに勉強会参加数は 52(?) 程度でした。週一ペースぐらいですねー

転職

今年の1月に渋谷の某社に転職しました(残念ながら正規ではないです)
僕はあんまり長続きしない方なんですが、今の環境は結構満足していてまだしばらく続けられそうです

優秀な人が多くて有志の社内輪読会はすごく勉強になりました。また機会があれば参加したいです

kysnm.hatenablog.com

kysnm.hatenablog.com

来年からは自分の希望に近い条件下で今より少し業務的には難しくなりそうなんですが頑張って食いついていこうと思っています

LT

なんと今年は3回もやっていた!(え、少ない?はい、そうですね💦)

来年も少しづつやれたら良いなー kysnm.hatenablog.com

kysnm.hatenablog.com

kysnm.hatenablog.com

おわりに

今年関わったみなさまには感謝しております。一年間本当にどうもありがとうございました!

また来年もよろしくお願いいたします!!

Rails でも Server push に挑戦したい!

はじめに

qiita.com

このエントリは http2 Advent Calendar 2015 の 23 日目のエントリです

RubyKaigi の発表にて

@tenderlove による http2 関連の発表がありました。

Request and Response - RubyKaigi 2015

以前より彼が http2 を実装しているのは知っていたので、

kysnm.hatenablog.com

お願いしてサンプルアプリを教えてもらいました

途中経過

残念ながらまだサーバを起動することすら出来ません…

github.com

せっかくなので冬休みも利用して、気長に取り組んでいきたいと思います!

おわりに

アドベントカレンダーが空いていたので急遽書いてみました。
中途半端な状態ですが、こういう試みもあるんだなと知っていただければ幸いです

innodb_ruby のご紹介

はじめに

qiita.com

このエントリは Ruby Advent Calendar 2015 の 23 日目のエントリです

きっかけ

業務の関係でふと innodb の index の構造について詳しく知りたいと思って調べていたところ以下のエントリーを発見しました

blog.jcole.us

innodb_ruby はとても面白そうなのにマニアックすぎるのか、国内ではあまり紹介されていないのをもったいなく思い、ご紹介したいと思いました。

ちなみに RubyKaigi 2015 の LT の CFP にもこのネタで出して落選しましたw

注意事項

ざっくり試してみたところ以下の機能は今のところ壊れているようです

github.com

あとこの機能はドキュメントがないので使いこなすの難しそう

github.com

環境構築

以下のように faker 等を利用して dummy data を作る rake task 等を用意して

github.com

index は手動で貼りました (実験用なので適当です PERSON BOWING DEEPLY)

gist.github.com

主な機能

※ 理解が足らない部分があるかと思いますのでお気づきの点がございましたらご指摘いただけると幸いです

こちらに書かれているような機能があります

blog.jcole.us

ざっくりと記事と同じ事を自分で作った dummy data に適用してみました (mysql の data は手元にシンボリックリンクを貼りました。homebrew で入れた場合 /usr/local/var/mysql 以下にあるはずです)

gist.github.com

ファイルにリダイレクトしたものはこちらです (結構ファイルサイズが大きいので注意)

page-dump-without-describer.txt · GitHub

page-dump-with-primary-describer.txt · GitHub

page-dump-with-state-describer.txt · GitHub

index-recurse-with-primary-describer.txt · GitHub

page-dump の結果とか decode できると良いんだけどな…

おわりに

試してみた感想としてはやはり難しく、ドキュメントが足りていない気がしました

この辺のエントリーも面白そうなのでもう少し理解できるようになると良いなー

blog.jcole.us

この記事を見て innodb_ruby に興味を持ってくださった方がいろいろ試してくださってノウハウが増えると良いなと思います

RubyKaigi 2015 に参加してきた #rubykaigi

はじめに

rubykaigi.org

先々週の週末 12/11 〜 12/13 に開催された RubyKaigi 2015 に参加してきました とても充実した楽しい時間になりました!

参加したコンテンツ

Dec.11

※ ランチから戻るのが遅れて最初の方少し聞き逃した

Dec.12

Dec.13

動画ももう公開されているようですね!

www.youtube.com

飯テロ

ランチは築地が近かったので毎日海鮮丼 or 🍣でしたw

Dec.11

顔馴染みの @ppworks さんと Money Forword の皆さんと

@yui-knk さんに Ruby の C レベルの話をいろいろ聞いて楽しかったw

Dec.12

そのっつ師匠と一緒に

Dec.13

ほかっちゃ先生と JavaScript 談義など

※ ちょっとうろ覚えで… お名前をあげられなかった方すいません mm

懇親会

Dec.11

高井さん、Wantedly の皆さん、大葉ご夫妻、そのっつ師匠、ほかっちゃ先生等とあぶれ組でインド料理?に行きました

酒の席のノリとは言え「Ruby 書きたいならうちにおいでよ」と言われたの本当に嬉しかったっすw

Dec.12

Official Party

いろいろな人とお話出来ました。tenderlove と直接話せたの嬉しかったー

worst code の @Prodis さんに話しかけたもののボキャブラリーが足りず、思った事を伝えられなくてもどかしい思いをしました

超豪華メンバーが語らっている席に図々しくお邪魔してしまいすいませんでしたー 🙇

(話してる内容に興味があって耐え切れなかったのです…)

Dec.13

都内某所にていろいろな人と美味しいものを食べて、「Rubyist で良かった!!!」と力説してしまいましたw

関係ないけど

汐留はクリスマスムードでしたねー

おわりに

今年はちゃんと書けて良かった…

仕事では主に Ruby を書く仕事をしているのに (この一年はなぜか Perl 書いてましたがw) Node.js の community に比べてボッチになりがちだったんですが、今年は全くそんな感じも無く皆さんと楽しく過ごせました

※ ちなみにおかげさまで来年からは Ruby を書く案件に異動する予定です!

これも日頃から community に対するご恩返しとしてスタッフ業を頑張ってきて皆さんに覚えていただいた事がプラスに働いているんだろうなと思います

来年もまた行きたいですー。あの笑顔を見るために!

package.json で Node.js/npm のバージョンをチェックする

はじめに

qiita.com

このエントリは Node.js Adventcalendar の 13 日目のエントリです。

npm3 と npm2 の互換性

npm2で運用しているプロジェクトでshrinkwrap.jsonが壊れた時、npm3にシュッと移行する手立てはあるか?npmのバージョンを切り替える毎にnode_modulesを作りなおすのは大変だ」と追加質問したんですが、英語が全然しゃべれなくてちゃんと通じたか疑問です……。 maybekatの回答は「そうだね、npm自身も同じ問題に直面したよ。npm2ではじめたプロジェクトはnpm2で頑張り続けた方がいいし、もしnpm3に上げるならnpm2に戻ることは考えたらいけないよ

http://amagitakayosi.hatenablog.com/entry/2015/11/12/023805#NodeDiscuss

東京Node学園祭2015で登壇された amagitakayosi さんのブログエントリからの引用です

現在 Node.js の stable 版は v5.x で npm3、Long-term Support(LTS) の最新版は v4.x 系で npm2 となっています

Mac 環境での Node.js

Mac 上で開発していたとしても個々の好みで homebrew、MacPorts や nvm、nodebrew 等を使ってインストールしているかもしれないですよね

現在の状況は以下の様になっています

package.json の node-version/npm-version

残念ながらこちらはインストールする依存モジュールのチェックに使われているのみで npm install 時に実行している Node.js や npm のバージョンをチェックしているものでは無いようです

Search Results · GitHub

チーム開発時には Node.js と npm のバージョンはそろえるべきなのでその辺の自動的なチェックは出来ないようです

check-engines

www.npmjs.com

このモジュールを使うと package.json に書かれた node-version/npm-version をチェックしてくれます
しかし global にインストールしないとコマンドとして実行できません

これを解決するには package.json に devDependencies として定義してインストールした後に postinstall でチェックを実行するという強引な手法が使えます
でもこれエレガントではないですよね…

➜  npm_test  cat package.json
{
  "name": "npm_test",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "engines": {
    "node": "5.x",
    "npm": "3.x"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "postinstall": "check-engines"
  },
  "keywords": [],
  "author": "kysnm <tokyoincidents.g@gmail.com> (http://kysnm.hatenablog.com/)",
  "license": "MIT",
  "devDependencies": {
    "check-engines": "^1.2.0"
  }
}
➜  npm_test  npm i
npm WARN package.json npm_test@0.0.1 No description
npm WARN package.json npm_test@0.0.1 No repository field.
npm WARN package.json npm_test@0.0.1 No README data

> npm_test@0.0.1 postinstall /Users/jps/work/node/npm_test
> check-engines

[Error: Error: node version (4.2.1) does not satisfy specified range (5.x)
Error: npm version (2.14.7) does not satisfy specified range (3.x)]

npm ERR! Darwin 13.4.0
npm ERR! argv "/Users/jps/.nodebrew/node/v4.2.1/bin/node" "/Users/jps/.nodebrew/current/bin/npm" "i"
npm ERR! node v4.2.1
npm ERR! npm  v2.14.7
npm ERR! code ELIFECYCLE
npm ERR! npm_test@0.0.1 postinstall: `check-engines`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the npm_test@0.0.1 postinstall script 'check-engines'.
npm ERR! This is most likely a problem with the npm_test package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     check-engines
npm ERR! You can get their info via:
npm ERR!     npm owner ls npm_test
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/jps/work/node/npm_test/npm-debug.log

Ruby の bundler

Bundler: The best way to manage a Ruby application's gems

➜  bundler_test  cat Gemfile
# A sample Gemfile
source "https://rubygems.org"

ruby "2.1"

gem "pry"

➜  bundler_test  bundle
Your Ruby version is 2.2.3, but your Gemfile specified 2.1

一方 Ruby ではバージョンチェックする仕組みがあります
出来ればこういう風にしたいですね

おわりに

本当は変更箇所のふわっとした当たりはついているので出来ればパッチを送りたかったんですが、npm へのパッチは初めての事になるし、ちょっと時間がかかりそうなので今回は見送りました
時間を見つけてパッチは書きたいなと思っています

もっと良い方法をご存知の方がいらっしゃったらぜひ教えて下さい!