投稿

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...

vagrant ssh とスクリプトを使ってゲストOS(Ubuntu)の環境構築を自動化してみる

イメージ
本記事では、VirtualBox + Vagrant + Ubuntu のベース BOX から仮想マシンを作成した後に、Windows のスクリプトと、vagrant ssh、Ubuntu のスクリプトを組み合わせて環境構築を自動化する簡単な方法をメモしておきます。 【目次】 [1]はじめに [2]スクリプトの構成 (1)基本的な考え方 (2)ディレクトリ構成例 (3)実行方法 (4)運用例:使い回し [3]簡単なWEBコンテンツのテスト環境サンプル (1)setupkit の例 (2)動作確認 [4]参考情報 (1)Windowsで Ubuntu のシェルスクリプトを作成する場合の注意事項 (2)PowerShell のスクリプト [1]はじめに VirtualBox + Vagrant + Ubuntu のベース BOX を利用すると、簡単に Ubuntu の仮想マシン環境を用意することができます。 ところで、用意した仮想マシン環境を開発やテストに利用するためには、基本的なOSレベルの環境に加えて、プログラミングツールやミドルウェア、データベース環境の構築など、定型的だけど面倒な作業が必要です。 Vagrant は、元のベース BOX をカスタマイズすることができますので、これらのツール群をインストールした BOX を作成することもできます。 しかし OS は比較的長いスパンで安定して使える一方、開発ツール群(特に開発言語やライブラリなど)は OS よりもバージョンアップのサイクルが早いように思えますし、プロジェクト毎に必要となるツール群のバージョンが異なる場合もあります。 ツール群のバリエーションやテストデータも含めた BOX のバリエーションを増やしてしまうと、何が何だか分からなくなるのに加えて、個人的にはディスクを浪費するのが辛いです。 その一方、アプリ開発環境については、ソースコードの準備から必要なライブラリをインストールして実行するステップは、プログラミング言語毎に優秀なパッケージマネージャがありますので、かなり自動化できます。 (リポジトリからソースコードを取得して、npm、pip、 maven などのインストールコマンドを実行するパターンです。) つまり、基本的な OS レベルの環境と、具体的なプログラム開発環境...

安全な委譲の仕組みを理解する(OAuth徹底入門)

OAuth徹底入門 セキュアな認可システムを適用するための原則と実践 Justin Richer、 Antonio Sanso(著)、Authlete Inc.(監修)、須田智之(翻訳) 発売日:2019/1/30 OAuth徹底入門 セキュアな認可システムを適用するための原則と実践 (Amazonで書籍情報を表示) 今やインターネットと全く関りが無いソフトウェアは殆ど無いといっていい時代になりました。 そうなるとセキュリティの観点から様々な考慮が必要になります。 特に認証や認可に関する部分はアプリ設計の基礎になるので必須の技術や知識といえます。 実際に、トークンとか、IDaaS、OpenID Connect といった言葉をよく耳にしますが、これらの多くは OAuth 2.0 を基礎にしています。 RFC 6749:The OAuth 2.0 Authorization Framework https://www.rfc-editor.org/rfc/rfc6749 そこで今回は OAuth 2.0 に関する本を取り上げます。 「本書について」の項には以下のように書かれています。 本書は OAuth 2.0 のプロトコルとそれに付随する多くのテクノロジー、たとえば、OpenID Connect や JOSE/JWT なども含めて包括的に、そして、徹底的に見ていくことを目的としています。 私たちは読者に本書を通じて OAuth で何ができるのか、なぜ機能するのか、そして、安全でないインターネットでどうすれば適切に、そして、安全に OAuth を展開できるのかを深く理解してもらいたいと思っています。 そして「はじめに」の項に著者の思い?が書かれています。 本書では、実際に運用されている特定の OAuth プロバイダについて取り上げてはおらず、特定の API や製品についても説明していません。そうではなく、本書は OAuth 自体がどのように機能するのかを中心に取り上げており、OAuth のシステムを稼働すると、すべての OAuth の部品がどのように作用し合うのかを見ていくようになっています。 『○○プラットフォームで使える OAuth 2.0 の実装の仕方』のようなものを書きたいのではなく、『どのようなプラットフォームでも適用で...

