投稿

Python で W3C PROV オントロジーを可視化する(Python PROV)

イメージ
本記事では Python の prov パッケージを利用して、PROV 情報を可視化する方法を見ていきます。 【目次】 [1]はじめに [2]Prov Python package の利用 (1)Prov Python package のインストール (2)PROV-N の概要 (3)Python で PROV 情報を作成する [3]可視化してみる (1)Graphviz、pydot のインストール (2)図(画像)をPNG ファイルとして出力する (3)属性の追加と日本語表示 [4]RDFファイルを読み込んで可視化する (1)PROV 情報を RDF ファイルとして保存する (2)RDFファイルから読み込んで可視化する [1]はじめに W3C PROV オントロジーを利用すると、物事の来歴情報を記述することができます。 PROV 仕様は来歴表現に関するデータモデルやシリアライズフォーマットが定義されていますので、機械可読な来歴情報を表現できます。 PROV-Overview An Overview of the PROV Family of Documents https://www.w3.org/TR/prov-overview/ ただし、一般に、形式的な表現のままでは人間が理解しやすいとは限りません。 これは PROV の仕様が複雑という意味ではなく、人間は、情報量が多くなると全体像を把握しづらくなるということかと思います。 これに対して PROV の表現を可視化(図示)するための推奨事項が公開されています。 PROV Graph Layout Conventions https://www.w3.org/2011/prov/wiki/Diagrams このような PROV 情報の可視化を行えば、全体像を把握しやすくなると思います。 前回の記事『 Git2PROV を例に W3C PROV オントロジー表現の基本を知る 』では、Git のコミット履歴に関する PROV 表現例を図を中心に概観しました。 簡単な来歴の図は手作業で書くこともできますが(前回の記事は手作業で書きました)、データが複雑になると手作業で書くのは無理です。 これは作図作業に時間がかかる、というだけでなく、誤りのもとになります。 そこで本記...

Git2PROV を例に W3C PROV オントロジー表現の基本を知る

イメージ
本記事では、W3Cが勧告している PROV オントロジーの表現方法を Git2PROV ツールを例にみていきます。 【目次】 [1]はじめに [2]PROV とは (1)PROVの基本概念 (2)簡単な補足 (3)PROV のシリアライズ形式 (4)PROV グラフの可視化について (5)拡張仕様について [3]Git のコミット履歴を PROV で表現する (1)Git2PROV (2)ファイルのバージョン1をコミットしたとき (3)ファイルのバージョン2をコミットしたとき (4)より詳細な Git のモデルや応用など [4]Git2PROVを実際に動かしてみる (1)インストール (2)ローカルサーバで実行 (3)コマンドラインから実行 [1]はじめに ネットで様々な情報が簡単かつ大量に得られるようになりました。 それはそれで良いのですが、同時に得られた情報が信用できる情報かどうかの判断も難しくなってきました。 昨今の生成系 AI などの事情を考えると、この傾向はますます進むような気がしますが、そもそも今まで何を根拠に「信頼」とか「信用」していたのか?と考えていくと、意外に根拠が薄そうな気がして、少々不安になります(笑)。 それはともかく、信用できる情報かどうかの判断基準として、データの来歴あるいは起源をみることは多いと思います。 W3C は、このような来歴あるいは起源を記述するための仕様である PROV を2013年に勧告しています。 PROV-Overview An Overview of the PROV Family of Documents https://www.w3.org/TR/prov-overview/ 崇高な概念をここで語ることはできませんが、来歴や起源をたどれるデータの表現方法は、一般のアプリ作成においても役立つことが多いと思いますので、本記事では、この PROV による情報の来歴あるいは起源に関する表現をみてみます。 ところで PROV 仕様をざっと概観するには、(英語ですが)以下のドキュメントが最適だと思います。 PROV Model Primer https://www.w3.org/TR/prov-primer/ 一方、本記事では開発者にとって身近な Git のコミット情報を PRO...

システム構築技術を俯瞰する(マイクロサービスアーキテクチャ 第2版)

