投稿

10月, 2022の投稿を表示しています

クエリのような 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 レベルの環境と、具体的なプログラム開発環境