Go製Git操作ツール「ggc」の紹介
2025年6月15日Go製Git操作ツール「ggc」の紹介 概要 Gitを操作するためのクライアントツールは様々便利なものがあるが、自分はずっと秘伝のタレのようなスクリプトを組んでaliasを用意して使っていた。 aliasを覚えていればCLIで最速のGIt操作ができるのだが、スクリプトの保守性やら柔軟性をずっと気にしていたので自前でスクラッチしてみた。 CLIだけでは操作性の充実に限界があると思ったのでCUIも対応...
Go製Git操作ツール「ggc」の紹介 概要 Gitを操作するためのクライアントツールは様々便利なものがあるが、自分はずっと秘伝のタレのようなスクリプトを組んでaliasを用意して使っていた。 aliasを覚えていればCLIで最速のGIt操作ができるのだが、スクリプトの保守性やら柔軟性をずっと気にしていたので自前でスクラッチしてみた。 CLIだけでは操作性の充実に限界があると思ったのでCUIも対応...
概要 Rubyの並行モデルやGVLの役割、Pumaサーバのスレッド・プロセス設計、IO/CPUバウンドの捉え方、計測手法によるボトルネック把握、Rails/Pumaデフォルト設定変更背景などを整理し、適切なチューニング方針を提示する。 Rubyの並行モデルとGlobal VM Lock(GVL) GVLの存在意義 Ruby(MRI/CRuby)にはGlobal VM Lock(GVL)があり、同一...
概要 Go言語は、軽量なgoroutineとランタイム機構により並行処理(concurrency)を強力にサポートし、Go 1.5以降はデフォルトでGOMAXPROCSが利用可能CPUコア数に設定されるため、適切に設定することでマルチコアを活かした並列実行(parallelism)も可能とする。本記事では、goroutineのスケジューリングやCPUバウンド処理でのマルチコア活用の仕組み、OSプロ...
OPA の基本モデルと課題背景 OPA(Open Policy Agent)は Rego 言語で記述されたポリシーを用いて、入力(input)や外部データ(data)に基づいて評価を行い、許可/拒否などの判定を行うエンジンである。 実装例については、AWS Prescriptive Guidance のマルチテナント API 認可制御ガイドが参考になる。OPA を活用した SaaS におけるマルチ...
概要 個人の資産形成を考えるためのツールとして、資産推移シミュレーターを開発したので、それについて紹介したい。 asset-trend-simulator 背景 私はMoney Forwardを使って資産管理をしているが、将来の資産推移のシュミレーションにはSpreadsheetを使ったものを利用していた。 Spreadsheetでもそれなりの精度(実際の資産推移のズレが数十万程度に済むような正確...
Open Policy Agentについて詳しく知りたかったので、公式ドキュメントを参照して調べてみた。 Open Policy Agentとは Open Policy Agent(OPA、「オーパ」と発音。)とは、ポリシー適用のためのOSSの汎用ポリシーエンジン。 宣言型言語(Rego、「レイゴ」と発音。)を用いてポリシーをコードとして記述することができる。 Styraによって開発されており、現...
FuelPHPの2023年3月現在の現況という記事を書いた。 最近の近況はどうだろうと思って、ChatGPTのdeep research機能を使って調査してみた。(去年からPHPから離れてしまったので、あまり時間をかけて調査するモチベーションはなかった..) 結論だけいうと、前回の調査からあまり大きな変化がないといえそう。 あと引用が自分の記事ばかりになっている...w 以下はChatGPTの出力...
脳に収まるコードの書き方 ―複雑さを避け持続可能にするための経験則とテクニックを読んだ。 タイトルからプログラマ脳を彷彿して認知科学的な話が交えられているかなと思ったが、そうではなかった。 この本は脳内メモリに収まるコードを書くための実践的なプラクティスが語られている。 全体的に自分の経験則から共感を得る部分が多かった。著者はコンピューターサイエンスの学部ではない出身でソフトウェアエンジニアのキャ...
Rubyにおけるシングルトンパターンの実装方法についてまとめる。 シングルトンパターンとは シングルトンパターンは、インスタンスが1つしか存在しないことを保証するデザインパターンである。 Singletonモジュールを作成する方法 RubyにはSingletonモジュールが用意されており、これを使うことでシングルトンパターンを実装することができる。 require 'singleton&...
Rubyのインスタンス変数とクラス変数とクラスインスタンス変数の違いについてまとめる。 インスタンス変数 インスタンスごとに異なる値を保持する変数で、@で始まる変数名を使う。 主にクラス内部で宣言されたオブジェクトごとの状態を管理するために使われる。 class Person def initialize(name) @name = name # インスタンス変数 end d...