Vagrant + VirtualBox + Ubuntu 環境の Guest Addtions を更新する手順

イメージ
本記事では Vagrant+VirtualBox+Ubuntu環境の Guest Additions を手動で更新する手順について見ていきます。 【目次】 [1]はじめに [2]概要:作業フロー [3]具体的な作業手順 (1)光学ドライブに VBoxGuestAdditions.iso ファイルを追加 (2)仮想マシンの起動(vagrant up) (3)仮想マシンにログイン(vagrant ssh) (4)ビルドツールのセットアップ (5)CD-ROM のマウント (6)VBoxLinuxAdditions.run の実行 (7)CD-ROM のマウント解除 (8)ログアウト (9)仮想マシンの終了(vagrant halt) (10)光学ドライブから VBoxGuestAdditions.iso ファイルを除去 [1]はじめに VirtualBox の Guest Additions は、共有フォルダ、時刻同期、マウスポインタの統合、クリップボード共有、画面リサイズ等々、ホストOSとゲストOSを密に統合して使いやすくしてくれる機能を提供してくれます。 Guest Additions https://www.virtualbox.org/manual/ch04.html Vagrant のベースBOXから作成した VirtualBox の仮想マシンには、この Guest Additions が予めインストールされていると思います。(Vagrant の VirtualBox 版ベースBOXの要件として、VirtualBox Guest Additions のインストールが必要となっているようです。) Creating a Base Box https://www.vagrantup.com/docs/providers/virtualbox/boxes しかし、ゲストOSをバージョンアップしたり、ホスト側の VirtualBox をバージョンアップした場合など、Guest Additions の再インストールが必要な場合もあります。 あるいは、Guest Additions が提供する機能(例えば画面リサイズや共有フォルダなど)がうまく動作しない場合などに、再インストールして試してみたい場合もあるかと思います。(特に、ソフトウェアのアッ...

Schema.org の語彙で RDFS 推論してみる(3):OWL-RL で推論

イメージ
本記事では、OWL-RL、SPARQL/RDFLib、Schema.org 語彙定義を利用して検索や推論を行います。 【目次】 [1]はじめに [2]語彙定義の一部で試してみる (1)Schema.org 語彙定義の一部を抜き出す (2)語彙定義を追加して可視化してみる (3)SPARQL で検索してみる [3]OWL-RL で推論 (1)ここで扱う推論とは:RDF(S) entailment (2)OWL-RL をインストール (3)推論を実行して可視化してみる (4)SPARQL で検索してみる [4]Schema.org 語彙定義を利用した推論や検索 [1]はじめに 本記事は、記事『 Schema.org の語彙で RDFS 推論してみる(2):機械可読な語彙定義ファイル 』の続き(第3回)です。 前回の記事では、Schema.org が提供する RDFS ベースの語彙定義を概観して、Python ライブラリ RDFLib に読み込む方法を見ました。 本記事では、Schema.org の語彙定義を利用した検索や推論を簡単に見ていきます。 なお、本記事では Google Colaboratory + RDFLib で動作を見てきましたので、RDFS 推論には、同じ環境で利用できる OWL-RL を利用します。 第1回 準備 第2回 機械可読な語彙定義ファイル 第3回 OWL-RL で推論 [2]語彙定義の一部で試してみる (1)Schema.org 語彙定義の一部を抜き出す 前回の記事で Schema.org の概念階層を中心に概観し、RDFS ベースの機械可読な定義ファイルもダウンロードできることを見ました。 以降では、これを用いた推論などを見ていきますが、Schema.org の語彙定義には多くの内容が含まれていますので、推論などによって情報がどのように変化するかを具体的に確認したいときは大変です。 そこで動きを確認しやすいように、Schema.org の語彙定義から抜粋した小さな語彙定義を作って見ていく事にします。 ここでは、第1回の記事で取得したデータに現れる概念(タイプ、クラス)について、階層関係(サブクラス関係)に絞って見てみます。 具体的には、以下の概念が出現していました。 Article Orga...