BigQuery gem に contribute した
はじめに
今日は #bq_sushi tokyo #3 - connpass ですね
🍣は出ないそうですよ(笑)
bigquery を触り始めた
業務上必要があって良くわからないまま BigQuery gem 選択したが、想像以上に機能が足りなくて振り返ってみると結構 pull request していた
最初は慣れない英語でドキドキしていたけれどもなんとかなってしまった。やってみるものだなー
最終的には google-api-ruby-client の 0.9.3 対応というかなり大きな変更を送って「さすがにこれは取り込まれないだろう」とおもっていたらあっさり取り込まれて拍子抜けしてしまった
残念ながら少し bug が残っていて、他の人が fix した pull request を投げてくれているんだけど、別の変更も入っていてちょっと中途半端な印象。どうしたものかな… author もいまいち active ではないし。業務上でも google-api-ruby-client への replace が進んでしまってあまり必要では無くなってしまった感があるし
ちなみに 0.9.3 対応はまだ rubygems にリリースされていないです
おわりに
1月に部署異動してから新しい事にチャレンジさせてもらった
いろいろと周りに迷惑はかけていると思うけれど、辛抱強くサポートしてもらっていて本当にありがたい
頑張っていかなければ!
2015年の振り返り
はじめに
今年は書きます!
イベントスタッフ
HTML5 Conference - html5j | Doorkeeper
nodeschool tokyo (東京Node学園 入学式) - connpass
NodeSchool International Day in Tokyo - connpass
Go Conference 2015 Winter - dots. [ドッツ]
コアスタッフとして関わっていたのは 東京Node学園祭2015 と 次世代Webカンファレンス のみで後は当日スタッフでした
次世代Webカンファレンスはいろいろな人と関われて本当に楽しいイベントでした。声をかけてくれた @Jxck_ にはものすごく感謝しています
もうすっかりスタッフが板についてしまって「日本の勉強会を影で支える人」とかいじられたりしていますが、勉強会参加数は昔より減っていて、知り合いがいるような場所にしか顔を出さない傾向にあるかもです
東京Node学園祭2015 や RubyKaigi2015(参加のみ) などで海外の人達と触れる機会も増えてきてますます英語の重要性が高まっているので、来年はもっとコミュニケーション取れるように頑張りたい
今年は本当にコミュニティに関わってきた事がプラスになっていると感じる事が多かったので引き続き出来る限りの事はやっていきたいと思います
ちなみに勉強会参加数は 52(?) 程度でした。週一ペースぐらいですねー
転職
今年の1月に渋谷の某社に転職しました(残念ながら正規ではないです)
僕はあんまり長続きしない方なんですが、今の環境は結構満足していてまだしばらく続けられそうです
優秀な人が多くて有志の社内輪読会はすごく勉強になりました。また機会があれば参加したいです
来年からは自分の希望に近い条件下で今より少し業務的には難しくなりそうなんですが頑張って食いついていこうと思っています
LT
なんと今年は3回もやっていた!(え、少ない?はい、そうですね💦)
来年も少しづつやれたら良いなー kysnm.hatenablog.com
おわりに
今年関わったみなさまには感謝しております。一年間本当にどうもありがとうございました!
また来年もよろしくお願いいたします!!
Rails でも Server push に挑戦したい!
はじめに
このエントリは http2 Advent Calendar 2015 の 23 日目のエントリです
RubyKaigi の発表にて
@tenderlove による http2 関連の発表がありました。
Request and Response - RubyKaigi 2015
以前より彼が http2 を実装しているのは知っていたので、
お願いしてサンプルアプリを教えてもらいました
@tenderlove I would like to see the example of server push you were talking at the RubyKaigi. Does it have been published somewhere?
— kiyoshi nomo (@kysnm) 2015, 12月 15
@kysnm @miyagawa here’s the app: https://t.co/X0bOWpGcqm I totally broke the bundle though, but you should be able to follow the deps
— Aaron Patterson (@tenderlove) 2015, 12月 15
途中経過
残念ながらまだサーバを起動することすら出来ません…
せっかくなので冬休みも利用して、気長に取り組んでいきたいと思います!
おわりに
アドベントカレンダーが空いていたので急遽書いてみました。
中途半端な状態ですが、こういう試みもあるんだなと知っていただければ幸いです
innodb_ruby のご紹介
はじめに
このエントリは Ruby Advent Calendar 2015 の 23 日目のエントリです
きっかけ
業務の関係でふと innodb の index の構造について詳しく知りたいと思って調べていたところ以下のエントリーを発見しました
innodb_ruby はとても面白そうなのにマニアックすぎるのか、国内ではあまり紹介されていないのをもったいなく思い、ご紹介したいと思いました。
ちなみに RubyKaigi 2015 の LT の CFP にもこのネタで出して落選しましたw
注意事項
ざっくり試してみたところ以下の機能は今のところ壊れているようです
あとこの機能はドキュメントがないので使いこなすの難しそう
環境構築
以下のように faker 等を利用して dummy data を作る rake task 等を用意して
index は手動で貼りました (実験用なので適当です )
主な機能
※ 理解が足らない部分があるかと思いますのでお気づきの点がございましたらご指摘いただけると幸いです
こちらに書かれているような機能があります
ざっくりと記事と同じ事を自分で作った dummy data に適用してみました (mysql の data は手元にシンボリックリンクを貼りました。homebrew で入れた場合 /usr/local/var/mysql 以下にあるはずです)
ファイルにリダイレクトしたものはこちらです (結構ファイルサイズが大きいので注意)
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 できると良いんだけどな…
おわりに
試してみた感想としてはやはり難しく、ドキュメントが足りていない気がしました
この辺のエントリーも面白そうなのでもう少し理解できるようになると良いなー
この記事を見て innodb_ruby に興味を持ってくださった方がいろいろ試してくださってノウハウが増えると良いなと思います
RubyKaigi 2015 に参加してきた #rubykaigi
はじめに
先々週の週末 12/11 〜 12/13 に開催された RubyKaigi 2015 に参加してきました とても充実した楽しい時間になりました!
参加したコンテンツ
Dec.11
※ ランチから戻るのが遅れて最初の方少し聞き逃した
Experiments in sharing Java VM technology with CRuby - RubyKaigi 2015
TRICK 2015: The second Transcendental Ruby Imbroglio Contest for RubyKaigi - RubyKaigi 2015
Dec.12
Dec.13
Refinements - the Worst Feature You Ever Loved - RubyKaigi 2015
Discussion on Thread between version 1.8.6 and 2.2.3 - RubyKaigi 2015
Plugin-based software design with Ruby and RubyGems - RubyKaigi 2015
動画ももう公開されているようですね!
飯テロ
ランチは築地が近かったので毎日海鮮丼 or 🍣でしたw
Dec.11
ちょっと奮発した 魚河岸ぶっこみ丼 #rubykaigi (@ 築地青空三代目 hafu in 中央区, 東京都) https://t.co/PedDWOxOPG pic.twitter.com/FLgfy2FoUg
— kiyoshi nomo (@kysnm) December 11, 2015
顔馴染みの @ppworks さんと Money Forword の皆さんと
@yui-knk さんに Ruby の C レベルの話をいろいろ聞いて楽しかったw
Dec.12
おまかせ丼 #rubykaigi (@ まるきた 本店 in Chūō, Tōkyō-to) https://t.co/sJ9MrxIstt pic.twitter.com/mCm3COH03Q
— kiyoshi nomo (@kysnm) December 12, 2015
そのっつ師匠と一緒に
Dec.13
誉 #rubykaigi (@ 虎枝別館) https://t.co/QesOMk8QGc pic.twitter.com/tA1QApJOWT
— kiyoshi nomo (@kysnm) December 13, 2015
ほかっちゃ先生と JavaScript 談義など
※ ちょっとうろ覚えで… お名前をあげられなかった方すいません mm
懇親会
Dec.11
高井さん、Wantedly の皆さん、大葉ご夫妻、そのっつ師匠、ほかっちゃ先生等とあぶれ組でインド料理?に行きました
酒の席のノリとは言え「Ruby 書きたいならうちにおいでよ」と言われたの本当に嬉しかったっすw
みんなが仕事してるのを感じながら、名立たる Ruby エンジニアに囲まれて幸せでゴメンナサイ 🙇
— kiyoshi nomo (@kysnm) December 11, 2015
Dec.12
Official Party
いろいろな人とお話出来ました。tenderlove と直接話せたの嬉しかったー
worst code の @Prodis さんに話しかけたもののボキャブラリーが足りず、思った事を伝えられなくてもどかしい思いをしました
数年前の自分はこんなに海外の人達とコミュニケーションしたいと思うなんて想像もしてなかったな。 I want to have more english vocabulary!!!
— kiyoshi nomo (@kysnm) December 12, 2015
超豪華メンバーが語らっている席に図々しくお邪魔してしまいすいませんでしたー 🙇
(話してる内容に興味があって耐え切れなかったのです…)
Dec.13
都内某所にていろいろな人と美味しいものを食べて、「Rubyist で良かった!!!」と力説してしまいましたw
関係ないけど
汐留はクリスマスムードでしたねー
綺麗だなー (@ カレッタ汐留 (Caretta Shiodome) in 港区, 東京都) https://t.co/l19MxhbJKJ pic.twitter.com/FYo8Kukbz1
— kiyoshi nomo (@kysnm) December 11, 2015
クリスマスムードですなー #rubykaigi (@ ビヤダイニング銀座ライオン 汐留店 in 港区, 東京都) https://t.co/AoiMPCd5Gl pic.twitter.com/pZz08Owu5J
— kiyoshi nomo (@kysnm) December 12, 2015
おわりに
今年はちゃんと書けて良かった…
仕事では主に Ruby を書く仕事をしているのに (この一年はなぜか Perl 書いてましたがw) Node.js の community に比べてボッチになりがちだったんですが、今年は全くそんな感じも無く皆さんと楽しく過ごせました
※ ちなみにおかげさまで来年からは Ruby を書く案件に異動する予定です!
これも日頃から community に対するご恩返しとしてスタッフ業を頑張ってきて皆さんに覚えていただいた事がプラスに働いているんだろうなと思います
来年もまた行きたいですー。あの笑顔を見るために!
2日目だけど、エントランスでカクタニさんの笑顔見たら今年も #rubykaigi に参加できて良かったと思った
— kiyoshi nomo (@kysnm) December 12, 2015
package.json で Node.js/npm のバージョンをチェックする
- はじめに
- npm3 と npm2 の互換性
- Mac 環境での Node.js
- package.json の node-version/npm-version
- check-engines
- Ruby の bundler
- おわりに
はじめに
このエントリは 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 等を使ってインストールしているかもしれないですよね
現在の状況は以下の様になっています
homebrew: stable v5.x 系 https://github.com/Homebrew/homebrew/blob/master/Library/Formula/node.rb#L4
MacPorts: LTS(Argon) v4.x 系 https://www.macports.org/ports.php?by=library&substr=nodejs
nvm/nodebrew: 任意のバージョン
package.json の node-version/npm-version
残念ながらこちらはインストールする依存モジュールのチェックに使われているのみで npm install 時に実行している Node.js や npm のバージョンをチェックしているものでは無いようです
チーム開発時には Node.js と npm のバージョンはそろえるべきなのでその辺の自動的なチェックは出来ないようです
check-engines
このモジュールを使うと 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 へのパッチは初めての事になるし、ちょっと時間がかかりそうなので今回は見送りました
時間を見つけてパッチは書きたいなと思っています
もっと良い方法をご存知の方がいらっしゃったらぜひ教えて下さい!
ELECTRON MEETUP #BOOST02 に行ってきた
はじめに
前々から気になっていた electron を触る機会を作りに参加してきました
ちなみに Boost は "エンジニアのための evernote を目指した markdown editor" という事でした
(うろ覚えなので微妙にニュアンスが間違っていたらすいません…)
せっかくなので一度使ってみましょう!
electron アプリ作りの参考になると思いますよ
午前の勉強会
Electron x React x Webpack · GitHub
この辺の説明を一通りライブコーディングしながら説明してくれました
課題としてはコンパクトでわかりやすいものだなと思いました
個人的には若干資料の表現に不正確なところがあるかなと思いましたが、初心者が概要をざっくり把握するためには調度良い感じだなとも思います
3番目の gist 資料は以下の Qiita の記事を参考にした方が良いそうです
React と babel などを使うことを前提にしたもので勉強会では Boost 自体を例題にしていました (Boost のソースコードは今のところ未公開だそうです)
あと参考になると教えていただいたリンクです
飛び込み LT
古川さんのゲスト講演!!
#nodeschool_tokyo pic.twitter.com/PMeZnyqlTc
— afroscript (@afroscript10) 2015, 11月 28
当日は実はレバレジーズさんで Nodeschool in Tokyo が開催されていました
午前中の勉強会を聞いていて
これ Node.js の知識がある程度ないとつらそうだなー #BOOST02
— kiyoshi nomo (@kysnm) 2015, 11月 28
と思ったので、せっかくの機会なので宣伝を兼ねて飛び込みで LT をさせていただきました
※ 僕にしては珍しい事ですw
LT 資料です! https://t.co/dv8UXIISjA #BOOST02 https://t.co/2ZlzfX0Irz #BOOST02
— kiyoshi nomo (@kysnm) 2015, 11月 28
修正したら URL が変わってしまった… https://t.co/n6ndsHHdrH https://t.co/2ZlzfX0Irz #BOOST02
— kiyoshi nomo (@kysnm) 2015, 11月 28
あー、electron 絡みで git-it-electron を紹介するの忘れてた… https://t.co/0LriFdUq1l #BOOST02
— kiyoshi nomo (@kysnm) 2015, 11月 28
こちらの記事を参考に rawgit を使ってみたのですが、あまりちゃんと読んでいなくて失敗してしまいました。。。
(10 分くらいでやっつけで資料を作ったので…)
コミット ID を削ると最新版を参照するという記事があったので次回もし利用する事があったら注意したいと思います
多分この URL だったら更新しても最新が見られるはず
https://cdn.rawgit.com/kysnm/c6248b71df619912c398/raw/electron-meetup-boost02.html
懇親会にて
今回勉強会の講師だった Dick Choi さんは以前 Nodeschool in Fukuoka をやりたいという申し出をしてくださった方で、実は gitter 上で会話していました。世間は狭いものですねw
現在は九州大学の学生をやりながら CTO をされているという事で月曜日には学校があるという事、いやー、ハードな生活をされていますね!
おわりに
非常に有意義な時間を過ごす事ができました
参加者のみなさま、主催のみなさまお疲れ様でした!
次は Nodeschool か 東京Node学園でお会いできると良いですねw