投稿

ラベル(業務システム)が付いた投稿を表示しています

技術者教育の視点で読む「大規模サービス技術入門」

[Web開発者のための]大規模サービス技術入門 ― データ構造、メモリ、OS、DB、サーバ/インフラ 2010/7/7日 伊藤直也,田中慎司 著 [Web開発者のための]大規模サービス技術入門 (Amazonで書籍情報を表示) この本の冒頭にある「本書について」には以下のように書かれています。 本書は、大規模サービスを開発・運用する技術者のための入門書です。 インフラレベルから(主に全文検索を例とした)アプリケーション開発まで、大規模サービスを構築するために必要な技術が俯瞰的に述べられています。 ところで「はてな」では毎年夏に学生向けの就職体験を目的としたインターンシップを実施しているとのことで、インターンシップ企画を通じて、「はてな」では大規模サービス技術の教育方法が体系化されたとのことです。 本書では、このインターンシップでの講義をベースにして、大規模サービス技術を解説することを試みています。 私はこの本が出版された当時に買って読みました。しかしその時は興味あるところだけつまみ食いしただけで正直言えば印象が薄かったのですが、最近読み返したところ「教育方法の体系化」という点で非常に興味を持ちました。 今となっては少し古めの本かもしれませんが、本書に書かれている具体的な技術以上にとても勉強になり、面白さを感じたため取り上げることにしました。 <本の内容> はてなインターンシップの講義ベースと書き下ろしで構成されており、授業を受けている感じで進みます。私の学生時代にはこのような機会は無かったのですが、このようなインターンシップを体験できる学生さんが羨ましい。。。 【目次】 第1回 大規模Webサービスの開発オリエンテーション―全体像を把握する Lesson 0 本書の源 ―本書で説明すること,しないこと Lesson 1 大規模なサービスと小規模なサービス Lesson 2 成長し続けるサービスと,大規模化の壁 Lesson 3 サービス開発の現場 第2回 大規模データ処理入門 ―メモリとディスク,Webアプリケーションと負荷 Lesson 4 はてなブックマークのデータ規模 ―データが大きいと処理に時間がかかる Lesson 5 大規模データ処理の難所 ―メモリとディスク Lesson 6 スケーリングの要所 Lesson ...

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

クエリのような 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 の実装の仕方』のようなものを書きたいのではなく、『どのようなプラットフォームでも適用で...

REA パターンとオントロジー(ビジネスパターンによるモデル駆動設計)

ビジネスパターンによるモデル駆動設計 Pavel Hruby (著), 依田 智夫 (監修, 監修), 溝口 真理子 (翻訳), 依田 光江 (翻訳) Model-Driven Design Using Business Patterns 日本語版 発売日 2007/8/9、英語版 発売日 2006/6/22 ビジネスパターンによるモデル駆動設計 (Amazonで書籍情報を表示) REA(Resource-Event-Agent)という言葉は本のタイトルに含まれていませんが、この本は REA モデルにもとづく業務アプリケーションの設計パターン本です。 REA とは、ざっくり言えば、「商品を売ってお金をもらった」といったことを、「商品を売る(商品が減る)」、「お金が増える」という2つの双対な経済イベントとしてとらえ、そのイベントに関係するリソース(商品、お金など)と、エージェント(売り手、買い手となる企業や個人)を合わせてモデリングする考え方です。 これは簿記において、取引を借方と貸方で金額が同じによるように仕訳するのと似たような考え方ですが、そもそも REA は汎用の会計モデルとして提案された方法とのことなので、似ているというより包含した考え方のようです。 Resources, Events, Agents(英語版Wikipedia) https://en.wikipedia.org/wiki/Resources,_Events,_Agents REA Technology http://reatechnology.com/ 日本語: http://reatechnology.com/jp-index.html What Is REA http://reatechnology.com/what-is-rea.html 私は財務会計に関する知識は持ち合わせていないので、会計モデルとの対比云々は語ることができませんが、この本は財務会計の本ではないので会計知識が無くても読めますし、私は REA の双対となる増減イベントの考え方は強く印象に残りました。 また、この本には以下のように書かれています。 アプリケーション設計者は、一貫性があり業務の観点から見落としのない構造を手に入れることができるはず この本が出版された当時に読んだ印象は「面白い視点...

