検索結果

There are 63 results found.

みんながあなたについて知っていること:小売業者

本記事は、現代のデータ収集について扱う連載の一部です。これまでの記事では、ロボット掃除機や腕時計、ウェブブラウザなど、さまざまなデバイスを取り上げてきました。今回は、そうしたデータが最終的にどこへ集まっていくのかを見ていきます。 本記事は、この連載の中でも特に内容が広範かつ複雑です。あなたの家の近所にある小さな商店ではないかもしれませんが、チェーン店や大規模な小売業者は、まさに「飽くなき」情報収集者です。 小売業者の最大の関心は、あなたの喉元をつかんで無理やり商品を買わせることではありません。むしろ、収集されたデータの多くは、仕入れ、マーケティング、棚割りなどの企業運営において、集計データとして活用されます。つまり、冬にティッシュが品切れになるのを防いだり、酢が油の隣にきちんと並んでいるようにしたりするために使われるのです。 小売業におけるデータ収集の基本を理解するには、「小売マーケターが顧客について知っておくべき指標」に関する記事が参考になります。また、データサイエンス企業Tredenceのサイトでは、小売顧客分析とその活用方法について説明されています。 実は、顧客追跡には長い歴史があります。デジタル時代に始まったわけではありません。ある歴史的調査によれば、データ収集が本格化したのは1980年代、店舗にバーコードスキャナーが導入されてからだとされています。 2000年代に入ると、データは複数の「チャネル」から収集されるようになりました。顧客の好みを把握するための消費者アンケートは以前から活用されてきましたが、現在ではさらに、居住地、店舗までの移動時間、購入のタイミングや頻度、支払い方法(クレジットカードなど)、セールへの反応といった情報も加えられています。最近では、オンライン投稿内容を確認する「ソーシャルデータ」も取り入れられています。 別の記事では、小売顧客データを「4つの基本的な種類」に分類しています。すなわち、本人確認情報(アイデンティティデータ)、購入に関する記述データ、本人確認情報と購入データを結びつけて「行動を反映したより深いパターン」を導き出す行動データ、そして顧客のフィードバックから得られる「顧客が何を考えているか」を示す定性データです。 今日のように金融情報や個人情報を含む広範なデータ収集が拡大してきた経緯は、マッケンジー・ファンク著『The Hank Show: How a House-Painting, Drug-Running DEA Informant Built the Machine That Rules Our Lives』に詳しく描かれています。本書は、現在の米国で小売業者、銀行、政府が利用しているデータ基盤を築いたハンク・アッシャーの伝記であり、読み物として面白いだけでなく、示唆にも富んだ内容です。LexisNexisも彼の遺産の一部です。 店舗内では、Bluetooth接続やカメラによって、あなたが何を見ているのかまで把握される場合があります。(もちろん、カメラはスタッフ保護や万引き防止の目的でも設置されています。)より広い視点からの別の記事では、ブラウザの利用(本連載の後半で扱います)や、店舗内での位置情報や視線追跡技術の活用についても触れられています。 こうしたデータのさまざまな活用方法については、別の記事で一覧化されています。 私たち夫婦は最近引っ越しましたが、最初のホーム用品カタログが届くまでに3週間半しかかかりませんでした。もちろん、オンラインでいくつか注文もしましたし、住所情報はあっという間に広まります。 では、小売業者はどれほどあなたのことを詳しく知ることができるのでしょうか。その一例が、行き過ぎた行為により罰金を科された企業の事例です。 「情報コミッショナー事務局(ICO)は、カタログ小売業者Easylife Limited(以下『Easylife』)が、顧客の同意なしに145,400人について推定される健康状態をプロファイリングしていたと認定しました。これは、Easylifeのヘルスカタログで購入された特定の『トリガー商品』に基づくものでした。たとえば、顧客が瓶のふた開け器や食事用トレイを購入すると、Easylifeはその顧客が関節炎である可能性があると推測し、グルコサミン配合の関節パッチを販売するために電話をかけていました。」 このEasylifeの事例は裁判で事実認定されています。一方、有名な「Targetのおむつ事件」については、一部の研究者がその正確性に疑問を呈しています。 次回の記事では、金融機関に話題を移します。 << 本連載の前回記事を読む

AIのためのデータベース:ベクトル、埋め込み、そしてアーキテクチャ

