一般社団法人 全国個人事業主支援協会

MEMBER メンバー

  • GitOpsとは何か:なぜ今注目されているのかGitOpsは、Gitリポジトリをシステムの望ましい状態の単一の信頼源(Single Source of Truth)として扱い、宣言的にインフラとアプリケーションを管理するアプローチだ。従来のCI/CDパイプラインでは「pushベース」でデプロイが実行されていたが、GitOps[…]

  • テクニカルデットを「見える化」する重要性ソフトウェア開発の現場で「技術的負債(テクニカルデット)」という言葉を聞かない日はないでしょう。しかし、多くのチームが「負債があります」と感覚的に認識しながらも、その深刻度を定量的に把握できていないのが実情です。私自身、過去に携わった複数のプロジェクトで、テクニカルデットの蓄積がリリース速度の低下やバグ率の上昇として表面化するまで放置されるケースを何度も見てきました。テクニカルデットの定[…]

  • なぜエンジニアにテクニカルライティングが必要か優れたコードを書くエンジニアは多いが、優れたドキュメントを書くエンジニアは驚くほど少ないです。筆者はこれまで数多くの開発チームを見てきたが、ドキュメントの質がプロジェクトの成否を左右するケースを何度も目の当たりにしてきた。設計書が曖昧で実装者ごとに解釈が異なった結果、大規模な手戻りが発生した事例。障害対応手順書が不備で復旧に余計な時間がかかった事例。逆に、明確なADR(Archit[…]

  • 画像分類の歴史的転換点画像分類は深層学習の中でも最も研究が進んだ分野の一つです。2012年のAlexNetによるブレークスルー以来、CNNが画像認識の王道であり続けた。しかし2020年、Googleが発表したVision Transformer(ViT)が、Transformerアーキテクチャによる画像分類の可能性を示し、パラダイムシフトが起きた。本記事では、PyTorchを使ってCNNとViTの両方を実装し、そのアーキテクチ[…]

  • なぜ今、分散トレーシングが必要なのかマイクロサービスアーキテクチャの普及に伴い、1つのリクエストが複数のサービスを横断して処理されるのが当たり前になりました。障害が発生したとき、「どのサービスで」「どの処理が」「どれだけ時間がかかったか」を追跡するのは、ログだけでは困難です。分散トレーシングは、サービス間を跨ぐリクエストの流れを可視化し、パフォーマンスのボトルネックや障害の原因を特定するための技術です。OpenTelemetr[…]

  • モダンJavaが目指すイミュータブル設計Java 16で正式導入されたRecord型と、Java 17で導入されたSealed Classは、Javaの型システムを大きく進化させた機能です。筆者はこの2つの機能を本番コードに導入してから約2年が経つが、バグの[…]

  • DNSはインターネットの電話帳である私たちが毎日当たり前のように使っているWebブラウジング。その裏では、DNSという巨大な分散データベースが休むことなく動き続けています。エンジニアとして10年以上インフラに関わってきた経験から言えば、DNSを深く理解しているかどうかで、トラブルシューティングの速度は劇的に変わる。本記事では、名前解決の基本的な仕組みからDNSSECまで、実務で役立つレベルで解説する。名前解決の仕組みを正確に理[…]

  • 合成データとは何か合成データ(Synthetic Data)とは、実際の観測やイベントから直接取得されたもの[…]

  • CDNの基本的な仕組みCDN(Content Delivery Network)は、世界中に分散配[…]

  • Redisが選ばれる理由Redisは単なるキャッシュサーバーではありません。インメモリデータストアとして、キャッシュ、セッション管理、リアルタイムランキング、メッセージキュー、Pub/Subメッセージングなど、多彩なユースケースをカバーする万能ツールです。筆者が関わったプロジェクトのほぼすべてでRedisが使われており、もはやWebアプリケーション開発に欠かせない存在と言える。本記事では、Redisの代表的な活用パターンを実際[…]

  • なぜPostgreSQLでJSONBを使うのかPostgreSQLのJSONB型は、リレーショナルデータベースの堅牢さとドキュメントストアの柔軟性を兼ね備えた強力な機能です。MongoDBのようなNoSQLデータベースを別途運用するコストを考えると、PostgreSQL一本でリレーショナルデータとドキュメントデータの両方を扱えるメリットは非常に大きいです。筆者が過去に担当したECサイトのプロジェクトでは、商品のカスタム属性管理[…]

  • 技術的負債とは何か:改めて定義を整理する技術的負債(Technical Debt)という言葉は、ソフトウェア開発の現場で日常的に使われるようになりました。しかし、この概念を正[…]

  • iOSアーキテクチャの変遷iOS開発におけるアーキテクチャの議論は、プラットフォームの成熟とともに進化を続けてきた。初期のiOS開発ではAppleが推奨するMVC(Model-View-Controller)が標準でしたが、アプリケーションの複雑化に伴い「Massive View Controller」と揶揄されるほどViewControllerが肥大化する問題が顕在化した。その後、MVVM(Model-View-ViewMo[…]

  • CI/CDパイプラインの課題現代のソフトウェア開発において、CI/CDパイプラインは不可欠なインフラです。しかし、GitHub Actions、GitLab CI、Jenkins、CircleCIなど、各プラットフォームは独自の設定記法を持ち、一度構築したパイプラインを別のプラットフォームに移植するのは容易ではありません。いわゆるベンダーロックイ[…]

  • NoSQLが選ばれるシーンリレーショナルデータベースが万能でした時代は終わり、アプリケーションの要件に応じてデータストアを選択する時代になった。大量のデータを高速に読み書きする必要がある場合、スキーマの柔軟性が求められる場合、あるいは地理的に分散した環境でのデータレプリケーションが必要な場合など、NoSQLデータベースが真価を発揮するユースケースは多いです。しかし、NoSQLと一口に言っても、その設計思想やデータモデルは製品ご[…]

  • ネットワーク自動化が必要な理由ネットワークインフラの管理は、長らく手作業によるCLI操作が主流でした。しかし、クラウドやコンテナ環境の拡大に伴いネットワーク構成は複雑化の一途を辿っており、手動オペレーションでは対応しきれない規模になってきています。設定ミスによる障害、変更作業の属人化、監査対応の煩雑さなど、従来のやり方では解決困難な課題が山積しています。Pythonはネットワーク自動化の分野で最も広く使われているプログラミング[…]

  • Go言語における並行処理の哲学Go言語の設計思想の中でも、並行処理のモデルは特に優れています。「共有メモリで通信するのではなく、通信によってメモリを共有せよ」というGoの格言は、goroutineとchannelを使った並行処理パターンの本質を端的に表しています。筆者はGoで複数のマイクロサービスやCLIツールを開発してきましたが、Goの並行処理モデルに慣れると、他の言語でスレッドやロックを扱うのがとても煩雑に感じるようになり[…]

  • SREとは何か:運用の属人化からの脱却Site Reliability Engineering(SRE)は、Googleが提唱したソフ[…]

  • Whisperが変えた音声認識の世界OpenAIが2022年にリリースしたWhisperは、音声認識の民主化を大きく前進させたモデルです。多言語対応、高精度、オープンソースという3つの特徴を兼ね備えており、商用利用も可能なライセンスで公開されています。筆者も複数のプロジェクトでWhisperを活用してきましたが、日本語の認識精度は従来のOSSモデルと比較して格段に向上していますと実感しています。本記事では、Whisperを使っ[…]

  • さらに読み込む
一覧へ戻る