読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

「やさしいコンピュータ科学」読んだ

やさしいコンピュータ科学 (Ascii books)作者: アラン・W.ビアマン,Alan W. Biermann,和田英一出版社/メーカー: ASCII発売日: 1993/06メディア: 単行本購入: 6人 クリック: 184回この商品を含むブログ (30件) を見る最近、流行りのものを勉強するより、技術…

「リファクタリング・ウェットウェア」を再読した

最近、学生時代よりも学習時間を取れなくなっていて、このままだと新しいことが身につかなくなっていっていくのではという危機感があった。またメンターをするにあたって、人の学習モデルをある程度理解しておいて、アドバイス出来るようにしたいという思い…

目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ

最近コーチングという分野に興味を持って、まずは簡単でさくっと読めそうな「ザ・コーチ」という本を読んだ。ザ・コーチ作者: 谷口貴彦出版社/メーカー: プレジデント社発売日: 2012/05/31メディア: Kindle版この商品を含むブログを見るこの本は、副題も含め…

「いちばんやさしいグロースハックの教本」読んだ

サービスの成長について少しだけ理解を深めたくて読んだ。いちばんやさしいグロースハックの教本 人気講師が教える急成長マーケティング戦略 (「いちばんやさしい教本」シリーズ)作者: 金山裕樹,梶谷健人出版社/メーカー: インプレス発売日: 2016/01/22メデ…

チーム内プロジェクトが発足した時に、プロジェクトの朝会を用意すべきか

最近チーム内で少し大きめなプロジェクトが発足して取り組んでいたのだが、その時プロジェクトの朝会(デイリースクラム)をするべきなのか悩んだことがあった。自分の中ではプロジェクトごとの朝会を用意すべきという結論に至ったのだが、今回はその結論に至…

関数の仕様を正しく実装していることをどう保証するのか

静的型チェックがあったらテストはあまり書かなくて良いのか - $shibayu36->blog; で静的型チェックがあったとしても、テストをあまり書かなくて良いわけではないという話を書いた。するとブコメでいろいろ意見をもらえた。これらの意見から、関数の仕様を正…

MySQLを使って簡易的にサービスの数値を集計する

最近色んな機能を作る時に、簡単に数値を集計してみて様子を見るということがよくあった。そこで今回はその時に使ったクエリの紹介。【2016/10/18 10:28追記】 社内でHOUR関数とかGROUP BYにalias名を使ったらもっと簡単にできるよと言われたので、それぞれ…

TypeScriptを2系にアップデートした

TypeScript 2.0 is now available! | TypeScript ということで、自分のプロジェクトのTypeScriptを1.8.9から2.0.3に上げた。あんまり困ったことはなかったけど、少しだけハマったのでメモ。 コンパイルを通すための対策 readonly property対策 今のプロジェ…

「チームが機能するとはどういうことか」を読んだ

【2016/09/26 12:30補足】 思ったよりこの記事が読まれてしまったので補足。ちょっと本についてネガティブなことを書いてしまったけど、僕個人が今の知識の状態で読んだ時に、1分間マネージャーシリーズなどの他の書籍である程度知っていた事もあって、文章…

「オブジェクト指向入門 第2版」の上下巻を全て読み終えた

「オブジェクト指向入門 第2版 方法論・実践」を読み終えた。これでようやく「オブジェクト指向入門 第2版」を全て読み終えることが出来た。読むのは確かに大変だったけど、抽象データ型や契約による設計などといったエンジニアにとって役立つ概念を学ぶこと…

手元開発環境でサーバを起動時のみcronのようにスクリプトを実行する(Perlの場合)

これまでPerlを利用した手元開発環境でどのようにcronを動かすか迷ってきたのだけど、その解決策が見つかったのでメモ。 課題 開発サーバや本番サーバではcronで定期的にスクリプトが実行されている 定期的に実行されているスクリプトが動かないと、正しく動…

知識ゼロからElasticsearchを実践で使えるようになろう!

以前少しだけElasticsearchを触った時に、自分流Elasticsearch入門 - $shibayu36->blog; というElasticsearchに入門した時のメモをまとめていた。しかし、その頃はElasticsearchを使って完全に一人で一つの機能を作るというところまではいけなかった。 最近…

