記事一覧
技術記事・日々の学びをまとめています。
アルゴリズムとデータ構造 - バブルソート
アルゴリズムとデータ構造を学ぶシリーズの記事。比較ベースのソートであるバブルソートを取り上げ、隣り合う要素を交換していく仕組みとO(n²)の計算量を、Goでの実装例とともに解説する。
最新記事
アルゴリズムとデータ構造 - ヒープソート
アルゴリズムとデータ構造を学ぶシリーズの記事。二分ヒープ木を使ってO(n log n)でソートするヒープソートを取り上げ、ヒープの構築やルートの取り出しの手順を、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - 挿入ソート
アルゴリズムとデータ構造を学ぶシリーズの記事。配列をソート済みと未ソートに分け、1要素ずつ並べていく挿入ソートを取り上げ、O(n²)の計算量とGoでの実装例をあわせて解説する。
アルゴリズムとデータ構造 - マージソート
アルゴリズムとデータ構造を学ぶシリーズの記事。分割統治法によるマージソートを取り上げ、最悪O(n log n)の計算量や、再帰的な分割とマージの手順を、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - クイックソート
クイックソートを解説。平均O(n log n)・最悪O(n²)の計算量、ピボット選択、low/highへの分割、ランダム化したGo実装を紹介します。
アルゴリズムとデータ構造 - 選択ソート
アルゴリズムとデータ構造を学ぶシリーズの記事。最小の要素を繰り返し探して所定の位置に入れ替える選択ソートを取り上げ、O(n²)の計算量とGoでの実装例をあわせて解説する。
GolangでgoblinというURLルーターを自作した
GoでURLルーターを自作した際の実装過程をまとめた記事です。トライ木というデータ構造を用いて、パスパラメータや正規表現によるマッチングに対応した高性能なURLルーター「goblin」を、設計の検討から実装まで順を追って解説します。
二分探索木(BST)とは|計算量とGoでの実装
二分探索木(BST)を解説。平均O(log n)の探索・挿入、DFS(先行順・中間順・後行順)とBFSによる走査を、GoでのBST実装例とともに紹介します。
アルゴリズムとデータ構造 - ヒープ
優先度付きキューを実現するmin-heap/max-heapの仕組みを解説。O(log n)の挿入・削除と、Goでのヒープ実装を紹介します。
2019年の振り返りと来年の抱負
2019年の1年を振り返り、来年の抱負を綴った記事。公私ともに良い機会や経験に恵まれた一年をポエムとして総括し、リードエンジニア的な役回りの経験などを振り返りつつ、翻年への抱負をまとめる。
URLルーティング自作入門 エピソード2
「URLルーティング自作入門」シリーズのエピソード2です。エピソード1に続き、URLルーティングをトライ木を使って実装していきます。パスのマッチング処理や、HTTPメソッドに対応した動的なルーティングの構造について、図解を交えながら実装を進めていきます。
URLルーティング自作入門 エピソード1
「URLルーティング自作入門」シリーズのエピソード1です。趣味でURLルーティングを自作してきた経験から、自作の敷居や応用範囲について触れつつ、ルーティングに使う木構造のアルゴリズムや、各種Webフレームワークの参考実装を探索していくモチベーションを紹介します。
2019年の全PHPカンファレンスをコンプリートした
2019年の日本のPHPカンファレンス(仙台・Laravel JP・PHPerKaigi・福岡・北海道・沖縄)を全制覇した記録を紹介します。
Design It
『Design It』の書評。ソフトウェアアーキテクトが果たすべき役割や責任を学べる一冊。アーキテクトをビジネス・技術・ユーザーの3要素の中心に立つ存在として捉え、エンジニアリング視点からの問題定義など具体的な責務を整理する。
アルゴリズムとデータ構造 - キュー
アルゴリズムとデータ構造を学ぶシリーズの記事。FIFOのキューというデータ構造を取り上げ、enqueue・dequeueの操作やスタックとの計算量の比較を、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - スタック
アルゴリズムとデータ構造を学ぶシリーズの記事。LIFOのスタックというデータ構造を取り上げ、push・pop・peekの操作と計算量を、Goのスライスを使った実装例とともに解説する。
GolangのHTTPサーバーのコードリーディング (Go6 Advent Calendar 2019)
Qiita Go6 Advent Calendar 2019向けにGolangのHTTPサーバー内部実装をコードリーディング。net/httpパッケージのListenAndServe、ServeMux、Handlerインターフェースの動作を詳細に解析。
アルゴリズムとデータ構造 - 配列
アルゴリズムとデータ構造を学ぶシリーズの記事。データ構造としての配列を取り上げ、O(1)のランダムアクセスやO(n)の挿入・削除、静的・動的なメモリ確保の違いを、Goでの実装例とともに解説する。
アルゴリズムとデータ構造 - リスト
単方向連結リストの仕組みを解説。O(n)のアクセスとO(1)の挿入・削除、ポインタによるノードの走査、Goでの線形連結リスト実装を紹介します。
PHPカンファレンス沖縄2019に参加してきた
PHPカンファレンス沖縄2019で聞いた、PHPのメタプログラミング、OOP、クリーンアーキテクチャ、DDD、Webセキュリティ、ミューテーションテストなどのセッションを紹介します。