GraphQL API を悪意あるクエリから守る手法

実サービスで GraphQL API をインターネットに公開する際は、悪意あるクエリに対する防衛が欠かせません。この記事における「悪意あるクエリ」とはサービスに意図的に負荷をかけるクエリのことです。GraphQL では 、木構造や再帰的な構造を利用して、一回の…

エンジニア8人チームで"効果的に"タスクをアサインするために検討した8つの軸

最近、締め切りのある大きめなプロジェクトでWebアプリケーションエンジニア兼プロジェクトマネージャーとして仕事をしました。一年目なので当然プロジェクト管理の経験はなく、本を読んで知識を得たり、チームメンバーに助けられたりと、だいぶ手探りでの挑…

見積もりの基礎知識と「ストーリーポイント vs 理想日」の考察

昨年の10月頃から締め切りのある大きなプロジェクトに参加し、部分的にではありますがプロジェクトマネジメントを担当しました。この記事では、その業務を通して得た見積もりに関する知見をまとめます。教科書的な知識は「アジャイルな見積もりと計画づくり…

【React】カスタムフックでstatefulなコンポーネントを整理する

こんにちは。最近は仕事で React を書き始めました。数年前に React を触った時は class component をせっせと書いた覚えがあるのですが、最近は functional component と react hooks を組み合わせて書くこともできるようです。react hooks の概要は公式ド…

Apollo ClientのInMemoryCacheとMutationに関する調査・考察

Apollo Client は、Apollo プラットフォームが提供する JavaScript で実装された GraphQL クライアントです。Apollo Client には InMemoryCache という強力なキャッシュ機構が用意されており、クエリの結果をキャッシュすることができます。本記事では、この…

Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜

Pythonの最も主要な処理系であるCPythonの入門記事です.はじめに,CPython で用いられているデータ構造とプログラムの実行方式について簡単に解説します.その後で,「処理系を改造して 1 + 1 = 3 にする」という課題を通して,実際に CPython のコードを読…

漸進的型付けの未来を考える

TypeScript や Python に導入されている「漸進的型付け」ですが,理論と実際の言語の間には大きなギャップが存在します.この記事では,そうしたギャップをプログラマの言葉でわかりやすく解説し,TypeScript や Python といったプログラミング言語の未来を…

型クラスを含んだ型推論を概観する 〜Typing Haskell in Haskell より〜

この記事は CAMPHOR- Advent Calendar 18日目の記事です. 「Typing Haskell in Haskell (通称 thih)」から型クラスを含んだ型推論のエッセンスを紹介したいと思います. 多少専門的な内容ですが,なるべく多くの人に理解してもらえるように頑張ります. 論…

System F をHaskellとPythonで実装した

無事夏休みに突入して時間ができたので再びTaPLを読み始めました.半年触っていなくても進行,保存の証明が書けるあたり,春の自分はずいぶんしっかりと勉強していたようです.春は22章の型再構築まで読んでいたので,ひとまず23章のSystem Fから読んでサク…

Haskellで簡単な正規表現を実装した【KMCアドベントカレンダー8日目】

KMCアドベントカレンダー8日目の記事です。講義で正規表現とかオートマトンをちゃんと学んだので、Haskellの修行も兼ねて簡単な正規表現を実装しました。理論とか実装とかダルいと思うので、おまけだけ読むと楽しいかも知れません。