機械学習であれ、LLM(大規模言語モデル)のような比較的新しい技術であれ、AIについて語る人は皆、AIが膨大な量のデータを必要とすること、そしてそのデータがこれまでとは根本的に異なる方法で活用されていることを指摘します。現在、何千もの新しいデータセンターが建設されており、その規模もますます大型化しています。 では、その莫大なデータはどのように保存されているのでしょうか。この新しい時代におけるデータベースとは、どのような姿をしているのでしょうか。 実は、従来からあるデータベースの中には、AI向けに拡張されたデータ型やAPIを備えて「新しく生まれ変わっている」ものもあります。一方で、まったく新しいタイプのデータベースも登場しています。本記事では、世界中のデータベース開発者がAI革命の熱狂の一端をつかもうとどのように動いているのか、そして現在の主要な選択肢には何があるのかを見ていきます。 すべてはベクトルである AIデータの特性と、その処理・保存方法を理解するには、「ベクトル」という概念に焦点を絞る必要があります。 高校で線形代数を学んだことがある人なら、ベクトルや行列を習ったはずです。コンピューティングの文脈で言えば、ベクトルとは単なる配列、つまり浮動小数点数の順序付き集合です。重要なのは、各要素が現実世界の何らかの側面を表している点です。たとえば、ある値は年齢、別の値は身長、また別の値は体重を表すかもしれません。 このため、ベクトルの各要素は「次元(ディメンション)」と呼ばれ、概念的には多次元空間上の一点を表します。AIモデルが顧客の属性や機械部品の故障要因などを考慮する際に、データサイエンティストが「次元」という用語を使うのはこのためです。 ベクトル演算は、機械学習やLLMにとって非常に効率的です。これらの技術はいずれも「どれだけ似ているか/異なるか」という概念に強く依存しているからです。たとえばLLMは、スペイン語で一般的な定冠詞「el」を構成する文字EとLの関連性を理解します。同じ文字はフランス語でも似た関係を持ち、そこでは「le」という冠詞になります。 より高い抽象度では、LLMは犬とオオカミの類似性を認識し(時には混同しながら)、犬と猫よりも犬とオオカミのほうが似ていることを学習します。 AIにおける類似性や差異は、数学的にはベクトル間の差として表現されます。差の計算方法には、ユークリッド距離、マンハッタン距離、コサイン類似度、内積などさまざまな手法があります。犬とオオカミのように似たベクトル(「埋め込み(embedding)」とも呼ばれます)を見つける処理は、「ベクトル類似検索」と呼ばれます。 さらに、ベクトルや多次元構造(テンソル)に対しては、ガウスの消去法のような高度な演算も開発されています。また、「チャンク化(chunking)」と呼ばれる処理では、データの一部を小さな文書単位にまとめ、それらを比較して内容の類似性を見つけます。 現在、ベクトル型を定義するデータベースは増え続けています。インターフェースは製品ごとに異なりますが、将来的には標準APIへと収束し、SQLもテキストからベクトルへの変換といった重要な操作を表現できるよう拡張されると私は予測しています。 デジタルデータとしてのベクトルは、従来のデータと同様にデータベースの機能を活用できます。検索を高速化するためにインデックスを作成したり、圧縮(さまざまな最適化を含む一般的な概念)によって保存容量や冗長性を削減したりすることが可能です。 AIデータ処理に特有の要因 機械学習やLLMの開発にデータを利用することは、従来のデータ処理よりもはるかに複雑です。AIは膨大な量のデータを必要とするためです。 従来の分析は、たとえば小売業者が顧客の年齢と購買行動の相関を調べるといったように、主に組織内部のデータを対象としていました。しかし、多くの組織は機械学習に十分なデータを単独では保有しておらず、LLMに至ってはなおさらです。そのため、現代のAIは広範囲からデータを収集します。(現在、多くのコンテンツ制作者がAI開発企業に対して訴訟を起こしている背景には、こうした事情があります。なお、私が関わった書籍もAnthropic著作権和解に関連しています。) データ保存についても同様の傾向があります。AIモデル構築のために収集したすべてのデータを保存できる組織はごくわずかです。しかも、それらの組織はデータセンター建設をめぐって激しく競争しています。ほとんどの組織は、AIの基盤となる重要なベクトルデータ(埋め込み)を生成する非常に複雑なシステムを自前で構築することすらありません。代わりに、OpenAI、GoogleのGemini、Claudeといった強力なAIプラットフォームを利用します。 LLMの誤りや極端に不正確な結果(「ハルシネーション」)は、登場当初からユーザーを失望させ、ときには不安にさせてきました。また、オンライン上の情報が少ない珍しいテーマでは、一般的なテーマよりも精度が低いことも指摘されています。 そこで近年、開発者は「検索拡張生成(RAG:Retrieval Augmented Generation)」と呼ばれる手法で改良を進めています。 RAGの基本的な考え方は、インターネット上の玉石混交の情報を無差別に利用するのではなく、信頼性が検証されたデータベースを活用してモデルを補強し、より正確な回答を生成するというものです。RAGは現在「リアルワールドモデル」と呼ばれるアプローチの中核的要素となっています。 また、「ドメイン特化型言語モデル(DSLM)」という用語も広まりつつあります。これは特定分野に焦点を当てたモデルを指し、「ドメイン特化言語」など他分野の概念とも呼応しています。 素人目には、「信頼できるデータを使う」というのは当然の発想に思えます。しかし哲学的には、これはAIの大きな方向転換です。1950年代から、技術楽観主義者たちは汎用人工知能(AGI)を目指してきました。AIが人間と同等、あるいはそれ以上の知性を持つことを夢見ていたのです。 しかし現在、RAGやリアルワールドモデルへの移行は、開発者が実用的な方向へ舵を切り直していることを示しています。 一方で、AIコンサルティング企業Peripety LabsのCEOであるMark Hinkle氏は、AGIという枠組み自体に疑問を呈しています。「AGIは本質的ではありません。目標は人間並みの知能ではなく、単純作業や危険作業をデジタル従業員に任せられる十分な能力を持つことです。RAGは開発者が本当に役立つものを構築している証です」と述べています。 現在、特定分野で正確な知識表現を求めるユーザーは、まず主要AIベンダーから一般的なベクトルセットを取得し、そこに自組織の内部データ(研究成果、SNS投稿、調査結果など)を追加して独自の洞察を生み出します。 関連ライブラリと今後 本記事ではベクトルが提供する基本操作を紹介しました。Faiss(C++およびPython対応)は、ベクトル演算を行うオープンソースライブラリの一例で、GPUを活用して処理を高速化できます。 LangChain(Python)やLlamaIndex(PythonおよびTypeScript)も代表的なオープンソースライブラリです。これらはオンラインAIサービスやWikipediaなどの大規模データセットを活用し、AIアプリケーション開発を支援します。いずれもGPUによる高速化を利用できます。 次回の記事では、実際に利用されているデータベース製品をいくつか取り上げていきます。

DevOpsツール入門 #06:コンテナの基礎

