プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

API

API Gateway

API Gawewayという言葉をよく目にするようになった。 アーキテクチャ議論でよく出てくるのでなにを指しているのか理解しておきたい。 API Gatewayなしの場合 クライアントは「発注」という処理のために複数のサービスをREST APIで呼び出す 各サービスはTLS、…

APIキーを管理するCloudサービス

API

Web APIにおけるキーの管理について以下の記事で述べた。 architecting.hateblo.jp この中でAPIキーを管理するCloudサービスについて名前だけ紹介したが中身までは触れなかった。 ここでは著名なサービスをいくつか取り上げて簡単に説明する。どんなサービス…

ETagの利用例

API

主にHTTPのキャッシュなどで利用されるETagには複数のユースケースが存在する。 今回はETagのユースケースについて見ていこう。 ETag ETagヘッダはRFC 7232(HTTP/1.1 Conditional Requests)で定義されているレスポンスヘッダである。 ETagの値はあるリソー…

TLS

API

背景 HTTPSは以前は暗号化にSSLを利用していた 現在はTLSを利用している 今でもSSLとTLSを指して「SSL」と呼ぶことがある TLSはRFC 8446(The Transport Layer Security (TLS) Protocol Version 1.3)で規定されている RFC 8446の規定は結構緩いがTLS_RSA_WI…

Public Key Infrastructureについて

API

Web API開発においては認証や暗号化のために証明書を利用することは多い。 こういうコードと関係ない部分はセキュリティ担当のインフラ屋さんに丸投げしたくなる気持ちはわかる。 しかしつまらないところではまって時間を無駄にしないよう最低限の知識は身に…

APIキーの保管

API

Web APIを叩くにはAPIキー、シークレット、Credentialが必要だ。 こういった情報をどのように管理すべきだろうか。 ハードコードすると変更するのが大変だ。ソフトコードすると少し変更しやすくなるがそれでもビルドが必要になってしまう。それにソフトコー…

Web APIで発生するエラーの対処

API

エラーが発生しないシステムは存在しない。回復できるエラーからは回復し、回復できないエラーからは適切な情報を残して終了することがシステムには求められる。 Web APIも同様だ。サーバ内でエラーが発生することもある。ネットワーク障害の影響を受けるこ…

Web APIのデータ圧縮

API

Web APIの性能を最適化する方法としてPagination、キャッシング、圧縮がある。今回は圧縮についてを取り上げる。 既に取り上げたPaginationとキャッシュについてはこちらを参照いただきたい。 architecting.hateblo.jp architecting.hateblo.jp メリット 通…

Web APIのキャッシュ

API

Web APIの性能を最適化する方法としてPagination、キャッシング、圧縮がある。 今回はキャッシングについてを取り上げる。 既に取り上げたPaginationについてはこちらを参照いただきたい。 architecting.hateblo.jp メリット 応答速度が上がる。 サーバの負…

Web APIのPagination

API

Web APIは元来、軽量なAPIだ。 しかしデータサイズが大きくなれば重くなる。応答速度が極めて重要な場面もあるかもしれない。 そんなとき、Web APIの性能を最適化する方法として利用できるのがPagination、キャッシング、圧縮である。 今回はPaginationにつ…

Basic認証、Digest認証、Bearer認証、OAuth認証方式について

API

Basic認証、Digest認証、Bearer認証、OAuth認証方式はRFCで標準化されている認証方式の中で最もよく目にする方式だろう。 Basic認証とDigest認証は多くのサーバ、クライントで実装されており導入障壁が低い認証方式だ。 機密性の高いデータを扱うサービスで…

Web API認証方式のパターン

API

Web API認証の混沌 混沌を整理する 認証とはなにか 1. 標準化されたHTTP認証方式 2. APIキー認証 3. Form認証、アクセストークン認証 Web API認証の混沌 認証に成功しないとWeb APIを叩くことはできない。まずは認証である。 認証方法がWebサービスによって…

POST、PUT、PATCHの違い

API

REST APIなどを使っているとPOST、PUT、PATCHの使い方に悩むことがある。特にPUTとPATCHの違いはわかりずらい上に実際の挙動を見て戸惑うこともある。 REST APIで各HTTPメソッドがどのように振る舞うかは実装依存なのでケースバイケースで調査する必要がある…

URLの構造

API

WebAPIを取り扱う上で欠かせないURLの構造と各要素の呼び方についてまとめる。 ①スキーム 通信手段 ②ホスト名 主にFQDN IPアドレスのこともある ③ポート番号 TCPポート番号 デフォルトは80番 ④リソースパス ディレクトリとファイル名で構成される ⑤クエリ文…

namespaceがあるXMLをPythonで処理する

XMLのnamespace Pythonでのnamespaceの扱い方 XMLのnamespace XMLでは同姓同名の要素に対して異なるnamespaceを割り当てることで名前の衝突を避けることができる。 例えばプログラミング言語のPythonを表す要素pythonと蛇のパイソンを表す要素pythonは以下の…

Element TreeによるXMLの処理

XML処理をする選択肢 インストール import 読み込み 書き込み Iterate 要素へのアクセス XML処理をする選択肢 PythonでXMLを処理するライブラリは多数ある。以下に有名なものを3つ紹介する。 ライブラリ 標準ライブラリ 説明 minidom o 最小のDOM実装 Elemen…

jsonモジュールによるJSONの処理

インストール import ファイルから読み込む strオブジェクトをJSON形式で読み込む ファイルへ書き込む strオブジェクトを作成 Iterate 要素へのアクセス PythonでJSONを取り扱うならjson一択だ。 簡単な使い方ならPyYAMLやruamel.yamlと大差ない。しかしJSON…

ruamel.yamlによるYAMLの処理

ruamel.yamlとPyYAML 比較 YAML 1.2対応 インストール import 読み込む 書き込む Iterate 要素へのアクセス ruamel.yamlとPyYAML PythonでYAMLを扱うには選択肢が2つある。 PyYAML ruamel.yaml 今日時点で有名なのはPyYAMLの方だがアップデートが収束しつつ…

JSON

API

基本情報 特徴 YAMLとの比較 オブジェクト 配列 値 JSONはシステム間のデータの交換によく使われるデータフォーマットだ。 YAMLとの違いを理解して状況に応じて適切な選択、データ構造設計、データ処理ができるようになろう。 YAMLについてはこちらで触れて…

YAML

API

基本情報 特徴 シーケンス マッピング 配列とハッシュの組み合わせ スカラ 複数行文字列の扱い アンカーとエイリアス マージ セパレータ フロースタイル 練習問題 YAML JSON YAMLはシステム間のデータ交換や設定ファイルに使われているデータフォーマットだ…