イメージ
マイクロサービスアーキテクチャ 第2版 Sam Newman (著), 佐藤 直生 (監修), 木下 哲也 (翻訳) 発売日:2022/12/2 マイクロサービスアーキテクチャ 第2版 単行本 (Amazonで書籍情報を表示) 前回、前々回と文字コード関係の本が続きましたが、今回はシステム構築系の本です。 私はマイクロサービスアーキテクチャの初版を読んでいたのですが、ある調べものがあって読み返したことがきっかけで、新しい版が無いか探してみると、出てました(笑)。 この本の主題はマイクロサービスですが、初版の時から、マイクロサービスに特化した技術本というよりは、システム構築技術に関するカタログ本のような内容です。 このため、マイクロサービスに興味は無くても、システム構築に関わる人には有意な情報が書かれている本だと思います。 初版でも300ページくらいあるボリュームでしたが、第2版は最近の状況を反映して、その倍の600ページのボリュームになっています。 第2版も買ってよかったなと思える内容でしたので、書き留めておくことにしました。 <本の内容> 下記の目次を見ても分かる通り、この本は、設計から実装技術、セキュリティ、運用監視、組織のあり方まで、マイクロサービスに関連する話題をとても幅広く取り上げています。 【目次】 はじめに 第Ⅰ部 基礎 1章 マイクロサービスとは 1.1 マイクロサービスの概要 1.2 マイクロサービスの重要な概念 1.3 モノリス 1.4 実現技術 1.5 マイクロサービスの利点 1.6 マイクロサービスの課題 1.7 マイクロサービスを使うべきか 1.8 まとめ 2章 マイクロサービスのモデル化 2.1 MusicCorpの紹介 2.2 適切なマイクロサービス境界にするには 2.3 結合の種類 2.4 過不足のないドメイン駆動設計(DDD) 2.5 マイクロサービス向けのドメイン駆動設計(DDD)の例 2.6 ビジネスドメイン境界の代替手段 2.7 混合モデルと例外 2.8 まとめ 3章 モノリスの分割 3.1 目標を持つ 3.2 漸進的な移行 3.3 ほとんどの場合、モノリスは敵ではない 3.4 まず何を分割すべきか 3.5 階層による分解 3.6 便利な分解パターン 3.7 データ分解における懸...

技術者が押さえておくべき文字コードの基礎知識が得られる本(プログラマのための文字コード技術入門)

[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ) 2018/12/28 矢野 啓介 (著) プログラマのための文字コード技術入門 (Amazonで書籍情報を表示) 最近になって「文字」が気になり始め、さらに『 文字や文字コードに興味を持ったら絶対に読むべき本(ユニコード戦記) 』を読んだこともあって、文字に愛着?のようなものを感じ始めたところです。 最終的には JIS や Unicode、ISO/IEC 10646 などの規格書を読まないといけないかな?とは思いつつも、私のような文字の基礎知識が薄い人間は、今の段階で読んでもすぐに飽きてしまいそうな気がしてます(笑)。 そこで、最近の事情をまえた文字技術を概観できるような本はないかと探して読んだのがこの本です。 タイトルに「プログラマのための」とある通り、文字そのものについての話というよりは、主に文字コードの基礎知識や利用上の留意点などが多く取り上げられています。 単なる符号化規則の話だけではなく、歴史的な経緯や、(絵文字も含めた)文字の種類、そして文字(コード)変換やプログラミング上の留意点など、幅広く触れられており、システム開発に関わる人が知っておくべき基礎知識が詰まった良い本だと思いましたので書き留めておきます。 <本の内容> 本書で取り上げられている話題を概観します。 【目次】 第1章 文字とコンピュータ 1.1 コンピュータで文字を扱う基本 1.2 文字を符号化するということ 1.3 文字集合と符号化文字集合 1.4 制御文字 1.5 文字コードはなぜ複雑になるのか 1.6 まとめ 第2章 文字コードの変遷 2.1 最もシンプルな文字コード 2.2 文字コードの構造と拡張方法を定める 2.3 2バイト符号化文字集合の実用化 2.4 1バイト符号化文字集合の広がり 2.5 国際符号化文字集合の模索と成立 2.6 まとめ 第3章 代表的な符号化文字集合 3.1 ASCIIとISO/IEC 646 3.2 JIS X 0201 3.3 JIS X 0208 3.4 JIS X 0212 3.5 JIS X 0213 3.6 ISO/IEC 8859シリーズ 3.7 UnicodeとISO/IEC 10646 第4章 代表的な文字符号化...

文字や文字コードに興味を持ったら絶対に読むべき本(ユニコード戦記)