コンテナ仮想化とDocker/Podmanの基礎 コンテナ仮想化は、現代のソフトウェアアーキテクチャを支える主要技術の一つです。コンテナ仮想化という概念自体は以前から存在していましたが、近年のツールは純粋な仮想化機能に加え、コンテナ化されたソフトウェアの展開を容易にする多くの機能を提供しています。その分野で最も代表的なプロジェクトがDockerです。DevOps Tools Engineer認定の試験目標702.1では、DockerおよびPodmanコンテナに完全に焦点が当てられています。 OCI仕様と標準化 DockerとPodmanはいずれも、Open Container Initiative(OCI)仕様を実装しています。OCIは標準化されたイメージ形式とランタイム動作を定義しており、この準拠により高い可搬性が実現します。ある準拠環境でビルドされたイメージは、別の準拠環境でも変更なしに実行可能です。 DevOpsエンジニアにとって、この標準化は基盤的な意味を持ちます。なぜなら、アプリケーションのパッケージングを実行環境の詳細から切り離すことができるからです。 コンテナの基本概念:エフェメラル設計 コンテナは設計上「エフェメラル(短命)」な存在です。状態を持たないワークロード(ステートレス)はコンテナアーキテクチャと自然に適合します。一方で、状態を保持するワークロード(ステートフル)は、明確なストレージ戦略が必要です。 Dockerのアーキテクチャ Dockerはクライアント・サーバーモデルを採用しています。Docker CLIはDockerデーモン(dockerd)と通信し、イメージ、コンテナ、ネットワーク、ストレージを管理します。 この中央集約型デーモンは、オーケストレーションやAPIベースの自動化を容易にし、統合ワークフローやCI/CDパイプラインとの親和性を高めています。 Podmanのアーキテクチャ 一方、Podmanはデーモンレスアーキテクチャを採用しています。各コンテナは、実行ユーザーの直接の子プロセスとして起動され、runcやcrunといったOCIランタイムを利用します。 この設計により、常駐する特権サービスが不要となり、従来のLinuxプロセス管理やsystemdとの統合に近い構造になります。この違いは、セキュリティ、リソース管理、運用設計に影響を与えます。 イメージとレジストリ コンテナイメージは、Docker Hub、GitHub Container Registry、QuayなどのOCI準拠レジストリを通じて配布されます。 イメージはファイルシステムのスナップショットを層状に重ねた構造を持ち、各レイヤーは段階的な変更を表します。このレイヤー構造により、効率的な配布、キャッシュ、再利用が可能になります。 概念的に重要なのは「イメージの不変性」です。タグは変更可能ですが、ダイジェストはイメージ内容を一意に識別します。実務環境では、再現性とサプライチェーンの整合性を高めるため、可変タグではなくダイジェスト参照が推奨されます。 認証メカニズム、プライベートレジストリ、イメージの出所(プロベナンス)を理解することも重要です。安全なイメージ取得は、コンテナセキュリティの中核です。 コンテナの実行と管理 コンテナはイメージの実行時インスタンスです。コンテナはLinuxの名前空間(namespaces)とコントロールグループ(cgroups)によって分離されたプロセスであり、ホストカーネルを共有します。 コンテナは仮想マシンではありません。ハイパーバイザーではなく、ホストカーネルを利用して分離を実現します。 運用では、ライフサイクル状態(created、running、paused、stopped、removed)の管理、メタデータ確認、ログ取得、実行中プロセスとの対話などが含まれます。本番環境では、可観測性とライフサイクル統制が不可欠です。 コンテナネットワーク コンテナネットワークは、Linuxのネットワーク機能を仮想ネットワークとして抽象化します。デフォルトではブリッジネットワークに接続され、内部通信と外部公開を制御できます。 オーバーレイネットワークは複数ホスト間に拡張され、異なるマシン上のコンテナが同一論理ネットワーク上にあるかのように安全に通信できます。これはクラスタ環境や分散アプリケーションに不可欠です。 ストレージとボリューム コンテナストレージはCopy-on-Writeを用いたレイヤーファイルシステムに基づきます。各イメージレイヤーは読み取り専用で、コンテナ作成時に書き込み可能な薄いレイヤーが追加されます。このレイヤー内の変更は、コンテナ削除とともに消失します。 ボリュームはコンテナライフサイクルとは独立した永続ストレージを提供します。これにより、データと実行環境を分離できます。 設計力を高めるために ランタイム設計、ネットワーク抽象化、DNSベースのサービスディスカバリ、レイヤーストレージ、永続ボリューム、rootless実行といったコンテナアーキテクチャの理解は、安全かつスケーラブルな本番対応コンテナ基盤を設計するために不可欠です。 Dockerを実践的に学ぶ Dockerを実際に体験するには、Play with Docker Classroomを利用してください。リモートのDocker環境で実践演習が可能です。利用にはDocker Hubで無料作成できるDocker IDが必要です。 Docker ID取得後は、オペレーター向けまたは開発者向けのウォークスルーを選択できます。どちらも豊富な解説と実習を含んでおり、両方受講することを強く推奨します。 さらに、Jérôme Petazzoni氏とAJ Bowen氏による包括的な「Introduction to Docker and Containers」への参加も強く推奨します。 DockerとPodmanの互換性 Dockerコマンドの大部分は、dockerをpodmanに置き換えるだけで実行可能です。両ツールはCLI互換性を意図的に維持しています。 ただし、以下の違いがあります: Dockerは中央デーモン型(dockerd) Podmanはデーモンレス Podmanはrootless実行を前提設計 Podmanはsystemd統合が強力 DockerはSwarmを内蔵 PodmanはKubernetesとの親和性を重視(Pod概念) 次の学習ステップ Play with Docker演習後は、公式Dockerドキュメントでアーキテクチャ、ネットワークモデル、ストレージドライバ、セキュリティ機構を深く理解してください。公式ドキュメントは内部設計理解のための信頼できる情報源です。 並行して、DevOps Tools Engineer 2.0向け公式LPI Learning Materialsも学習してください。試験目標に沿った構成で、概念理解と実務能力を強化します。 << 本シリーズの前の記事を読む | 本シリーズの次の記事を読む >>

みんながあなたについて知っていること:あなたのブラウザ