Elasticsearchのインデックス定義を設計する手順

Elasticsearchを使おうとすると、まずアプリケーションの仕様にしたがってインデックス定義やマッピング定義を設計しなければならない。これはMySQLを使っていてスキーマを考えるフェーズに相当する。 この時、考えることが非常に多く、いろいろなドキュメン…

JavaScriptのPromiseの概念について学習した時に参考にしたもの

JavaScriptのPromiseを使った実装をコードレビューしていたのだけど、やってみたら自分があんまりPromiseについて理解できていなかったことに気づいた。特にこれまでjQueryのajaxやjQuery Deferredをなんとなく使っていたのだが、Promiseの根本的な概念がjQu…

WEB+DB PRESS vol.94で「Perl開発への動的な型制約の導入」について執筆しました

WEB+DB PRESSのPerl Hackers Hubで執筆しませんかとお声がけいただいたので、「Perl開発への動的な型制約の導入」について執筆しました。本日発売です。WEB+DB PRESS Vol.94作者: 藤原俊一郎,朽木拓,八木俊広,吉田太一郎,うらがみ,のざきひろふみ,うさみけん…

PerlでHarrietを使ってElasticsearchのテストをする & 並列でもテストできるように

Elasticsearchを使った開発をしていると、Elasticsearchを使った機能でも簡単にテストしたいという気持ちになってくる。またproveの-jオプションを使って並列に動かしていても変にコンフリクトせずにいい感じになってほしい。 この課題を解決するために、Har…

ElasticsearchのAnalyzerを理解するため全文検索の仕組みをシンプルに考える

Elasticsearchを使おうとしているとAnalyzerという概念が出てくるが、このAnalyzerという概念は最初理解することが難しかった。全文検索の仕組みを理解すれば分かるだろうと思い、https://speakerdeck.com/johtani/elasticsearchru-men?slide=5 やhttp://www…

論理的な文章の技術を学ぶため「理科系の作文技術」を読んだ

理科系の作文技術 (中公新書 (624))作者: 木下是雄出版社/メーカー: 中央公論新社発売日: 1981/09/22メディア: 新書購入: 107人 クリック: 1,559回この商品を含むブログ (330件) を見る最近ブログで文章を書く時にどのように書けばよいか迷うことが多いため…

今日のElasticsearch学び Vol.6 - pluginの種類

今日はElasticsearchのpluginの種類について学んだ。 Introduction to plugins | Elasticsearch Plugins and Integrations [2.3] | Elasticによるとpluginは以下の3種類に分けられるみたい。 Java plugins JAR filesのみを含むpluginで、全てのnodeにインス…

Macでdtrussを使ってシステムコールの実行時間を知る

最近lsofを使ってportの利用状況をチェックしようとしたら、なぜか数秒固まるということが起こり、drussを使ってどこで止まっているか確かめたのでメモ。 dtrussというのは、簡単にいえばstraceのOSX版という感じ。どうやって使うかはOSXでもstraceしたい?…

「SOFT SKILLS」読んだ

SOFT SKILLS ソフトウェア開発者の人生マニュアル作者: ジョン・ソンメズ出版社/メーカー: 日経BP社発売日: 2016/06/02メディア: Kindle版この商品を含むブログを見る 話題になっていたので読んでみた。個人的にはそんなに面白くなかった。 この本はソフトウ…

今日のElasticsearch学び Vol.5 - Avoiding Type Gotchas

今日はElasticsearch: The Definitive Guideを読んでいて怖いと思ったところについて書く。 学びがあったのはAvoiding Type Gotchasという部分。これによると、同一のindexを使っていて別のtypeで定義していたとしても、Luceneからはindex単位でフラットに定…

仕様や実装方針の相談をPullRequestで行う取り組み

これまで少し大きめな機能であれば、コードを書く前にまず仕様や実装の方針をissueのdescriptionにまとめ、それを先にレビューしてもらってから実装にとりかかるということをしていた。最近、その方針をそもそもrepositoryのファイルとして書いて、PullReque…

いつ突然会社をやめても問題ないという基準でコードやドキュメントを書くテクニック