ユニコード戦記 ─文字符号の国際標準化バトル 小林龍生 (著) 発売日 ‏ : ‎ 2011/6/10 ユニコード戦記 ─文字符号の国際標準化バトル─ (Amazonで書籍情報を表示) 文字を扱わないアプリは殆ど無いと思います。 そして、アプリを普通に使う上で文字が問題になることは殆ど無いと思います。 しかし何か特別な事情、例えば、人名や地名などを正確な字形で表現する必要がある場合は、非常に難しい問題に直面します。 ローカルPC内に閉じた話であれば「外字を作ればいいじゃん」で解決できても、何らかの電子的な情報交換や再利用の必要がある場合、それは解決策にはなりません。 加えて(恥ずかしながら)最近になって日本語には非常に多くの漢字がある事を知り、そもそも文字とは何なのか?、とか、文字の規格はどのようにして決まったのか?など疑問がどんどん溜まってきました。 そこで、技術書や規格書ではなく、その背景を知るための本を探して読むことにしました。 それが今回紹介する本『ユニコード戦記 ─文字符号の国際標準化バトル』です。 この本は、文字に関する体系的な技術書ではありませんが、文字の規格に関する多くの背景を知ることができ、さらに文字コード関係以外の読み物としても非常に面白く、読み終えると、何だか感動する?という、素晴らしい本でした。 ちなみに、この本はユニコードなどの前提知識が無くても読める本だと思いますが、JIS漢字やユニコードのことを知って(特に疑問を持って)読むと非常に興味深く読むことができます。 <本の内容> 本の雰囲気を知るために、まずは目次を見ておきます。話の進み方は物語風です。 【目次】 第1幕 序章 第1章 参戦 1 召集令状 2 緒戦 3 初戦果 4 パックス・アメリカーナ 5 出張の嵐 6 ルビタグ縁起 7 情報帝国主義 第2章 戦友 1 去りゆく古参兵 2 バディ参戦 3 最初の提案 4 ルビ戦争勃発 5 先任軍曹 6 共同議長 第3章[幕間1] 一九九五年ごろの文字コード 1 コンピューターの発展と文字コード規格の変貌 2 日本語情報処理の発展と国際符号化文字集合への蠕動 3 そして、ぼくの前史 第2幕 国内戦線 第4章 JIS X 0213と国際整合性 1 重大ニ...

RPA / Power Automate Desktop を使ってWindowsアプリを自動実行してみた

イメージ
本記事では、私のような初めて RPA を使う人が、非常に単純な作業の自動化をどの程度の期間で実装、運用できるものなのか、という事例と、実際に使ってみた印象をメモします。 【目次】 [1]はじめに [2]Power Automate Desktop を使ってみる [3]フローを作って画面操作を自動化してみる [4]使ってみた印象 (1)習得時間が短く、アジャイル的に作れる (2)フローを共有して複数のPCで並列実行が簡単にできる (3)最初のとっかかりが分かり難かった (4)アクションに用意されていない処理は厳しい (5)自動化対象のソフト側の問題やフローが止まる問題 (6)思ったより画面操作の動作が遅いが、思ったより愚直に動こうとする (7)VBA との使い分け [5]最後に [1]はじめに 以前の記事『Puppeteer を使ってウェブスクレイピングしてみた』では、Puppeteer を使って Chrome の操作を自動化して Webスクレイピングを行った経験を書きました。 今回はブラウザではなく、Windows ネイティブアプリの画面操作を自動化する機会がありました。 具体的には、ある Windows ローカルアプリの画面から条件を入力してデータファイルを作成することを数万回繰り返すというものです。 作業そのものは非常に単純なものですが、数万オーダーのサンプルデータを作ろうとすると、個人の手作業ではとてもじゃないけどできません。 肉体的に大変というだけではなく、抜けや間違いなく条件を入力できていることを保証することも難しいし、何より、精神的に耐えられないと思います(笑)。 そこで思いついたのが「RPAを使ってみよう」でした。 (Wikipedia) ロボティック・プロセス・オートメーション(robotic process automation、RPA) とはいっても、私はこれまで RPA に触れる機会がなかったため、どのような製品を使えば、どの程度の期間で目的とする作業の自動化ができるのか、全く見当もつきませんでした。 本記事では、私のような初めて RPA を使う人が、非常に単純な作業の自動化をどの程度の期間で実装、運用できるものなのか、という事例と、実際に使ってみた印象をメモします。 なお、私は今でも RPA の...