ブラウザによるデータ収集 本記事は、現代におけるデータ収集をテーマにした連載の一部です。前回の記事では、スマートウォッチやその他の個人用デバイスについて取り上げました。 ブラウザからデータを収集するサイトの多くは小売業者ですが、ブラウザには特有の技術的課題があるため、本連載ではあえて独立したセクションとして扱います。 クッキーの仕組みとその進化 ユーザーを追跡する古典的な手段は、サーバーから送られる符号化されたメッセージをブラウザに保存させる仕組みで、「クッキー(cookie)」と呼ばれています。この少し変わった名称には興味深い背景があります。 コンピュータプログラミングの初期には、開発者たちは特定の文字列をファイル内に埋め込むことでファイル形式を識別していました。たとえば、PostScriptファイルは必ず「%!PS-Adobe」という文字列で始まり、PDFファイルは「%PDF」に続いてバージョン番号が記載されます。こうした文字列は、ファイルを処理するプログラムにとって形式を判別するための手がかり、いわば「クッキー」のような役割を果たしていました。 ブラウザにおけるクッキーは、もともとはセッション管理を助けるために導入されたものです。同じサーバー内のページを移動してもログイン状態を維持したり、設定を保存したりできるようにするのが目的でした。 しかしやがて、サイト運営者は、クッキーを使えば繰り返し訪問するユーザーを識別できることに気づきました。これはマーケティングにとって大きな利点となりました。たとえば、過去の訪問時に靴の写真を閲覧していたことをクッキーで記憶し、次回の訪問時に靴の割引を提示するといったことが可能になります。 DoubleClickとデータの拡大 クッキーによって得られる情報は、DoubleClick(現在はGoogleの一部)が複数の提携小売業者に配信するクッキーを管理し始めたことで飛躍的に増大しました。 これにより、ある小売業者は、自社サイトで過去に閲覧した内容だけでなく、DoubleClickを利用している他の小売サイトで閲覧した内容まで把握できるようになりました。同社はブラウザ上の行動履歴に加え、大量の個人情報も保有しています。 「Do Not Track」はなぜ効果が薄いのか ブラウザの設定でクッキーを無効化することは可能です(その場合、利便性もプライバシー上の影響も同時に失われます)。しかし、一般に「Do Not Track」設定として知られるこの方法は、実際には効果が薄いと考えられています。 その理由は、現代のサーバーが非常に高度な技術を用いているからです。例えるなら、クッキーをやめたとしても、代わりにもっと洗練された追跡手法(いわばクッキーの代わりにクレームブリュレを差し出すようなもの)を使われてしまう、という状況なのです。 ブラウザ・フィンガープリンティング 最初の情報源は、ブラウザの「navigator」設定です。これは主にJavaScriptによって利用されます(なお、プライバシーなどの理由からJavaScriptを無効にする人もいます)。 navigatorに含まれる多くの項目は、個々のユーザーにとって特別な価値のある情報ではありません。しかし設定項目が非常に多いため、それらを組み合わせるとほぼブラウザごとに固有の特徴を持つことになります。 この情報収集は「ブラウザ・フィンガープリンティング(ブラウザ指紋採取)」と呼ばれ、クッキーを使用しなくても、ほぼ同じ精度でユーザーを識別することが可能になります。 IPアドレスとさらなる情報収集 すべてのサーバーは、ユーザーのIPアドレス(より正確には、インターネットプロバイダが設置した中継装置のIPアドレス)を把握しています。これにより、企業はユーザーのおおよその地理的位置を特定できます。 さらに、サーバーはブラウザやコンピュータに関する追加情報も収集できます。場合によっては、バッテリーの状態までも取得可能です。 まとめと今後 以上で、デバイスに焦点を当てた解説は一区切りとなります。本連載の残りの記事では、こうして収集された情報が、私たちの生活における大規模な組織や機関によってどのように利用されているのかを見ていきます。 << 本シリーズの前の記事を読む | 本シリーズの次の記事を読む >>

Maykin:挫折からLPIトレーナーになるまで

私とLinuxの出会い 私が初めてLinuxに触れたのは、大学のコンピュータサイエンスの学部課程でした。正直に言えば、決して華々しいデビューではありませんでした……。 混乱から手応えへ:初期の頃 それ以前から、MS-DOS環境でバッチスクリプトを作成していた経験がありました。趣味の延長のようなもので、ちょっとしたお小遣い稼ぎにもなっていました。そのため、コマンドライン自体は知っていました。 しかし、Linuxはまったく別物でした。最初は難解で、正直なところ心が折れそうになる存在でした。結局その科目は、スキルよりも粘り強さでなんとか乗り切り、ぎりぎりで合格しました。 卒業後、IBMに入社し、大手銀行の顧客先に常駐することになったことで、人生は思いがけない方向へ進みました。担当していたのは、銀行アプリケーションの非機能要件です。当初はパフォーマンス最適化に従事し、膨大なトランザクション負荷に耐えられるようシステムを調整していました。 そのような高い緊張感のある現場で、私はLinuxを単なるオペレーティングシステムとしてではなく、インフラの鼓動に直接触れる手段として捉えるようになりました。やがて業務の範囲はセキュリティ分野にも広がり、それが私のキャリアの方向性を形作ることになります。 挫折から魅了へ 同時期に、情報システムセキュリティの修士課程にも進学しました。平日は働き、週末は講義を受ける生活です。 このプログラムで、私とLinuxの関係は大きく変わりました。ほぼすべての演習がLinuxを前提としていたのです。深夜の課題と早朝の実習を繰り返すうちに、あれほど感じていた苛立ちは、いつしか強い興味へと変わっていました。 コマンドラインの美しさ、そしてその圧倒的な効率性に気づき始めたのです。マウスに触れずに問題を解決できることは、とても力強く感じられました。シェルスクリプトを書くたびに、ゼロからシステムを構築するたびに、自分が状況をコントロールできているという感覚が強まっていきました。 Linuxは、ハッカーの道具箱であり、設計者の設計図であり、そして基礎を教えてくれる教師でもありました。実践的な経験を通して、学部時代に欠けていた文脈がようやくつながったのです。現実のセキュリティ環境の中で、Linuxの柔軟性と奥深さは無視できない存在となりました。 かつては威圧的に感じられたものが、今では理にかなったものとして理解できるようになっていました。 私は、完全に夢中になっていました。 学習者からLinuxの伝道者へ 修士号を取得した後、地元の大学や短大でIT科目の非常勤講師を始めました。どの科目を担当しても、必ず実践的なLinuxスキルを取り入れました。IT教育には不可欠だと心から信じていたからです。 コマンドラインのスキルがきっかけでインターンや就職を勝ち取ったという元学生からの報告は、これまでの中でも特に嬉しい瞬間でした。面接でLinuxの知識が評価されたという話を聞くたびに、基盤づくりに貢献できたことへの満足感を覚えました。 やがて、Linuxの普及者としての役割は自然と広がっていきました。教室の中だけにとどまらなくなったのです。元学生からLPI認定について相談を受けるようになり(それがきっかけで私自身もLPIC-1を取得しました)、同僚からはシステムのハードニングやログ分析に関する社内ワークショップの依頼が来るようになりました。 さらに、非技術職のメンバー――プロジェクトマネージャーやアナリストなど――からも質問を受けるようになりました。私はこう説明しました。 「Linuxを理解することは、建築家が設計図を読めることと同じです。実際にコンクリートを流し込まなくても、構造を理解しているべきなのです。」 そして、素晴らしいことが起こり始めました。人々が実際に試し始めたのです。 VirtualBoxをインストールし、Ubuntuを立ち上げ、スワップサイズについて質問してくる。マネージャーが自信を持ってgrepでログを検索する。若手テスターがシェルスクリプトで作業の80%を自動化できると気づく。 私はインターンを指導し、ブートキャンプで教え、学生が安心して壊し、直し、学べるラボ環境を構築しました。 誰かが「自分には無理だ」から「これ、実は面白いかも」に変わる瞬間を見るたびに、あの頃の情熱がよみがえりました。 …そして原点へ 初めてlsと入力し、表示された内容が理解できなかったあの日から、もう何年も経ちました。「vimの終了方法」と検索して途方に暮れた日からも、ずいぶん時間が過ぎました。 今では、同僚が「ターミナルが怖い」と言うと、私は微笑みます。その恐怖がばかばかしいからではありません。それがすぐに魅了へと変わることを、私は知っているからです。 今でも私は教えています。必ずしも教室の中とは限りません。コーヒーを飲みながらメンティーに話すこともあれば、プロジェクトのキックオフでLinuxベースのコンテナを提案することもあります。あるいは、会話の中で静かにこう言うだけのこともあります。 「それ、スクリプトにできますよ。」 Linuxは単なるツールを与えてくれただけではありません。問題や構造、可能性を捉える新しい視点――ひとつの思考様式を与えてくれたのです。 少し前、ある技術カンファレンスで大学時代の恩師に再会しました。かつて私が恐れていた最初のLinuxの授業を担当していた教授です。 彼は微笑みながら言いました。「まだLinuxに苦戦しているのかい?」 私は笑って答えました。「実は……今は教えています。」 彼は眉を上げました。「そうなのか?」 「ええ。そして、かつての私のように怖がってしまう人が出ないようにしているんです。」 彼はしばらく私を見つめ、うなずきました。「いいことだ。それでこそあるべき姿だ。」 その通りです。まさに、そうあるべきなのです。 そして、はい。私は LPI Approved Trainer であることを誇りに思っています。 << 本シリーズの前の記事を読む | LPIの成功事例をさらに読む >>

