2015年の振り返り

仕事 サービス開発 クックパッドに入社してもうすぐ丸二年になります。今期から会員事業部に移動しました。 この部署(にかぎらずですが)には優秀な人ばかりで、どの人との出会いもすごく刺激になりました。 特に森田さんという人がやばくて(褒め言葉)、ああ…

東京Node学園祭2015でESDocについて発表してきました

こんにちは丸山@h13i32maruです。 昨日、東京Node学園祭2015というNode.jsについての国内最大のイベントがありました。参加人数は400人くらいで、海外からも有名なゲスト招いており、2トラック同時並行で行われるというイベントでした。運営のみなさん本当に…

ESDocというJavaScript向けのAPIドキュメントツールを作りました

こんにちは丸山@h13i32maruです。 昨日、ESDocというツールをリリースしました。GW中になんとかリリースできて一息ついているところです。今回はそのESDocというツールについて紹介します。あと最後に雑談と宣伝があります。 ESDocとは? ESDocとはJavaScrip…

ES6はクラスベース?プロトタイプベース?

こんにちは丸山@h13i32maruです。 ES6(ES2015)にclassシンタックスが入って、あー、すごい書きやすくなったなぁ、読みやすくなったなぁと思ってclassシンタックスのありがたみを噛み締めながらコードを書いています。 そんなときに ES6にclassシンタックスが…

AirbnbのES6スタイルガイドを読んで

こんにちは丸山@h13i32maruです。 ES6の仕様がRC4になっており、正式リリースを今か今かと待ちわびている。とはいえもう個人で書くコードはES6一択。ES5には戻れない(それにしてもBabelの勢いがすごい)。 そんな感じでES6を書いてるわけだけど、つい先日にAi…

WHATWG Streams APIについてのメモ

こんにちは丸山@h13i32maruです。 WHATWG Streams APIを少し触ってみたので、そのメモです。 ドキュメント WHATWG Streams このメモはLast Updated 21 January 2015を元に書いた whatwg/streams サンプルやリファレンス実装などがある このメモはcommit 8799…

ES6でWebブラウザ向けにアプリを作るためのスケルトン

こんにちは丸山@h13i32maruです。 最近ES6で色々書くことが多いので、自分用にスケルトンを作りました。 h13i32maru/es6-skeleton 採用したスタックはこんな感じです。 ES6 6to5 Module Browserify Test mocha power-assert karma Doc JSDoc3 CI Travis CI …

エンジニア的弁当作り