文字の図形とコードの関係を調べる

【目次】 [1]はじめに [2]行政における外字の情報表現の例 (1)マイナンバーカードに格納される署名用電子証明書の氏名、住所 (2)法人番号公表サイトの法人情報 [3]汎用電子情報交換整備プログラム [4]文字情報基盤 [5]戸籍統一文字情報の検索サイト [6]道のりは長い(文字は生きている?) [1]はじめに 以前、『 法人番号公表サイトのWeb-APIを利用した法人情報の取得と文字の取扱い 』という記事を書いたときから「文字」のことが少し気になっていました。 コンピュータで表示できない文字がいっぱいあることは分かっていましたが、これまで PC や社内システムに閉じた「外字」として扱ってましたので、あまり深く考えていませんでした。 加えて、私は国語嫌いだったこともあって、文字とか漢字とか面倒な世界は意図的に遠ざけていた気がします。 しかし、PC あるいは社内で閉じた利用に限れば外字は使えても、他のシステムとの情報交換には使えません。特にDX時代において「外字」はかなり問題です。 文字に無関心だった私は、難しい漢字を簡単な漢字に置き換えて(縮退して)情報交換すればいいのでは?と簡単に思っていましたが、今頃になってそんなに簡単ではないことが分かってきました。 そして、ボチボチ調べ始めていたのですが、奥が深すぎて自分の頭の中が混乱し始めたので(涙)、このあたりで自分の頭の整理をかねてメモ書きしておくことにしました。 ちなみに、今回は文字とは?といった話ではなく、また、文字コード規格の話でもありません。どちらかというと、文字の図形と文字コードの間を結び付けるところの話です。 [2]行政における外字の情報表現の例 まずは外字の情報交換がどのように扱われているのか、行政関係の仕様を例に見てみます。 (1)マイナンバーカードに格納される署名用電子証明書の氏名、住所 マイナンバーカードには、氏名、住所、生年月日、性別の4情報が記載された「署名用電子証明書」が格納されています。 利用者クライアントソフトに係る技術仕様について https://www.j-lis.go.jp/jpki/procedure/procedure1_2_3.html 署名用電子証明書及び利用者証明用電子証明書のプロファイル仕様書 仕様書によると、氏名、住...

Puppeteer を使ってウェブスクレイピングしてみた

Puppeteer を使って初めてウェブスクレイピングしたことをメモします。 【目次】 [1]はじめに [2]感想など (1)Puppeteer に関する感想 (2)ウェブスクレイピングにおける留意点など [3]Puppeteer の使い方など (1)参考にしたサイト (2)インストール (3)コードの骨格 (4)ページ操作のメソッドなど (5)画像のダウンロードなど (6)非ヘッドレスでの実行 (7)その他 [1]はじめに ある事がきっかけでウェブスクレイピングをやる機会がありました。 ウェブスクレイピング (Wikipedia) 私にとっては初めての経験だったのですが、面白かったので(ほぼ自分用ですが)メモしておくことにしました。 さて、ウェブスクレイピングにもいろいろなやり方があるようですが、まとまった量のデータを目的とするデータの形式で収集しようとすると、プログラムを作るのが手っ取り早いです。 また、対象がとてもシンプルなウェブページであれば、HTTP GET のレスポンスをライブラリを使って解析するのが効率的だと思いますが、JavaScriptが動作に関係する(例えば、ボタンをクリックして動作する)ようなサイトは、欲しいページ情報を得るまでが少々面倒だったりします。 そのような場合は、実際のブラウザを使って人が行う操作を自動化するのが手っ取り早いように思います。 そこで、今回は Puppeteer というツール(ライブラリ)を利用することにしました。 Puppeteer https://pptr.dev/ Puppeteer(Github) https://github.com/puppeteer/puppeteer 上記 Puppeteer のページには以下のように書かれています(Google翻訳による)。 Puppeteer は、DevTools プロトコルを介して Chrome/Chromium を制御するための高レベル API を提供する Node.js ライブラリです。 Puppeteer はデフォルトでヘッドレス モードで実行されますが、完全な (非ヘッドレス) Chrome/Chromium で実行するように構成できます。 また、FAQによると、Chrome DevTools チー...