DevOpsツール入門 #05:継続的デリバリー

CI/CDが支える現代ソフトウェア開発の基盤 ソースコードを実際に稼働するサービスへと変換するには、現代のスピード重視のソフトウェア開発の要求に応えるため、自動化された一連の工程を連携させ、可観測な形で管理する仕組みが必要です。 継続的インテグレーション(CI)および継続的デリバリー(CD)は、この変革を支える概念的・技術的な基盤です。バージョン管理に加えられたすべての変更が、自動的にビルドされ、テストされ、安全にリリースできる状態に準備されることを保証します。 LPI DevOps Tools Engineer 試験目標、とりわけ 目標701.4 においては、CI/CDは単なるツールの問題としてではなく、**開発・品質保証・本番環境の信頼性を結びつける運用上の規律(オペレーショナルディシプリン)**として位置づけられています。 Martin Fowlerによる継続的インテグレーションおよび継続的デリバリーに関する著作は、これらの実践がどのように発展してきたのか、そしてなぜデプロイメントパイプラインや現代のソフトウェア提供の中心的存在であるのかを理解するうえで、今なお重要な古典的参考資料となっています。 CI/CDパイプラインの構造 CI/CDパイプラインとは、ソースコードが実行中のサービスへと変換されるまでの構造化された経路を指します。 最初の段階はビルドです。ここではアプリケーションコードのコンパイル、依存関係の解決、バイナリ、パッケージ、コンテナイメージといった実行可能な成果物の生成が行われます。この段階では再現性が極めて重要です。同じ入力からは常に同じ成果物が生成されなければなりません。この決定性により、トレーサビリティの確保、ロールバックの簡素化、さらには企業環境や規制環境で求められる監査要件への対応が可能になります。 ビルドが成功すると、複数層の自動テストが実行され、技術的および業務的観点からシステムを検証します。 ユニットテスト:個々のコンポーネントを独立して検証し、迅速なフィードバックを開発者に提供します。 統合テスト:コンポーネント同士、あるいはデータベース、キュー、APIなどの外部サービスとの連携を確認します。 受け入れテスト:ユーザーの期待やビジネスルールを満たしているかを検証し、本番環境に近い環境で実行されることが多くあります。 これらのテスト層は、実行速度と信頼性のバランスを取りながら、継続的デリバリーの信頼性を支える基盤を形成します。 成果物管理と「ビルドは一度、デプロイは何度も」 テスト完了後、パイプラインは不変(イミュータブル)なビルド成果物を生成します。これらは再ビルドすることなく、バージョン管理され、保存され、各環境へと昇格(プロモーション)されます。 「Build once, deploy many(ビルドは一度、デプロイは何度も)」という原則により、ステージングで検証されたものと本番環境で稼働するものが完全に一致することが保証されます。 JFrog Artifactory や Sonatype Nexus といったアーティファクトリポジトリは、これら成果物の集中管理、トレーサビリティ確保、ライフサイクル管理を提供します。CI/CDプラットフォームと統合され、依存関係管理、セキュリティスキャン、監査可視性の向上を支援します。 Continuous DeliveryとContinuous Deployment Continuous Deliveryは、常にデプロイ可能な状態を維持することを保証します。一方、Continuous Deploymentは、検証済みの変更をすべて自動的に本番環境へリリースする仕組みへと発展させたものです。 実務では、これら二段階の自動化の間に承認ゲート、段階的ロールアウト、ポリシーチェックなどを設けることが一般的です。デプロイワークフローには、ステージング検証、性能・セキュリティ確認、段階的ユーザー公開、異常検知時の迅速なロールバックを可能にする監視統合などが含まれます。 これらの安全策により、運用リスクを最小化しながら頻繁なリリースを実現できます。これはDevOpsの重要な価値提案の一つです。 GitOpsの発展 GitOpsは、インフラやランタイム設定をGitリポジトリで管理される宣言的な資産として扱うことで、CI/CDモデルを拡張します。 手動でデプロイを行う代わりに、自動調整エージェントが実環境とGitで定義された理想状態を継続的に比較し、差異を修正します。この手法により、完全な監査性、Git履歴による簡易ロールバック、Kubernetesネイティブな運用モデルとの強い整合性が実現します。 その結果、GitOpsはクラウドネイティブ環境における継続的デリバリーの自然な進化形として広く認識されています。 キャッシュと成果物の効率性 ビルド成果物とキャッシュは、効率性維持の観点で重要な役割を担います。成果物はコンパイル済みバイナリやコンテナイメージなどの不変かつ追跡可能な出力です。一方キャッシュは、未変更の依存関係や中間レイヤー、既存コンポーネントを再利用することで処理を高速化します。 効果的なキャッシュ戦略は実行時間とインフラコストを大幅に削減し、再現性を損なうことなく開発者へのフィードバックを迅速化します。成熟したCI/CD環境では、キャッシュ性能と成果物の不変性のバランスが慎重に保たれています。 安全なデプロイ戦略 信頼性の高いデプロイには、リスク低減と可観測性向上のための運用ベストプラクティスが不可欠です。不変成果物、ステージングと本番の環境整合性、自動ロールバック、継続的ヘルスモニタリングが技術的安全網を形成します。 Blue-greenデプロイ、カナリアリリース、ローリングアップデートなどの戦略は、新バージョンを段階的に公開し、サービス可用性を維持しながら早期に問題を検出できるようにします。これらはコンテナ化やマイクロサービス環境で特に有効です。 セマンティックバージョニング バージョン識別は、major.minor.patch(例:2.0.18)形式のセマンティックバージョニングで標準化されます。 互換性を破壊する変更 → メジャー番号増加 後方互換の機能追加 → マイナー番号増加 バグ修正 → パッチ番号増加 CI/CDパイプラインはこれを活用し、リリースタグ付け、変更履歴生成、依存関係管理、成果物の環境間昇格を自動化します。 CI/CDプラットフォーム Jenkinsは歴史的に重要で広く採用されているオープンソースのオーケストレーションサーバーであり、豊富なプラグインエコシステムと柔軟なパイプライン定義を提供します。 GitLab CI/CDは、パイプライン実行、ソース管理、セキュリティスキャン、成果物管理を単一プラットフォームに統合し、ライフサイクル全体を可視化する統合型モデルを提供します。 両者は進化の道筋こそ異なりますが、DevOpsおよびLPI目標で示される同一のデリバリー原則を支えています。 アーティファクトリポジトリの役割 ArtifactoryやNexusは、継続的デリバリーにおける中核的な流通基盤として機能します。管理された保管、バージョン管理、昇格ワークフロー、セキュリティ分析との統合により、検証済みかつ追跡可能なソフトウェアのみが本番環境に到達することを保証します。 特に大規模環境や規制産業では、その重要性はさらに高まります。 DevOpsの中核としてのContinuous Delivery Continuous Deliveryは、自動化パイプライン、宣言的インフラ、成果物ライフサイクル管理、セマンティックバージョニング、段階的デプロイ戦略を統合することで、安全かつ迅速なソフトウェア提供を実現するDevOpsの運用的中核です。 これらの概念を習得し、実際のCI/CDプラットフォームでの実践経験を積み、LPI DevOps Tools Engineer向けLearning Materialsで学習することは、現代的なソフトウェアデリバリーにおける専門能力を確立する決定的な一歩となります。 公式Learning Materialsは試験目標に沿った体系的なガイダンスを提供し、Jenkins、GitLab、Artifactory、Nexusなどのツールを用いた実践は、現実のDevOps環境で求められる運用理解を強化します。 << 本シリーズの前の記事を読む | 本シリーズの次の記事を読む >>

