2021年の振り返り

6 min read | #ポエム #振り返り #新卒 #投資 #本 #アニメ #ライブ #クラブ #旅行 #ゲーム

こんにちは、@p1assです。

年末恒例、人生の振り返り記事です。 今年は

  • 時間
  • 仕事
  • 投資
  • 趣味

の 4 トピックでお届けします。

続きを読む

二項演算子のASTを参考にした動的なフィルターのデータ構造

6 min read | #開発 #設計 #データ構造 #Go

この記事はDeNA 21新卒×22新卒内定者 Advent Calendar 2021の 1 日目の記事です。

こんにちは、@p1assです。

いよいよDeNA 21新卒×22新卒内定者 Advent Calendar 2021が始まります 🙌
今年は新卒と内定者によるこの Advent Calendar と DeNA のエンジニアが担当するDeNA Advent Calendar 2021の 2 種類があるので、どちらもぜひチェックしてください! (執筆時点では新卒 Advent Calendar はまだ埋めてないですがこれから埋まっていくはず…!)


さて、ここからは本題に入っていきます。

世の中には何らかのコレクションから条件に一致するものをフィルターする処理がよくあります。 例えば、「ユーザ一覧の中から年齢が一定以上の人のみを表示する」などです。(こういった条件をこれ以降「フィルター条件」と呼びます。)

このようなフィルター条件は 1 つであれば簡単ですが、複数の条件が組み合わさると少しずつ複雑になっていきます。 また、これらの条件がプログラムの中に静的に埋め込まれるのではなく、エンドユーザーのリクエストによって動的に変化すると、より面倒になってきます。

今回はいくつかのフィルター条件を自由自在に組み合わせて新たな合成フィルター条件を作り出すためのデータ構造を紹介します。 デザインパターンを知っている人にとっては既知の構造ですが自由度を保ちつつ複雑なフィルター条件を実装できるので、参考になれば幸いです。

続きを読む

ドキュメントの運用を考えてみたが正解が分からない

5 min read | #開発 #ドキュメント

ドキュメント運用について考える機会があったので、そのとき考えてたことをダンプしてみる。 実際に運用しているわけではないので机上の空論だが、文字に起こしてみることで何か得られないかと思いやってみる。

続きを読む

EnumやUnionの列挙子が増えたときに起こりうる人為的なバグを撲滅したい

9 min read | #設計 #enum #switch #パターンマッチング

こんにちは、@p1ass です。

Enum や Union 型は、取りうる値を列挙する上で非常に便利な構文です。 曜日のようなものを全列挙したり、エラーコードのように本来 string 型として無限の集合だったものを有限の列挙としてアプリケーション側で扱ったりと、様々な用途で使われます。

これらの型は if や switch などの条件分岐やパターンマッチングと共に使われることが多いです。 しかし、これらの処理は列挙子を増えたときに意図しないバグを埋め込んでしまうことも多いです。 そこでこの記事では、Enum と switch を組み合わせたときに人為的に起こしうるバグを紹介しつつ、できるだけ静的にバグを発見するための方法を考えていきます。

先に話をまとめると、この記事に書いてあることは、

  • default はできるだけ使わないようにする
  • switch 式や match 式があるプログラミング言語は羨ましい
  • 上記の構文がない言語では静的解析に頼ろう

になります。

サンプルコードは TypeScript と Rust で書いていますが、これらの言語特有の話をしたいのではなく、一例として挙げています。

続きを読む

他言語を書いているエンジニアがJavaをざっくりキャッチアップする

9 min read | #開発 #Java #入門

こんにちは、@p1ass です。

この記事は、他のプログラミング言語は書いているが Java はそんなに書いていない/忘れた私が Java をキャッチアップするために得た知識をまとめたものです。 ある程度他の言語を書いている人であれば文法周りは困らないと思うので、エコシステム周りを重点的に書いています。

続きを読む

ISUCON11予選に出場し48位で予選敗退しました

9 min read | #ISUCON #Go

こんにちは @p1ass です。

今年も去年に引き続きISUCON の予選に参加しました。 去年は FAIL で学生枠の本戦出場を逃したので「今年こそは!」と思っていたのですが、タイトルの通り予選敗退しました。 結果は Best が 71,673 点、追試スコアが 67,097 点で 48 位でした。

この記事では、競技中にやったことをまとめておきます。 実装言語は Go で、メンバーは @Lorse@usagigaです。

続きを読む

「データ指向アプリケーションデザイン」を読んだ

3 min read | #読書 #設計 #データベース #インフラ

こんにちは、@p1ass です。

先日、ずっと積んであった「データ指向アプリケーションデザイン」を読み終わりました。 書籍自体は一年半以上前に頂いていたのですが、当時の自分には難しい内容でずっと放り投げていました。 しかし、最近になって本書のサブタイトルにもある 「信頼性、拡張性、保守性の高い分散システム設計」 に対する興味が増したので改めて読み始めました。 今回は興味も相まって最後まで読み切れたので、忘れないうちに軽く本書を読んだ感想を書いておこうと思います。

続きを読む

「趣味プロジェクトを支える技術」というタイトルで登壇しました

5 min read | #マネジメント #個人開発 #登壇

こんにちは、@p1assです。

この記事は、CAMPHOR- DAY 2021で発表した「趣味プロジェクトを支える技術」の書き起こし記事です。 2 ヶ月以上前の発表ですが、重い腰を上げて書きました。

スライドは最後に置いてあるので、長ったらしい文章を読みたくない方はスクロールして読んでください。

ここで書いている内容は個人の経験を元に書いているので、万人受けするものかどうかわかりませんが、一例として参考になれば幸いです。

続きを読む

今までにGoでよく聞かれた質問とその参考リンク

11 min read | #開発 #Go

こんにちは、@p1assです。

最近研修で Go を書いていて、その際にいくつか質問をされるのですが、聞いてみると前にも答えたような質問が多かったので、これを機にブログに参考リンクをまとめようと思います。 質問された際にすぐ答えられない質問も数多くあり、調べたり教えてもらったりすることで様々なことを再発見できました。

この記事では、質問に対する回答をできるだけ公式に近い文章を引用する形で書き記します。私個人の考えは別の段落になるようにして、事実と意見を区別するように心がけています。

なにか誤りを見つけた際は GitHub で PR を投げていただけると助かります。

続きを読む

新卒Webエンジニアの上京引越振り返り

6 min read | #日常生活 #引っ越し #新卒 #金

アイキャッチ 画像はフリー素材です

こんにちは、@p1ass です。

4 月から東京の会社に正社員として入社することになり、3 月に京都から東京へ引っ越しました。 今回は初めての 1 人での引っ越しだったため、何から何まで自分で調べる必要があり非常に苦労しました。

せっかくの機会なので、今回は引っ越しをする上で学んだことをまとめようと思います。 自分の備忘録でもありますが、今後同じような引っ越しをする方の参考になれば幸いです。

なお、タイトルに「Web エンジニア」と書かれていますが、これは同職種の人に読んでほしいからつけています。内容としてはどなたにも参考になると思います。

続きを読む