blog.shibayu36.org 上の記事が思ったより読まれていたので、自分がこの基準を満たせるようにやっているテクニックも箇条書きで書いておく。 PullRequestを作ったら必ず自分でコードレビューをする コードを書いているとき、その一部一部はこれで完璧と思っ…

いつ突然会社をやめても問題ないという基準でコードやドキュメントを書く

先に前提を話しておくと、会社は全く辞めるつもりはないし、むしろどんどん会社を良くしていこうと思っている。今回はそういう基準で自分がコードやドキュメントを書いていますよという話。 コードやドキュメントを書く時に、どのくらいきれいにしておくかと…

今日のElasticsearch学び Vol.4 - Analyze結果を確認する

Elasticsearchで自分でAnalyzerを定義した時、意図通りにAnalyzeできているか確かめたいことがある。この場合、elasticsearch-inquisitorを使う方法と、fielddata_fieldsを使う方法がある。 elasticsearch-inquisitorを使う方法 elasticsearch-inquisitorプ…

今日のElasticsearch学び Vol.3 - クエリ編

今日はクエリ周りについて学んだ。 Query contextとFilter context Query and filter context | Elasticsearch Reference [2.3] | Elastic ElasticSearchのクエリにはQuery contextとFilter contextというのがある。簡単にいえばQuery contextで解釈されたク…

今日のElasticsearch学び Vol.2 - Mappings編

今日はmappings周りについて学んだ。 _source fieldについて _source fieldには実際に投入したドキュメントのそのままの値が入っている。つまりCharFilterとかTokenizerとかそういうのが全くかかっていない状態のものが入っている。詳しくは_source fieldを…

今日のElasticsearch学び Vol.1 - Analyzer編

Elasticsearchをやっていると日々学びがありすぎる。しかし、それを毎回いい感じにまとめるのは大変すぎるので、とりあえずいろいろ整理がつくまで雑に今日の学びとしてまとめていきたい。 さて今日はanalyzer周りについて学んだ。 AnalyzerはTokenizer, Tok…

プロジェクト単位でElasticsearchのローカル開発環境を作成する

最近Elasticsearchを触っていて、まずはローカル開発環境を作ることになった。ただ、Elasticsearchはバージョンがかなり変わり、別プロジェクトと利用したいバージョンが異なっていたので、プロジェクト単位で使い分けるにはどうすればよいかを考えた。 やり…

horensoを使ってcronの実行時間を自動でmackerelに記録する

最近cronの実行にはhorenso というツールを使って、実行エラーがあればSlackに通知するなどといったことをしている。今回はcronの実行時間をmackerelのサービスメトリックに自動で記録するということをやったのでメモ。 やりたいこと crontabに以下の形式で…

gulp-autoprefixerを使ってCSSのベンダープレフィックス付与を自動化する

今回はgulp-autoprefixerを使ってCSSのベンダープレフィックス付与を自動化する話です。サンプルは https://github.com/shibayu36/javascript-playground/tree/master/try-autoprefixer においてあります。 解決したい課題 サポート状況を見ながらちまちまCS…

CSSのブラウザサポート状況を自動でチェックできるdoiuseが便利

最近書いているCSSがそもそも今サービスが推奨しているブラウザでサポートされているのかチェックするのだるいと思っていたら、doiuseという便利なツールを見つけた。 doiuseとは https://www.npmjs.com/package/doiuse CSSのブラウザサポートのチェックをし…

Emacsで特定のプロジェクトでだけ編集モードの設定を変える

最近JSを触っていて、このプロジェクトはインデントが2だけど、このプロジェクトはインデントが4で、プロジェクトごとに設定できないかなーという課題意識を持っていた。今まで全く知らなかったのだけど、これは.dir-local.elというのを利用すれば出来るよう…

mozaic.fm ep14がHTMLの仕様策定とW3CやWHATWGの位置づけを知るための最高の資料だった

以前HTML::Lint::PluggableにPRした時に参考にした資料 - $shibayu36->blog;の記事で「なぜW3Cとwhatwgが両方共HTMLの仕様を定義し、かつ微妙に違うのかという疑問が生じた」と書いていた。それで結局いろいろ漁っていたのだけど、mozaic.fmの「ep14 WHATWG…

「オブジェクト指向入門 第2版 原則・コンセプト」を読み終えた

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行本(ソフトカバー)購入: 11人 クリック: 307回こ…

