投稿

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

[改訂新版]プログラマのための文字コード技術入門 (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 チー...

Python でグラフデータベース(AuraDB, Docker版Neo4j)を使ってみる

イメージ
本記事では Neo4j、AuraDB を試す環境を準備して Python の簡単なプログラムを動かしてみます。 【目次】 [1]はじめに [2]AuraDB を無料で使ってみる [3]ローカル環境の Docker で Neo4j を使ってみる (1)使い捨て的な利用例 (2)データを永続化して利用する [4]アプリ(Python)から AuraDB / Neo4j にアクセスしてみる (1)サンプルデータ (2)Python で Cypher クエリを実行してみる [1]はじめに 前の記事『 プロパティグラフ(Neo4j / AuraDB他)の概要を知る:グラフデータベース 』で、プロパティグラフをモデルとするグラフデータベースの本を紹介しました。 本記事では実際に Neo4j、AuraDB を試す環境を作って、簡単なプログラムを動かしてみます。 今回は環境構築作業の負担が極力無い方法として AuraDB と Docker 版 Neo4j を取り上げます。 AuraDB は 登録すれば無料で使える Neo4j のクラウドホスティングです。例えば Google Colaboratory でプログラムを書いて AuraDB を使うことができます。 一方、Neo4j の Docker イメージも提供されていますので、ローカル環境で動作させることもできます。 AuraDB も Docker 版 Neo4j も接続設定を変えるだけで同じプログラムが動きます(動くはず)ので、例えば、ローカル環境でテストして本番にAuraDBを利用することもできます。 AuraDB と Neo4j は基本的には汎用データベースエンジンですが、可視化ツールなど面白そうなツールも組み込まれていて、使ってみると楽しいです。 [2]AuraDB を無料で使ってみる 実際の Neo4j データベースに触れる最も手軽な方法は AuraDB を使う事だと思います。 Fully Managed Graph Database Service | Neo4j AuraDB https://neo4j.com/cloud/platform/aura-graph-database/ AuraDB は Neo4j のフルマネージドなクラウドサービスでいくつかプランがありま...

プロパティグラフ(Neo4j / AuraDB他)の概要を知る:グラフデータベース

イメージ
グラフデータベース ― Neo4jによるグラフデータモデルとグラフデータベース入門 Ian Robinson (著), Jim Webber (著), Emil Eifrem (著), 佐藤 直生 (監訳), 木下 哲也 (翻訳) 発売日:2015/3/25 今でも特別な要件が無い限りデータベース選択の第一候補はRDB(関係データベース)になることが多いと思います。 しかし、多様なプログラミング言語があるように、多様なデータベースがあり、オープンソースあるいはクラウド時代になって、より幅広く利用されるようになりました。(よく NoSQL とひとくくりにされてしまいますけど。) 今回はそのなかでもグラフデータベースの本を取り上げます。 この本のタイトルは『グラフデータベース』となっていますが、グラフデータベースに関する一般論というよりは、サブタイトルの通り『Neo4j によるグラフデータモデルとグラフデータベース入門』といった内容です。 Neo4j は意外に歴史のあるオープンソースのデータベースですが、最近特によく目にするようになりました。(最近では Neo4j のフルマネージドなクラウドサービスである AuraDB も利用できるようになってます。) Wikipedia: Neo4j https://ja.wikipedia.org/wiki/Neo4j Neo4j Graph Data Platform | Graph Database Management System https://neo4j.com/ Fully Managed Graph Database Service | Neo4j AuraDB https://neo4j.com/cloud/platform/aura-graph-database/ さて、グラフデータベースのモデルにもいろいろありますが、Neo4j のデータモデルはプロパティグラフです。 プロパティグラフとは、本書では以下の特徴を備えたものと説明されています。 プロパティグラフはノード、関係、プロパティで構成される。 ノードはプロパティを持つ。ノードを、任意のキー/値ペアの形式でプロパティを格納するドキュメントと考える。キーは文字列であり、値は任意のデータ型になる。 関係は、ノードをつないで構...

クエリのような API に入門する:初めてのGraphQL

初めてのGraphQL ― Webサービスを作って学ぶ新世代API Eve Porcello (著), Alex Banks (著), 尾崎 沙耶 (翻訳), あんどうやすし (翻訳) 発売日: 2019/11/13 初めてのGraphQL ―Webサービスを作って学ぶ新世代API― (Amazonで書籍情報を表示) 殆どのシステム開発においては何らかの API(Application Programming Interface)を使ったシステム連携が行われていると思います。 API には様々な形態と選択肢がありますが、最近は GraphQL をよく目にします。 そんな GraphQL に入門してみたい、と思ったときに非常に良い本だと思いますのでご紹介します。 GraphQL | A query language for your AP https://graphql.org/ GraphQL(Wikipedia) https://ja.wikipedia.org/wiki/GraphQL ところで、GraphQL という単語は「Graph」と「QL」に分解できます。 ここでいう「Graph」は棒グラフや円グラフではなく「グラフ理論」にもとづくデータ構造(データモデル)、「QL」は「Query Language(問い合わせ言語)」が意図されていると思います。このためグラフデータへの問い合わせ言語のように思われるかもしれません。何だか難しそうな印象です。 しかし、実際に GraphQL を利用する上では学問的なグラフ理論を知っている必要はありませんし、グラフ構造に特化した問い合わせ言語でもありません。 むしろ、私には既存の API が抱えるいくつかの問題点を解決するために、新しい視点を加えた API 技術のように思えます。(そこが重要だと思ってます。) 具体的には、グラフ云々よりも、やり取りする JSON データの項目に柔軟性を持たせられる(クライアント側が必要な項目を選択できる)とか、モデルをより明確化できるなどです。 当然 GraphQL も『銀の弾』ではないと思いますが、それでも個人的には従来より一歩踏み込んだ面白い技術だと思っています。 さて、GraphQL に取り組む際の問題としてよく言われるのが「GraphQL...