こんにちは丸山@h13i32maruです。 「弁当男子」という言葉はGoogleトレンドによると、どうやら2009年くらいから出てきた単語らしい。別にそのトレンドに乗っかったわけではないけど、僕も2010年5月から週2〜3回のペースで弁当を作っている(実は1年くらいお休…

ES6 Generatorを使ってasync/awaitを実装するメモ

こんにちは丸山@h13i32maruです。 ES6のGeneratorを勉強する題材としてasync/awaitを実装してみたので、そのメモです。 Genratorとは ES6のGeneratorとは「任意の時点で処理を中断/再開することができる関数」というもの。一般的にはコルーチン(coroutine)と…

モダンぽいJavaScriptテスト環境の構築メモ

こんにちは丸山@h13i32maruです。 ES6でアプリコード、テストコードを書いてテストをするための環境を作ったので、そのメモです。 目標 ES6で書いたアプリコードとテストコードをnpm run testでテストする 最終的な環境 最終的にはこんな環境になった。リポ…

Code Lunch Podcast #5

こんにちは丸山@h13i32maruです。 しばらくお休みしていたCode Lunch Podcastですが、昨日ひさびさに収録を行いました。 今回は@tenntennさんに来て頂いてLuaのデバッガやClojureによるAndroid開発の話をしました。 興味のある方は聞いてみてください。 http…

「技術は手段」について考える

こんにちは丸山@h13i32maruです。 「技術は手段」という言葉を聞くことが有ります。何が目的で何が手段かを忘れないようにして、あくまでも目的を重視して仕事などのプロジェクトを遂行するべきというフレーズとして使われているように思います。私の身の回…

丸山食堂

こんにちは丸山@h13i32maruです。 先日、知り合いのカフェで丸山食堂という名前で夜定食を出してきました。金曜、土曜の二日間だけでしたが非常に楽しくて勉強になり良い経験ができました。食べに来てくださった方々、協力していただいた方々本当にありがと…

Androidのdpについて

こんにちは丸山@h13i32maruです。 最近は2年ぶりくらいにAndroidを触る機会が増えてきました。そこで当時も曖昧のまま過ごしていたdpという単位についてまじめに考えてみたので、そのメモです。(間違っていたらごめんなさい) 背景 Androidは解像度、画角イン…

AndroidのCipher.java問題

こんにちは丸山@h13i32maruです 最近AndroidのCipher.javaで問題に遭遇して解決したので、そのメモです。 問題 AndroidでCipher.javaを使ってデータを暗号化するときに暗号化処理方式として[AES/CTR/PKCS5Padding]を使用するとAndroid4.4とそれ以外のAndroid…

KLab株式会社を退職しました

2月末でKLab株式会社を退職しました。2010/09/01に入社したので3年半働いていたことになります。長いようであっという間でした。プロジェクトも5つほど関わり非常に楽しく働けました。ということで未来の自分に向けた思い出話を書いておきます。 Androidアプ…

NavyJSというJavaScriptフレームワークとNavyCreatorというIDEを作りました

http://navyjs.org 今流行のMV*系(AngularJS/Ember.js/Knockout/Vue.js/Backboneなど)とは少し違った方向のフレームワークになっています。 NavyJS モバイル端末向けのフレームワークです View、レイアウト、SPA、アセット、画面ライフサイクルなどをサポー…

Heap Snapshotを使った時のsetIntervalの罠

Chrome DevtoolsにはHeap Snapshopという機能があり、この機能を使うと任意のタイミングでJavaScriptのメモリの詳細を見ることができます。インスタンスがどれだけ存在するかやどの変数から参照されているかなどがかなり細かくわかります。 このHeap Snapsho…

WebStormによるJavaScript開発のすすめ

Qiita JavaScript - Client Side - Advent Calendar 2013 12月20日の記事です。 みなさんはJavaScriptをどんなエディタで書いていますか?僕はこれまでVimで開発していたんですが、最近はもっぱらWebStorm(PhpStorm)を使ってJavaScriptを書いています。 とい…

rebuild.fmに憧れてCode Lunchという技術系ポッドキャストを録ってみました

@miyagawaさんが主催されているrebuild.fmというポッドキャストを最近よく聞いていて、職場の人とrebuild.fm面白いよねーって話をしていました。で、僕達でも真似してやってやってみない?というノリで僕(@h13i32maru)と@iizukakさんで録音してみました。内…

ブログを書くまでがHTML5 Conference 2013

2013/11/30にHTML5 Conference 2013が行われました。 運営の方々、スピーカーの方々お疲れ様でした。当日は風邪を引いてしまい、参加できなかったのですが、YouTubeでリアルタイムに見みることができて非常にありがたかったです。 で、ブログを書くまでがHTM…

HTML文字列に含まれるscriptを実行する

HTMLの文字列をXHRで動的に取得してきて、それをdocument.bodyなんかに突っ込む場合があると思います。 その時に文字列中にscriptタグが含まれる場合、elm.innerHTML = html;ってしてもscriptは実行されません。 jQuery.fn.loadはそのへんが考慮されていてsc…

GalaxyS4のWebViewで要素を削除しても表示が残るバグ

GalaxyS4のWebViewである要素をremoveChildしても画面に表示が残り続けるバグを踏みました。 removeChildした後に当該要素をquerySelectorしてみてもnullになるので、DOMツリー上からは消えてるみたい。 で、その要素がposition:absoluteだったのでおそらく…

Webフロントエンドのパフォーマンスチューニングについて

社内の勉強会でWebフロントエンドのパフォーマンスチューニングについて発表してきました。 Webフロントエンドパフォーマンスチューニング // Speaker Deck JavaScript、Chrome DevTools、チューニングのステップ、ボトルネック、ポイントなんかについて触れ…

QCompleterを部分一致補完させる

最近「NavyJS & NavyCreator」というモバイルWebフレームワークとそれ専用の開発環境(簡易IDE)を作ってます。 そのNavyCreatorはC++/Qtを使って実装していて、Qt便利ですごくありがたいなーと思ってます。 QCompleter NavyCreatorでコンボボックス(ファイル…

Sencha Animatorで作るCSSアニメーションがすごく良い感じ

最近Android, iOS上のWebブラウザでのアニメーションについてちょっと調べています。 有名所だと、こんな感じのがあります。 CreateJS LWF AdobeEdge ただ、どれもJSをゴリゴリ使ってタイムラインの制御と各フレームでのオブジェクトの状態を計算しています…

JavaScriptでクラスを実現する「nClass.js」

JavaScriptでクラスを実現するためにnClass.jsというものを作ってみました。 nClass https://github.com/h13i32maru/nclass MITライセンス クラスの生成 (new演算子と共につかう関数) コンストラクタ関数 (インスタンス生成時に自動実行される関数) クラスの…

なぜBTreeがIndexに使われているのか

※この内容は個人的な考察なので、間違っている箇所もあると思います。そういう部分を見つけた際はぜひ教えて下さい。 RDBMSの検索を早くするためにIndexって使いますよね。例えばこんなテーブル CREATE TABLE user ( id INT UNSIGNED NOT NULL, name VARCHAR…

Webサーバの性能測定

先月にWebサーバの性能測定、負荷試験、パフォーマンスチューニングというようなことをやっていました。初めてのことで周りの人に色々アドバイスをもらいながら取り組み、結構面白かったです。で、その内容をまとめてみようと思いながらも1ヶ月以上がたって…

Sphinxを使ってプログラムドキュメントを楽しく書こう

今日はソフトウェアのドキュメントツールの紹介です。 ソフトウェアってプログラムだけじゃなくて、「テスト」と「ドキュメント」も大事だなと最近思うようになってきました。 僕は今までプログラムは書いてきたけど、テストもドキュメントもさっぱりでした…