静的型チェックがあったらテストはあまり書かなくて良いのか

昔に動的言語だとひたすらテストを書かないといけないけど、静的型チェックの仕組みがあればそんなにテストを書かなくてもいいよねみたいな話があった記憶がある。昔は結局どうなんだろうと思ってたのだけど、最近もそういう話を耳にして、やっぱりそんなこ…

navigator.userAgentをモックしてJSのユニットテストをする

JavaScriptのユニットテストでnavigator.userAgentをモックしてテストしたいことがあり、そのようなユーティリティを作ってテストをしてみたのでメモ。 ちなみにいろいろ試した例は https://github.com/shibayu36/javascript-playground/blob/master/es2015-…

HTML::Lint::PluggableにPRした時に参考にした資料

HTML::Lint::Pluggableという、HTMLが正しい形式かをチェックしてくれるモジュールがある。しかし、自分が使いたいHTML5のタグの中で許可していないものがいくつかあったのでPRして追加してもらった。今回はbdi, dialog, menuitem, template, track, rb, rtc…

YAPC::Asia Hachioji 2016に行きました #yapc8oji

7/2〜7/3にあったYAPC::Asia Hachioujiに行きました。二日間とも朝から参加したのですが、本当に面白い発表が多く、また東京にいるいろんな人と議論とかができたので、非常にためになりました。 特に東京周りの人と議論できたのが良かったです。いつもは京都…

コードレビューを段階的に行ってもらう話

最近コードレビューをどのように回していくかについて考えたことがあったのでブログに書いておく。 コードレビューの目的 コードレビューには誤りの発見以外にいろいろな目的がある。自分の中ではid:hisaichi5518が昔プレゼンでまとめていた目的が結構しっく…

JSDOM環境でlocalStorageをfakeする(with TypeScript)

JSDOM環境を使っていると、いくつか実装されていないAPIがある。もしそのAPIを使っている実装のテストを書きたい場合、そのAPIと近い動きをする仮のオブジェクトに置き換える、つまりfakeする必要がある。localStorageもJSDOMでは現在動かないAPIなので、loc…

「オブジェクト指向入門 第11章 契約による設計」を読んだ

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行本(ソフトカバー)購入: 11人 クリック: 307回こ…

Emacsで英和辞書や和英辞書をすぐに引けるようにしたい

ちょっと調べてたら、 英語力を向上させたいのでまずは Emacs からはじめた | Futurismo emacs google-translate.el : 【設定パワーアップ】Google翻訳で言語自動判別しつつ英訳・和訳する! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 …

React触ってみた

https://facebook.github.io/react/docs/tutorial-ja-JP.html を見ながらReactをとりあえず触ってみたのでメモ。 コンポーネントを作る コンポーネントを作って、そのrenderメソッドでどういう構造を描画するかJSXで記述しておいて、描画を変更したい時にsta…

オブジェクト指向入門 第7章〜第10章を読んだ

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行本(ソフトカバー)購入: 11人 クリック: 307回こ…

最近コード中のTODOコメントの書き方を工夫している

コード中に後でやろうと思って以下の様なTODOコメントを書くことがあります。TODOコメントというのは # TODO: 後でリファクタリングしたい ... # TODO: 投稿機能ができたら置き換えること ... みたいなやつです。 コード中にTODOコメントを気軽に書いてしま…

「オブジェクト指向入門 第6章 抽象データ型」を読んだ

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行本(ソフトカバー)購入: 11人 クリック: 307回こ…

TypeScriptのテスト環境でDOMも含めたユニットテストを行う

TypeScriptでのフロントエンド開発環境作成総まとめ - $shibayu36->blog;やKarma, Mocha, Chaiを使ってTypeScriptでのテスト環境を構築する - $shibayu36->blog;の続きです。JavaScriptで実装していると、できる限りDOM操作とロジックを分割しても、DOMを触…

TypeScriptでのフロントエンド開発環境作成総まとめ

これまで自分のブログで、TypeScriptを使ったフロントエンド開発環境についてブログをいくつか書いてきた。ひとまずこの辺りで、TypeScriptでフロントエンドを開発するための最低限の環境を構築できるようになったので、総まとめとしてブログエントリを書い…