みんなが知っているあなたのこと:あなたの腕時計

この記事は、現代におけるデータ収集について扱う連載シリーズの一部です。これまでの記事では、自宅内のデバイスや自動車に関するデータ収集について取り上げてきましたが、今回はさらに個人的な領域に踏み込みます。 フィットネス機器によって収集されるデータは、プライバシーの観点から見ると非常に曖昧な位置にあります。たとえば、社会保障番号やパスワードのように、明らかに悪用されると危険な情報が含まれているわけではありません。しかしその一方で、個人に関するデータの中でも、これほど機微な情報はないとも言えます。 私の高齢の親戚は、ある日 Apple Watch から心拍数が異常に速いと通知を受けました。すぐに医師の診察を受けるよう勧められ、幸いにも迅速に予約を取ることができました。その結果、心房細動の薬を処方されました。これは、デバイスがいかに多くの個人情報を推測できるかを示す、シンプルな例です。 現在、人の声から認知症やうつ病の初期兆候を検出するための分析技術も、実験段階にあります。また、うつ病は歩き方の特徴からも検出できるとされています。 私は Apple Watch が収集しているデータを調べるために、一般消費者向けサイトと、より詳細な情報が掲載されている開発者向けサイトの2つを参照しました。そこから分かった、ウォッチが把握している情報は実に多岐にわたります。 心拍数、呼吸数、手首の温度、睡眠(睡眠時間および睡眠段階) 血中酸素濃度(以前は測定可能でしたが、法的理由により現在はこの機能は削除されています) 歩数および運動時の活動量 座っている時間 排卵周期(本人が任意で提供した場合) 歩行の安定性 呼吸の動き 運動中に消費したカロリー 心肺機能(酸素消費量、いわゆるVO2 Max) 上り下りした階段の数およびその速度 日光の下で過ごした時間 手洗いの頻度および時間 自動車メーカーと同様に、Appleはこれらの情報に加え、フィットネス評価を向上させるために利用者が任意で提供する情報や、(Apple Storeでのダウンロード履歴など)同社が把握しているその他の情報も組み合わせています。 私は Mozilla Foundation のサイトにも戻り、Apple Watch のプライバシーリスク評価を確認しました。同団体はAppleのポリシーを評価しつつも、あらゆるコンピュータと同様に、ウォッチ本体やその背後にあるデータ保存システムには脆弱性が存在する可能性があると警告しています。 次に、もう一つの人気デバイスである Fitbit が収集する情報についても調べました。このデバイスの主要なセンサーは、3軸加速度計(前後・左右・上下の動きを測定)とGPSです。フィットネス関連サイトおよびGoogleのFitbitヘルプセンターを参照し、次の情報が収集されていることが分かりました。 収集される動作データ:歩数、移動距離、上った階数 消費カロリー 安静時心拍数および心拍変動(HRV) 呼吸数 酸素飽和度(SpO2) 皮膚温度 これらの統計データを長期間にわたって追跡すると、(少なくとも理論上は)個人の健康状態、行動、生活習慣について多くのことが分かるとされています。 本シリーズの次回記事では、オンラインの世界に目を向け、Web上でのデータ収集について取り上げます。 <<このシリーズの前回の記事を読む

AI が切り拓く 3D プリンティングの進化

