Islands in the byte stream

Technical notes by a software engineer

TypeScriptの型情報を利用したCustom Transformerの現状確認

TypeScriptのコンパイラ・プラグインとして振る舞いASTの操作を行えるcustom transformer (AST preprocessor) が実装されたのは TypeScript 2.4 (2017年) でした。 そのときの様子は次のエントリに非常によくまとまっています。 [TypeScript 2.4] custom tra…

Rails.application.credentials.foo は fetch(:foo) にすべき

表題のとおりで、fetch(...) はエントリが存在しないと例外を投げるため、エントリが存在しないときに nil を返すアクセサよりもtypoに対して安全です。 こういうのは rubocop-rails でカバーできるといいなと思って起票して、良さそうというコメントはもら…

SafariにはMediaQueryList.prototype.addEventListenerがない

ないと困るので、 polyfillをつくりました。MediaQueryList すら実体がないので、やむをえず mathMedia() を上書きしています。 // MediaQueryList.prototype.addEventListener.ts if (typeof matchMedia !== "undefined" && !matchMedia("all").addEventLis…

なぜTypeScriptに失望してしまうのか

TypeScriptに対する失望は2パターンあって、その理由は理解できるのですが、いずれにせよそこでTypeScriptを捨てる判断をするのはもったいないと思っています。この2つの失望を感じたとしてもなお、TypeScriptには導入する価値があると思っています。 パター…

エンジニアHubに『「GraphQL」徹底入門』という記事を寄稿しました

書きました*1。 employment.en-japan.com GraphQLという規格そのものについての解説が前半で、後半はRailsアプリのWeb APIをRESTful APIからGraphQL APIに書き換えるというハンズオンです。 GraphQLの特徴やら Swagger, gRPC, etc との比較はわりとよく見か…

potatotips #56 で 「OSS開発のリテラシー / Android編」という発表をしました

追記: 加筆修正してGitHub projectにしました: https://github.com/gfx/android-oss-best-practices paper.dropbox.com (potatotips #56 (iOS/Android開発Tips共有会) - connpass) 久しぶりのpotatotipsでのLTでした。 「OSS開発のリテラシー」は他の言語版…

apollo-boost はサンプルコード専用と思ったほうがよい

追記: Apollo Boost は Apollo Client に統合される見込みのようです。Apollo Client 3.0 Roadmap · Issue #33 · apollographql/apollo-feature-requests · GitHub TypeScript用のGraphQL clientであるところの Apollo ですが、これのGet Startedなどのドキ…

Reactをv16にアップグレードしたらuglifyjsの秘孔をついてハマった件

追記: Terser v3.10.11 でこの問題が修正されていることを確認しました。現在は collapse_vars: false というワークアラウンドは不要になりました。 webpackのproduction buildの話です。 Reactが悪いわけではないんですが、たまたま秘孔をつくコードがReact…

Code Review Meetup #4 で「歴史的経緯の説明 as code」という発表をしました

Sider社の開発する Querly を使うと「歴史的経緯の説明」をコード化できるよという話です。 Querlyの話は以前も書いたことがあります: プロジェクト固有のルールを指定できるLinterであるところのQuerlyがめちゃ便利 - Islands in the byte stream Querlyは…

特定のファイルに対して一定のテストカバレッジを保証する

ある特定のファイルのテストカバレッジが、ある特定のテストファイル(群)を実行したときに一定のカバレッジ率であることを保証したいと思うことはありますか?私はあります。 そこで、 次のような spec/coverage_helper.rb を用意して、 spec/rails_helper…