究極のモデリング(オントロジー工学)

イメージ
今回取り上げるのは「オントロジー」についての“深い”本です。 私はセマンティックWebやオントロジーの専門家ではなく、業務システム開発を生業とするものですが、私が以下の本に強く惹かれる理由は、この本の以下の一説に集約されているように思います。 オントロジー研究の本質は、物事に共通する本質を見抜く眼力と類似する物事の厳密な差別化をする鋭い分解能力にある。そして何よりも、オントロジーを正しく学ぶと、その二つの能力が高まり、結果として世界を構成する基盤概念の理解が深まるので、複雑な対象を明快に概念化することができるようになる。 これは読まねば。。。 オントロジー工学 (知の科学) 溝口 理一郎 (著), 人工知能学会 (著) 発売日 ‏ : ‎ 2005/1/1 オントロジー工学 (知の科学) (Amazonで書籍情報を表示) 目次 Ⅰ編 オントロジー事始め 1章 オントロジーとは 2章 今なぜオントロジーか 3章 オントロジーの種類 4章 FAQ 5章 オントロジー構築 6章 セマンティックウェブ Ⅱ編 より進んだ考察 7章 オントロジーに関する基礎的考察 8章 オントロジー基礎研究 9章 オントロジー工学の成功事例 Ⅰ編は、様々な立場でのオントロジーの定義が紹介され、オントロジーに関連することを俯瞰的に取り上げて、オントロジーとは?という問いに答えています。 オントロジーという言葉は立場が違うと関心事(目的?対象?)が異なるようなので、本のタイトルが「オントロジー」ではなく「オントロジー工学」である理由が理解できる気がします。(人工知能(AI)という言葉もなかなか難しいのと似ている気がする。。。) ところで、本のまえがきに、「本書は工学におけるモデリングと、存在論を論じる哲学者とのギャップを埋めるための第一歩を踏み出したいという気持ちに動かされて執筆された。」とあります。 続くⅡ編はまさにこの内容です。 上位オントロジーに関する内容が中心で、かなり哲学的な問題(世界)を扱っていて、難解な話が続きます。 哲学分野の存在論(オントロジー)の専門書や英語の上位オントロジーの書籍(論文?)など、様々な情報源はあると思うのですが、工学の視点で書かれた日本語の深い本は他に見かけませんので、個人的には、ここがこの本の最も価値ある部分...

Firebase Local Emulator Suite の Functions で FriendlyChat の Vision API や FCM を試してみる

イメージ
本記事では、Firebase Local Emulator Suite の Functions Emulator を利用してWeb版 FriendlyChat のコードラボにある Vision API(セーフサーチ)や FCM の機能を試してみます。 【目次】 [1]はじめに [2]概要 [3]実行環境の準備 (1)料金プランを従量課金制(Blaze プラン)に移行 (2)Vision API の有効化 (3)ImageMagick のインストール (4)サービスアカウント [4]Functions プログラムの準備 (1)ソースコードとプロジェクトディレクトリの準備 (2)依存パッケージのインストール (3)Vision API を利用するための検討 (4)Storage Emulator からダウンロードするための検討 (5)Vision API と Storage Emulator に対応するコード例 (6)ロケーションの変更コード [5]FriendlyChat を Local Emulator Suite で実行 (1)起動方法 (2)動作確認 [6]Firebase にデプロイして実行 [1]はじめに 本記事は、前の記事『 Firebase Local Emulator Suite で Web版 FriendlyChat を動かしてみる 』の続編です。 前の記事では、以下の Web版 FriendlyChat を作るコードラボを取り上げました。 (前回のコードラボ=>)FirebaseWebコードラボ https://firebase.google.com/codelabs/firebase-web#0 このコードラボは、クライアントアプリから Authentication、Firestore、Storage を利用してリアルタイムチャットアプリを作成します。そして、その完成版コードを利用して、Local Emulator Suite で動かしました。 このコードラボには続編があります。本記事はこれを取り上げます。 (今回のコードラボ=>)Firebaseのクラウド機能 https://firebase.google.com/codelabs/firebase-cloud-functions#0 続編である今回のコードラボで...