多くの産業が人工知能(AI)の活用による恩恵を期待していますが、現時点では、AI がどこで有効に機能し、どこで信頼できないのかについて、十分な理解があるとは言えません。3D プリンティングは、AI が精度やコストの改善にどのように役立っているのかを検討するうえで、非常に適した分野です。というのも、3D プリンティングには AI と相性の良い特性があるからです。たとえば、フィラメント内の材料比率から後処理に至るまで、成功した造形には多様な要因が関与し、それらは極めて複雑に相互作用します。さらに、結果は、メーカーが制御できない物理環境のわずかな変動にも左右されます。 本記事では、3D プリンティングにおける AI 活用に関する膨大な研究文献の中から、特に興味深い課題に直面した 3 つの研究プロジェクトを取り上げます。これらの論文で示された解決策は、わずか数年前のものであるとはいえ、特にトランスフォーマーや大規模言語モデル(LLM)の登場によって、すでに新しい技術に取って代わられている可能性もあります。しかし、著者たちがたどった思考プロセスそのものは非常に示唆に富んでいます。本記事で紹介する研究を総合すると、AI の活用は一種の「技術」や「芸術」に近いものであるということが見えてきます。 幅広いアプローチ AI の力は、微妙に相互作用する多数の特徴量を同時に扱えることにあります。論文「A data-driven machine learning approach for the 3D printing process optimisation(データ駆動型機械学習による 3D プリンティング工程最適化)」では、複数の 3D パラメータを同時に分析し、さまざまなプリンタに適用できる手法が提案されています。 この研究の目的は、印刷に関する 3 つのパラメータ――所要時間、フィラメントの長さ、完成物の重量――を算出することでした。 この論文で特に興味深い点は、2 段階の処理プロセスを採用していることです。まず、畳み込みニューラルネットワーク(CNN)が、押出幅やレイヤー高さといった一般的な 3D 設定を入力パラメータとして受け取ります。さらに研究者たちは、オブジェクトの表面積と体積という 2 つの計算パラメータを追加しました。 CNN で扱えるようにするため、面や頂点の数を削減する必要があり、アルゴリズムは各オブジェクトから 5,000 個の頂点をランダムに選択しました。 次に、CNN が生成した複数の新しいパラメータを既存の入力パラメータに加え、それらを別の 多層パーセプトロン(MLP) に入力しました。 研究者たちは、70 個の 3D プリントされたオブジェクトを用いてモデルをテストしました。各オブジェクトは 32 種類の異なる「パラメータセット」で評価されました。その結果、モデルは実際のテスト結果とよく一致し、成功しているように見えました。 自然を超えて 内部に穴やチューブを持つ柱は、実体のある柱よりも強度が高い場合が多くあります。これは、中心から離れた位置にある材料ほど圧力に対する耐性が高いためだと考えられます(ここで引用されている論文は、同じ質量の柱――一方は中実、もう一方は内部構造を持つもの――を比較しているのだと思われます。同じ直径であれば中実の柱の方が強度は高いですが、現実的には重すぎて材料の無駄が大きくなります)。 自然界には、内部が同心円状や格子状に分割された構造を持つ茎や支柱が数多く存在します。たとえば、竹、サボテン、ミント、羽軸、パピルス、貝殻、ハニカム構造などです。こうした構造を 3D プリント物に取り入れることで、性能を向上させることはできるのでしょうか。 従来の製造方法では、任意に複雑な格子構造は製造が非常に困難なため、ほとんど実用的ではありません。しかし、3D プリンティングであれば対応可能であり、実験も現実的になります。 論文「3D [...]

あなたの家が把握しているあなたの情報

この記事は、現代におけるデータ収集をテーマとした連載の第2回です。第1回では、このテーマが持つ広範な全体像を紹介しました。今回は、データが実際にどこで、どのように収集されているのかという具体的な場面に目を向けていきます。 あなたの家は、あなたを追跡しているでしょうか。2023年の調査によると、「インターネット接続を持つ米国の一般家庭には、2023年時点で平均17台の接続デバイスが存在していた」とされています。米国の一部の家庭では(驚くべきことに)インターネット接続がない場合もありますが、大半の家庭では利用されています。そこで問題となるのは、こうした「スマート」デバイスが、私たちについてどのような情報を製造元に伝えているのか、という点です。 ここでいう「スマート」とは、組み込みプロセッサ、通信機能(WiFi、Bluetooth、インターネット)、そしてユーザーの行動やリクエストを解釈するために機械学習を用いる可能性のある分析機能を組み合わせたものを指します。 家庭内で最も多くのデータを収集するデバイスは、ストリーミング対応のテレビプレーヤーです。ケーブル会社やストリーミングサービスは、あなたが何を、いつ視聴したかを把握しており、そこからあなたの興味関心、つまりどのような人物で、何を好むのかについて信頼性の高い情報を得ることができます。 しかし、テレビの視聴行動はそれだけにとどまりません。あなたの居場所、どれくらいテレビを観るか、就寝時間など、さらに多くのことを示しています。こうした情報から、企業はあなたの学歴、就労状況などを推測することさえ可能です。 これらの情報は、比較的無害な形で利用されることもあります。たとえば、次に視聴しそうな北イタリア料理をテーマにしたグルメ番組や、また別の『ゲーム・オブ・スローンズ』風作品を推薦するためです。現在では、スタジオが新しい番組を企画する際にもこうしたデータが使われており、ジャンルの選定からキャスティングに至るまでの意思決定に影響を与えています。 この連載を通じて繰り返し目にすることになりますが、ストリーミングデバイスによって収集されたデータは、SNS上の消費者レビューなど、他の情報源からのデータと組み合わされます。さらに、そのデータは、収集時の活動とはほとんど、あるいはまったく関係のない企業に販売されることもあり、広告目的であなたの関心を極めて詳細にモデル化するために利用されます。 次に、あなたのことをよく知っているスマートデバイスとして挙げられるのが、音声起動型の録音デバイスです。Apple の画期的な Siri、Amazon の Alexa、Google Home Assistant などがこれにあたります。これらのデバイスは常にあなたの声を聞いていますが、ベンダーは「Hey Siri」のような呼びかけで明示的に起動されるまで、何も記録しないと約束しています。 しかし、これらのデバイスと会話している間、記録されるのはあなたの発した言葉だけではありません。声のトーン、他の人との会話、周囲の環境音なども含まれます。研究者たちは、これらのデバイスが、あなたが意図的に提供した以上の情報を捉えている可能性があることを指摘しています。 つまり、テレビサービスやスマートスピーカーは、あなたについて非常に多くの情報を記録しているのです。さらに近年では、多くの人が家庭内にさまざまな「スマートデバイス」を設置しています。たとえば、防犯カメラやビデオドアベル、エネルギー使用量モニター、入退室を把握する照明、朝起きる時間や夜に帰宅する時間を予測する家電、温度センサーなどです。 これらの新しい家電製品(照明、洗濯機、コーヒーメーカーなど)の多くは、先に挙げたスマートスピーカーを通じて起動・操作できます。その場合、スマートスピーカーの提供元が、あなたに関する情報を収集することになります。 メーカーは、ロボット掃除機が撮影した写真や使用パターンから、家の広さ、あなたが最も多くの時間を過ごす場所、さらにはライフスタイルに関するさまざまな手がかりを推測することができます。 最近私がダウンロードしたプリンタ管理用アプリでさえ、私のプリンタ利用状況に関するデータを収集しています。メーカーはそれを、顧客としてすでに保有している他の情報と組み合わせています(もっとも、私はプライバシーポリシーを読む程度には教育を受けているので、データ収集をオプトアウトすることができました)。 製造業者やストリーミングメディア企業が、あなたの生活の詳細な情報を得ることについて、特に気にしない人もいるかもしれません。しかし、ゾンビデバイスについては注意が必要です。ゾンビデバイスとは、通常、メーカーがアップデートの提供を終了することで、セキュリティ保護が不十分になったデバイスのことです。こうしたサポート終了については、マサチューセッツ州で提出された法案(私の選挙区代表であるデイブ・ロジャースによる提出)のような形で通知される場合があります。 最後に、電力会社もまた、1日の中でのあなたのエネルギー使用状況を追跡しています。これは社会的価値のある取り組みでもあります。電力会社は消費者の需要に合わせて発電量を調整したり、高価で汚染度が高く、気候変動の原因となる発電所を使用せざるを得ないピーク時間帯の消費を避ける方法を、消費者に提案したりできるからです。 しかし、ストリーミング動画企業、スマートスピーカー、各種デバイス、あるいは電力会社によって収集される、あなたの行動や生活スケジュールに関する情報は、あなたの収入、ライフスタイル、健康状態などについての推測を導き出すためにも利用され得ます。 次回の連載記事「あなたの車はあなたの何を知っているのか」では、データ追跡の舞台を屋外へと広げていきます。 << このシリーズの前の記事を読む

