ESDocという(多分)モダンなドキュメンテーションツールの紹介

こんにちは丸山@h13i32maruです。 僕は2015年からESDoc*1というJavaScript向けのドキュメンテーションツールを開発しています。 https://esdoc.org https://github.com/esdoc/esdoc Star 最初のリリースから2年、昨日ようやくv1.0をリリースできました いや…

FlowとTypeScriptをESDocで使用する

ESDoc v1.0をリリースするために、機能をプラグイン化してコアと周辺機能を分離しています。 https://github.com/esdoc/esdoc-plugins この作業は大体終わり、現在はよりadvancedなプラグインのPoCを作成しています。 そこで、今回はFlowとTypeScriptをESDoc…

「チームでプロダクト開発するための取り組み」の補足

昨日、Cookpad TechConf 2017にて「チームでプロダクト開発するための取り組み」というタイトルで登壇しました。 speakerdeck.com www.youtube.com 発表後にTwitterをエゴサーチしてると、評判が良かったようで一安心していました。 しかしその評判が想像以…

GitHub用のIssue Reader「Jasper」の開発を振り返ってみる

この記事はElectron Advent Calendar 2016の11日目の記事です。 この記事では僕がプライベートで開発しているJasperというGitHub用のIssue Readerについて書きました。 JasperはElectronで作られており、どういうものかを一行で説明すると「任意の条件にマッ…

Jasperの便利な使い方

概要 JasperはGitHub/GHE専用のissueリーダーです。 メールクライアントやRSSリーダーに似ており、未読管理やスターをつけたり、アーカイブしたりということができます。 これらのクライアントと同じような操作感を実現するために、JasperはStreamと呼ばれる…

JasperというGitHub Issue Readerを作りました

先にまとめを書いておきます GitHubの大量のIssue/PRを効率的に閲覧できるJasperというソフトウェアを作りました 閲覧したいIssueのStream(RSSフィードみたいなもの)を好きな条件で作成することができます 条件はメンションされた、作成した、特定のリポジト…

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を使ってプログラムドキュメントを楽しく書こう

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

Google Closure Compilerを使ってみた

最近JavaScriptでちょっとしたフレームワークを作ろうと思ってちょこちょこコードを書いています。で、そこで困ったことは「機能的に複数のファイルに分割した*.jsをどうやってまとめるか」です。単にcatで結合するだけでもできるかもしれないですが、何か良…

はてなダイアリーからGitHub Pagesに引っ越しました

先週あたりからごそごとと準備をしていたんですが、今日ようやく移行作業が終わって晴れて新しいブログに引越しが完了しました。 なぜ引っ越したか はてなにロックインされたくなかったから はてな重すぎるから MarkdownもしくはreSTで書きたいから JavaScri…

引っ越しました

以下のURLに引っ越しました。http://blog.h13i32maru.jp

リクエスト単位で独立したコンテキストをtornadoで使用する

今の案件ではtornadoを使ってるですが、リクエスト単位でまとまったログを出したいなと思って、色々調べてみました。 (と言っても数時間かけてtornadoのソースとにらめっこして何となくできたコードを元に@methaneさんに色々教えてもらった。python知らない…

JavaScriptプロトタイプマップ

最近JavaScriptを触ることが多いのですが、JavaScriptのプロトタイプについて調べてもすぐに忘れてしまうので、ちょっとまとめてみました。 プロトタイプベース プロトタイプベースってそもそも何だろうと。僕の理解ではこんな感じです。 オブジェクトの振る…

CoffeeScript言語リファレンスを日本語訳しました

最近CoffeeScriptというものを知って少し調べてみたら、本家の言語リファレンスがそんなに多くなかったので日本語訳に挑戦してみました。 http://coffeescript.org/ CoffeeScriptとはJavaScriptにコンパイル可能なシンプルな言語です。クラスベースのオブジ…

KLabに入社して一年が経ちました。

2010年9月1日にKLabに入社してから一年(と1ヶ月半)が経ちました。 毎日刺激的で、とても楽しく自由にやっています。 今日は入社してから特に影響を受けた3人の話を出会った順に少ししたいと思います。 1人目 まずは@warumakanさん 入社して初めてのプロジェ…

一日の摂取カロリーを記録するアプリ「32Calorie」をリリースしました!

詳細はこちら。 https://market.android.com/details?id=jp.h13i32maru.calorie

MacBookAir13インチ(2011)買いました!

MacBookAir13インチを2週間使ってみての感想とか設定とか。 左がMBP2010、右がMBA2011 感想 今までMacBookPro13インチ(2010)を使っていたんですが、それとの違いを中心に。 激的に軽い!ACアダプタも小さくていい! ただ、最薄部は凶器になるw USBポートが…

Androidアプリをリリースしました「32Cart」&「32Task」

最近Androidアプリを2つリリースしました。32Cartという買物メモアプリと32Taskという起動中のタスク管理アプリです。マーケットを探せば高機能なものはいくつも出てくるのですが、僕はシンプルですっきりした物が好きなので好みに合うものがなかなかありま…

C2DMアプリ「Chrome to Phone」を改造しました。

C2DMってご存知ですか?C2DMはAndroidアプリに外部からデータをプッシュ配信できる仕組みです。 そのC2DMを使ったアプリでGoogleが開発している「Chrome to Phone」というのがあります。このChrome to Phoneを使うと、AndroidへGoogleChromeからURLを送信で…

FireMobileSimulatorにホストごとに端末設定できる機能を作りました

僕の会社(KLab)では携帯電話やスマホコンテンツを作ってるので、結構みんなFireMobileSimulator(FMS)を使っています。 で、先日同僚がこんなこと言ってました。 接続先のホストごとに端末の設定変えれたら良いのに よし、じゃあその機能作りましょう!という…

ListViewの簡単な使い方

アプリで良く見かけるListViewのサンプルです。 文字だけを表示するListViewを作るのはAndroid組み込みのレイアウトを使うため凄く簡単です。layout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >…</linearlayout>

豆腐ぶっかけ丼サイトを作りました

豆腐ぶっかけ丼があまりにも好きすぎて、豆腐ぶっかけ丼の写真共有サイトを作りましたw 豆腐ぶっかけ丼 ユーザ登録すると自分の豆腐ぶっかけ丼写真を投稿できるようになります。 (写真をみるだけならユーザ登録不要です)