2019-01-01から1年間の記事一覧

システムの目的を忘れないこと

これは30日チャレンジの17日目(2019/09/25)に書かれた文章です あらゆるシステムにおいて、ユーザが入力可能な値が増えるほどシステムの複雑性が高まる。 こうして見るとあえて文字に起こすほどのことでもないが、新規のシステムや機能を検討している段階…

リファクタリングをしたいエンジニア

これは30日チャレンジの16日目(2019/09/24)に書かれた文章です 新規事業においては、プロダクトの方向性が変わったり、当初は想定していなかった機能が増えたり、What―何を創るのかという点の不確実性が大きい。 結果として、コンポーネントの責務範囲が曖…

所属判定問題を解くBloomFilter

これは30日チャレンジの15日目(2019/09/23)に書かれた文章です 「ある要素が集合に含まれているか否かを判定する」問題(以下、所属判定問題)が与えられたとき、どのような実装を考えるだろうか。 素朴な方法として「集合に含まれる要素を走査して判定す…

進化可能なGraphQL Schema設計

これは30日チャレンジの13日目(2019/09/21)に書かれた文章です GraphQLのスキーマ設計において進化可能なデザインを実践するためにxuorig氏が記事を残している。 本文はxuorig氏の記事の要約である。 blog.apollographql.com GraphQLではAPIクライアント側…

読み書き禁止ファイルを変更できてしまう謎

これは30日チャレンジの9日目(2019/09/17)に書かれた文章です Linuxで開発したことがあるエンジニアならpasswdコマンドを知っているだろう。 コマンド名が示すとおり、ログインパスワードを変更するコマンドだ。 ではパスワードを記したファイルは一体どこ…

あいまい検索とLocality Sensitive Hashing

これは30日チャレンジの6日目(2019/09/14)に書かれた文章です 「あいまい検索」と聞いて何を思い浮かべるだろうか。 例えばGoogleもあいまい検索機能を提供している。 試しに「あいまい検索」と検索してみてほしい。おそらく「曖昧検索」にヒットしたペー…

RDBにおける木構造の表現方法

これは30日チャレンジの3日目(2019/09/11)に書かれた文章です 我々が住む世界には木構造をもつ事象が多く見られる。例えば住所は根(国)から節(県)に分かれ、やがて葉(番地)に到達する木構造として表現できる。 このような木構造を伴う情報を永続化し…

Nullableフィールドの使い方

これは30日チャレンジの1日目(2019/09/09)に書かれた文章です Nullableという単語を聞いてどのような印象を持つだろうか。 筆者は「選択肢を減らし、意思決定を遅延させる機能」のような印象を持っていた。 Nullableという単語事態ははAPIやデータベースス…

30日間アウトプットチャレンジ

これは30日チャレンジの最終日(2019/10/09)に書かれた文章です エンジニアたるもの常にアウトプットを心がけること。 たとえどれだけ小さかろうが常に世の中に価値を生み出し続けること。 ソフトウェアエンジニアとして働きはじめ、身の回りにいる猛者たち…

トランザクション分離レベルの理解を言語化した

ソフトウェアエンジニアであれば一度はトランザクション処理という言葉を聞いたことがあるだろう。 トランザクション処理とは、互いに依存関係を持つある一連の操作が、すべて完了される、あるいはすべて破棄(アボード)されることを保証する処理を指す。 …

gRPC server (Ruby) でinterceptorを用いたSentryインテグレーション実装

サービスの運用・保守にあたり、 Run-timeのエラーログ収集はとても重要なタスクです。 ログ全体からエラー発生部分を抽出し監視することもできますが、エラーログの収集に特化したサービスとしてSentryが便利です。 Web画面からスタックトレースを確認し、…

ブログ再開宣言から一年が経ちました

久しぶりにブログを書こうと思いたち、確認したところ、ちょうど一年前にブログ再開宣言記事を書いていたことが判明した。 我が事ながら再開宣言をしていたこと自体を完全に忘れており、無論、一本も書けないままあっという間に一年が経過してしまった。 こ…