DevOpsツール入門 #02:モダンなソフトウェア開発の考え方

DevOps の世界は決して立ち止まりません。そして Linux Professional Institute(LPI)も同様です。DevOps Tools Engineer 認定試験 バージョン2.0 のリリースにより、LPI は試験内容を、現在プロダクション環境で実際に使われている技術――コンテナ化、クラウドネイティブアーキテクチャ、そして現代的な開発手法――にしっかりと合わせました。 この記事では、更新された最初の試験範囲である 701.1:モダンソフトウェア開発(Modern Software Development) を一緒に見ていきます。学習のためにも、実務での理解のためにも、頭の中に明確な全体像(メンタルマップ)を構築できるよう支援します。 多くの変更が加えられた一方で、変わらないものもあります。それは、強固なソフトウェアエンジニアリングの基礎は今でも重要であるという点です。比重 6 を持つ試験範囲 701.1 では、現代のランタイム環境に本当に適したソリューションを設計できることが求められます。つまり、サービスがデータ、セッション、セキュリティ、パフォーマンス、スケーラビリティ、信頼性をどのように扱うのかを、理論ではなく実践的な分散システムの文脈で理解している必要があります。 アーキテクチャの基盤:サービス、マイクロサービス、クラウドネイティブ設計 現代のアプリケーション設計は、サービス指向およびクラウドネイティブの原則によって大きく形作られています。バージョン 2.0 では、Service Oriented Architecture(SOA)を含むサービスベースのアーキテクチャ、特に マイクロサービス が強く重視されています。 アーキテクチャ理解を深めたいのであれば、Martin Fowler の仕事は非常に優れた参考資料です。彼と共著者たちは、アプリケーションアーキテクチャ、SOA やマイクロサービス、不変(immutable)サーバー、モノリスと結合度、そして疎結合の重要性についての記事を提供しています。これらの概念は、試験範囲全体にわたって暗黙的に登場します。 新しい認定試験では、コンテナ内で実行され、クラウド環境で自然に動作するソフトウェアを設計できることが明確に期待されています。これは、密結合されたモノリシックシステムからの脱却という、業界全体の現実的な変化を反映しています。 同時に、試験は現実も認識しています。レガシーシステムは依然として存在するという事実です。今回の試験では、レガシーなモノリシックソフトウェアを移行・統合する際のリスクを認識することが明示的に求められています。これは多くの組織が直面している課題を踏まえたものであり、革新と安定性のバランスを取った戦略的なモダナイゼーションが必要であることを示しています。 クラウドネイティブおよびコンテナファースト開発の採用 認定試験バージョン 2.0 における最も重要な更新点のひとつが、クラウドネイティブおよびコンテナファースト設計への明確なフォーカスです。これは単にアプリケーションをクラウドにデプロイするという話ではありません。弾力性、自動化、分散インフラの利点を最大限に活かすソフトウェアを構築すること、そしてコンテナで動作し、クラウドサービスにデプロイされるソフトウェアを設計できるスキルを示すことが求められます。 これらのスキルは、クラウドを単なるホスティング環境として使うだけでは不十分です。クラウドが持つ動的かつ分散された特性を最大限に活用できるよう、アプリケーションを設計する能力も含まれます。 Cloud Native Computing Foundation(CNCF)によると、クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドといった動的な環境において、スケーラブルなアプリケーションを構築することを可能にします。実際には、これは コンテナ化され、動的にオーケストレーションされ、マイクロサービスを中心に構成されたアプリケーション を意味します。 コンテナ向けの設計では、ステートレスなサービスと不変性(immutability) が重要です。各コンテナは理想的には 1 つの役割に集中し、容易に置き換え可能で、摩擦なく水平スケールできるべきです。この考え方は、耐障害性を高め、デプロイを簡素化し、自動化をはるかに効果的にします。 API、データ、ステート管理 分散システムにおいて、API はすべてをつなぎとめる「接着剤」です。試験では引き続き、REST を中核となるアーキテクチャスタイルとして、JSON を標準的なデータ形式として重視しています。 RESTful の原則を理解することは、HTTP メソッドを暗記すること以上の意味を持ちます。スケールし、進化し続けることができる、予測可能で一貫性のあるインターフェースを設計することが重要です。RESTful 原則に関する包括的な入門資料では、REST の基本的な制約条件から実践的な設計パターンまで、優れたチュートリアルとベストプラクティスが提供されています。 JSON:API のような仕様は、データ構造を標準化し、サービス間の相互運用性を向上させます。また、jsonapi.org では、JSON を用いた API [...]