Web技術について

機械学習技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 オントロジー技術 検索技術 データベース技術 アルゴリズム デジタルトランスフォーメーション技術 Visualization & UX ワークフロー&サービス ITインフラ技術 Javascript CSS 本ブログのナビ

Web技術について

Web技術は、機械学習、人工知能、デジタルトランスフォーメーション等の技術を載せるプラットフォームとなる。

ここでは、Web技術の概要(インターネット技術概要、HTTPプロトコル、ウェブサーバー、ウェブブラウザ、ウェブアプリケーションとJavascriptやReact等のプロジラミング技術)と実装技術(Javascript、React、Clojure,Pyhton等による具体例)、具体的な活用(MAMP、各種CMS(Contents Management System)であるMediaWiki、WordPress、検索プラットフォームであるFessやElasticSearchの具体的な立ち上げ)と様々な応用(学会やweb上で発表された様々な応用例)について述べる。

実装

ここでは”サーバー技術“で述べているサーバーを各種プログラミング言語で活用する事例について述べる。ここでのサーバー技術とは、ネットワーク上でクライアントからのリクエストを受け取り、要求された処理を実行してレスポンスを返すサーバーシステムの設計・構築・運用などに関する技術のことを指す。

サーバー技術は、WebアプリケーションやAPIサーバー、データベースサーバー、メールサーバーなど、さまざまなシステムやサービスで使用されており、プログラミング言語やフレームワークに応じて、サーバー技術の実装方法やベストプラクティスが異なる。

Rustは、Mozilla Researchが開発したシステムプログラミング向けのプログラミング言語であり、高いパフォーマンス、メモリ安全性、並列性、およびマルチスレッド処理を重視して設計されたものとなる。また、コンパイル時に強力な静的型チェックを行うことで、バグを予防することに焦点を当てた言語でもある。

ここでは、このRustに関する概要と基本的な文法および各種適用事例と具体的な実装について述べている。

データベース技術とは、データを効率的に管理・保存・取得・処理するための技術のことを指し、情報システムやアプリケーションにおけるデータの永続化や操作を支援し、データの正確性、一貫性、可用性、安全性を確保することを目的としたものとなる。

以下にこれらのデータベースを実際に扱うための各種言語による実装について述べる。

Raspberry Pi(ラズベリーパイ)は、シングルボードコンピュータ(Single Board Computer, SBC)の一つであり、英国のラズベリーパイ財団(Raspberry Pi Foundation)によって開発された小型のコンピューターとなる。その名前は、英国で親しまれている「ラズベリーパイ」というデザートに由来している。

ここではこのRaspberry Piの概要と様々な適用事例と具体的な実装例について述べている。

ClojureでのRingを用いたサーバーの立ち上げについて

前回に立ち上げたClojureでのサーバーにcompojureを用いたルーティングを導入

ウェブアプリケーションを構築するためにClojureでpostgresqlを立ち上げる

Clojureでサーバーとデータベースを統合する

Webクローリングは、Web上の情報を自動的に収集する技術となる。ここでは、それらの概要と応用例およびPythonとClojureを用いた具体的な実装について述べる。

検索システムは、与えられたクエリに基づいてデータベースや情報源を検索し、関連する結果を返すシステムとなり、情報検索、画像検索、音声検索など、さまざまな種類のデータを対象とすることができるものとなる。検索システムの実装には、データベース管理、検索アルゴリズム、インデックス作成、ランキングモデル、ユーザーインターフェースなどの要素が関与し、さまざまな技術やアルゴリズムが利用され、特定の要件やデータの種類に応じて適切なアプローチが選択される。

ここではElasticsearchを中心とした具体的な実装例について述べている。

短時間で立ち上げ可能な、エラスティックサーチベースの検索エンジン(クリーリング、自動インデクシング、単語登録機能等)

検索エンジンのデファクトであるエラスティックサーチの立ち上げのための環境設定の手順

nodeとreact上で構築されるエラスティックサーチのシンプルなUI(reactive searchの立ち上げ)の構築について述べる。

前回に引き続き、reactivesearchのUIの応用として、一段複雑な検索UIの構成について述べる

Elasticsearchは、オープンソースの分散型検索エンジンであり、高速なテキスト検索やデータ分析を可能にするための多くの機能を提供している。また、Elasticsearchの機能を拡張するための様々なプラグインも利用できる。ここではこのプラグインと具体的な実装について述べている。

Javascriptを使ったフロントサイドのサーバーフレームワークであるNode.jsとReactを用いたシンプルなchatbotの実装について述べる。

基本的な動作としては、会話のルールを書いた後に、jsonファイルにそれらを落とし込み、書き込まれたシーケンスの流れに沿って会話が進むルールベースのものとなる。

Media WikiやWord Press等のCMS(contents Management System)は様々なシーンで利用されるプラットフォームとなる。それらの本番運用としては、Apache等のサーバーとPostresql等のデータベースの立ち上げが必要となるが、簡易な立ち上げとしてXAMPPやMAMPを利用することができる。

今回は、MAMPの立ち上げと、Mediawiki(WordPress)の立ち上げについて述べる。

    Semantic MediaWiki(SMW)は、ウィキメディアのメディアウィキソフトウェアを拡張し、セマンティックウェブの原則に基づいたセマンティック機能を追加するための拡張機能となる。SMWを使用することで、ウィキページに豊富なメタデータと意味論的な情報を追加し、情報の検索、フィルタリング、可視化を強化することができる。

    Semantic MediaWikiは、ウィキページの情報を構造化し、それらの間の関係を定義するための特別なマークアップとクエリ言語を提供している。これにより、ウィキ内のデータベースのようにウィキページを扱うことができま、情報のカテゴリ化、タグ付け、関連付け、プロパティの定義などの機能を提供している。

    機械学習で重要な前処理(データ分割、正規化、クレンジング等)を行うためのツール。特に、自然言語処理での表現の揺れに対応する編集距離処理等を持ったり、インプット/アウトプットとしてさまざまな形態のデータを変換できること等が特徴

    グラフデータ等の関係データを可視化するツールとしてJavascriptをベースとしたD3.jsやReactを利用したものを用いることができる。今回はグラフ表示形態として2D、3Dのグラフ表示および、関係データの表示形態としてヒートマップのそれぞれに対して、主にD3やReactでの具体的な実装について述べる。

    PedestalはAPIファーストのClojureフレームワークで、動的な性質を持つ信頼性の高い並行サービスを構築するためのライブラリ群を提供するデータ駆動型の拡張可能なフレームワークであり、コンポーネント間の結合を減らすためにプロトコルを使って実装されている。

    CSS(Cascading Style Sheets)は、HTMLやXMLなどのマークアップ言語で作られたドキュメントのスタイルやレイアウトを指定するためのスタイルシート言語であり、Webページの見た目を装飾するために使用され、フォントの色やサイズ、背景色や画像、余白、レイアウトなどを指定することができるものとなる。Bootstrapは、HTML、CSS、JavaScriptを使用してレスポンシブなウェブサイトやWebアプリケーションを構築するためのフレームワークとなる。

    ここでは、主にbootstrapの様々な実装について述べている。

    WoT(Web of Things)は、インターネット上のさまざまなデバイスを相互に接続し、デバイス間の通信や相互作用を可能にするための標準化されたアーキテクチャとプロトコルとなる。WoTは、IoT(Internet of Things)を拡張し、デバイスとのやり取りを簡素化し、相互運用性を高めることを目的としている。

    今回はこのWoTに関して、一般的な実装手順やライブラリ、プラットフォーム、更にpythonやCによる具体的な実装例について述べている。

    クラウド技術

        今回は、webサーバー一台とデータベースサーバー1台で構成されたオンプレミスのシステムをAWSで実現するにはどうすれば良いかについて述べる。

        Amazon Web Services(以下AWS)は、クラウドで構成された仮想的なシステムとなる。当然のことながら、コンピューターやストレージ、ネットワークも仮想的となる。AWSと契約直後は、サーバーはおろかネットワーク自体もない状態となる。

        システムを作るためには、まず仮想的なネットワークを構築することら始める必要がある。仮想的なシステム構築は、従来の物理的なシステム構築と基本的な考え方は同じだが、異なる部分も少なくない。そのため、AWSの仮想的なシステムやネットワークの構築には、最初にその違いを十分に理解しておく必要がある。そこで今回ははレガシーな物理インフラとAWSにおけるデータセンター環境の違いについての概要について述べる。

        Amazon VPC(Virtual private Cloud)は、クラウド上に仮想的なネットワークを構成するサービスとなる。サーバーなどのリソースを配置するときには、まずVPC領域の作成が必要となる。さらに仮想マシンをVPC領域内で稼働さらるには、VPCにサブネットを作成し、いくつかのネットワークの設定を行うコツようがある。ユーザーにとっては、最も基本的なAWSのサービスの一つとなる。

        VPCは仮想的なネットワーク環境なので、ハードウェアに一切触れることなく、遠隔地からでもwebブラウザを利用したユーザーインターフェースを利用して自由に設定できる。AWSクラウド内であれば、たとえ大規模なネットワークであっても、膨大なリソースの管理を少人数で対応可能となる。ただし、AWSの仮想ネットワークの構築には、独自の設定内容も少なくないため、ここでは、そうした点に注意しながら、実際にVPC領域を作成し、その中にサブネットを作成していく。

        サブネットにEC2インスタンスを配置すると、プライベートIPアドレスが一つ以上、自動で割り付けられる。まずはその割り当てルールと仕組みについて述べる。

        上記までのIPアドレスの割り当てルールをベースにして、実際にサブネットにEC2インスタンスを配置して、その動作を見てみる。ここでは前述した「mysubnet01」というサブネットに、EC2インスタンスを設置する例について述べる。

        AWSでは、性能が異なるさまざまなEC2インスタンスタイプが提供されている。EC2インスタンスは、稼働時間1時間あたりの従量課金で、高性能なインスタンスほど高価となる。今回実験で用いるだけなら、低スペックで価格の安いインスタンスタイプを選べば十分となる。しかし、実際に運用する際には、コストとパフォーマンスの兼ね合いで求められるシステムの要求に応じた適切なインスタンスタイプを選ぶ必要がある。インスタンスの性能は、主に以下の7項目で決まる

        インターネットからEc2インスタンスに接続するには、パブリックIPアドレスの割り当てとインターネットゲートウェイが必要となる。このこと自体は、通常のネットワーク環境と変わらないが、AWSにおけるパブリックIPアドレスは、少し特殊な扱いになっており、インスタンスに本当にパブリックIPアドレスを割り当てるのではなく、プライベートIPアドレスのままNATで変換して通信する。

        今回はパブリックIPの割り当てとインターネットゲートウェイの設定方法について述べる。そして、SSHでEC2インスタンスにログインし、ネットワークインターフェースの設定を確認することで、割り当てたIPアドレスは、インスタンスからどのように見えるのかについて述べる。

        VPC上のEC2インスタンスをインターネットに接続するには、パブリックIPアドレスを割り当てるだけでは十分でない。インターネットゲートウェイを用意し、ルートテーブルも変更しなければならない。

        インターネットに接続されるEC2インスタンスには、外部からの攻撃に対処するため、通信ポートを制御するファイアーウォール機能が必要となる。AWSのファイアーウォール機能には2つのしくみが用意されている。一つは「セキュリティグループ」もう一つが「ネットワークACL」となる。前者はEC2インスタンスごに設定され、後者はサブネットごとに設定されるものとなる。

        セキュリティレベルの異なる仕組みが用意されているのは、両者を使い分ける必要があるためで、大雑把に言うと、サブネット単位のセキュリティにはネットワークACLを使い、インスタンスごとに個別の対応が必要なポートの制御は、セキュリティグループを使う。

        今回は、この2つのファイアーウォール機能について述べ、Apache HTTP ServerやnginxなどのWebサーバーソフトウェアをEC2インスタンスにインストールしたときに必要となる、セキュリティグループの変更方法について述べる。

        バックエンドにデータベースをかかえるよえなWebサイトでは、セキュリティ上の理由から、インターネットから直接アクセスできないサブネットにデータベースサーバーを設置するのはよくある実装となる。AWSの場合も、プライベートサブネットにEC2インスタンスを設置できる。

        EC2インスタンスに対して何か作業するには、SSHなどを使ってリモートから接続する必要がある。しかし、プライベートなIPアドレスしか割り当てられていないインスタンスには、インターネットから到達できないため、直接インスタンスをリモートから操作できない。これに対する法則としては以下の2つがある。(1)踏み台サーバーを使う、(2)VPNを構成する 今回は(1)の手段についてWordPressとMySQLの構築を例として具体的な実装について述べる。

        ビジネスで利用されるWebサーバーは、通常は「http://www.example.co.jp/」などの、独自ドメインを使ったURLで運用される。そのとき必要となるのが「パブリックな固定IPアドレス」と「DNSサーバー」となる。

        オンプレミスの通信環境であれば、DNSが必要となればBINDを利用するのが当たり前なので、AWSでもEC2インスタンスにBINDをインストールすると考えるのが普通となる。もちろんこの方法でも名前解決を行う仕組みを構築できるが、AWSでは通常DNSサービスを提供するマネージドサービス(AWSに運用管理を任せてしまうサービス)である、Route53を利用する。

        概要

        まずはWeb技術のベースとなるインターネット技術について。インターネットの始まりは複数のコンピューターを経由して通信するしくみであるARPNETから始まる。ARPANETは1960年代後半から研究が開始され、1970年台初頭ににアメリカで実現されたもので、パケットと呼ばれる通信データを細切れにしたデータを複数のマシンを経由して通信するというものになる。

        当初は耐障害性の高いネットワークを構築するという軍事目的から始まったものであるが、それらを広く世界中で使われる標準技術まで昇華させたものがインターネットプロトコルスイート(スイートは一式を意味する)になった。インターネットプロトコルスイートで使われいるプロトコルはいくつかの階層に分かれており、上位のプロトコルが下位のプロトコルを隠蔽することにより通信を実現している。これをカプセル化と呼ぶ。このカプロセル化によりそれぞれの階層の間のモジュール性が担保され様々なネットワークの相互接続が可能となる。

        HTTPはWebでクライアントとサーバーが通信するときに使用されるアプリケーション層のプロトコルとなる。HTTPのHであるハイパーテキスト(Hypertext)は、複数の文書をむすびつける機能を指す。HTMLではリンクという機能を使ってハイパーテキストを実現する。

        HTTPのバージョンは現在ではHTTP/1.1が主流となっている。次世代のHTTPとしては高速化を目指して作られているHTTP2(ヘッダの圧縮やパイプライン処理)やHTTP3(QUIC利用)がある。

        HTTP1.1ではテキストでデータをやり取りする仕様となっている。そのためブラウザの開発ツールを使うことで実際にやりとりするデータの中身を見ることができる。

        HTTPではクライアントとサーバーで役割が大きく異なり、それぞれ送信するデータが異なる。HTTPで通信ができるのはクライアントからのみで、クライアントから送信されるのがHTTPリクエストとなる。これに対応してサーバーから通信されるのがHTTPレスポンスとなる。

        Webサーバーは常時ネットワークに接続していて、いつでもクライアントから接損を受けられるようになっている。クライアントからデータが尊信されたら、それを受信してHTTPリクエストの解析処理にデータを渡し、解析されたリクエストに応じてリスポンスデータを返す。

        webサーバーの特徴として、複数のクライアントからのリクエストを同時並行で行うものがある。複数リクエストの処理には大きく分けて「prefork型」と「イベント型」の2つの種類がある。

        Prefork型は、OSが持つ複数のプログラム(プロセス)を高速で切り替えてあたかも並行に動いているかのように振る舞う機能を用いて、複数クライアントからのリクエストを同時並行で処理する機能となる。このときwebサーバーは複数のプロセスを生成して、一つのプロセスが一つのコネクションを処理するものとなる。プロセスの切り替えはOSがやってくれるので、Webサーバーはそれぞれのプロセスで自分が担当しているリクエストの処理だけを担当すればよい。prefork型を採用している代表的なサーバーにはApache HTTP Serverがある。

        イベント駆動型では、一つのプロセスで複数のリクエストを処理するため非同期I/Oを用いる。これはネットワークやディスクへのアクセスなどCPUから見ると低速なデータのやりとりの待ち時間に別の処理を実行すると言うもので、このしくみにより高速な動作が可能となった。イベント駆動を採用している代表的なWebサーバーにnginxがある。

        今回はブラウザとHTML、CSS、Javascriptについて述べる。

        ブラウザは、前回のサーバーからのデータを受け取って処理するクライアント部となる。代表的なものとしてはChrome、Safari、Edge、Firefox等がある。ブラウザの実際の動作は、(1)URLを解析する、(2)DNSサーバーに問い合わせ、ホスト名からIPアドレスを取得する、(3)HTTPリクエストを生成する、(4)取得したIPアドレス宛にHTTPリクエストを送る、(5)WebサーバーからHTTPレスポンスを受け取る、(6)HTTPレスポンスを解析する、(7)必要ならば追加のHTTP通信で関連コンテンツを取得する、(8)受け取ったコンテンツの解析結果をもとに表示するとなる。

        レンダリングの入力となるHTMLはHyperText Markup Languageの略となる。ハイパーテキストはテキストの紐付け(リンク)によって、世界中の様々な情報にアクセスするしくみであり、マークアップ言語は構造を記述するための言語となる。HTMLはテキストを扱うため、見出しや段落等の文章の抽象的な構造や、フォントの大きさや色などの見た目の指定することができる。

        HTMLは元々文書の構造を定義するための言語であったがブラウザで表示されるための機能が追加され複雑になったため、それら見栄えの機能を分離するために策定されたものがCSS(Cascading Style Sheets)となる。CSSはHTML4から本格的に導入された。

        ブラウザ上で動作する言語としてJavascriptがある。これはWeb初期のころに使われていたNetscape Navigatorというブラウザ上で動作する言語として実装されたもので、当時Javaが大きな注目を浴びていたためJavaScriptという名前がつけられた。名前は似ているがJavaとは全く異なった言語となる。

        WebはHTMLのハイパーリンクにより世界中の文書を結びつけることを目的に構築された。それらの利用が増えるにつれて、元来は静的なコンテンツを提供するだけだったWebが、動的なアプリケーションを提供するように進化し、それらがWebアプリケーションと呼ばれるソフトウェアへと進化していった。

        しかしながら、それらのソフトウェアは静的な仕組みの上に動的な仕組みを構築したものであったので、一般的なアプリケーションとは異なった様々な工夫が必要となる。

        Webで使われているHTTPは状態を持たないステートレスなプロトコルであるため、ユーザーの状態を管理するには、何らかの形でアプリケーションに状態を保持する必要が出てくる。通常のPCやスマートフォンのアプリケーションでは、状態をメモリ上に持つので、状態を保つための特別な工夫は必要ないが、Webアプリケーションは、Webサーバーとスートレスなプロトコルでやりとりすることが前提なので、状態管理に様々な工夫が必要となる。

        様々なフレームワークが登場して何を選択すれば良いの?と感じる時がある。これらの世界では「フレームワーク疲れ」という表現がなされ、最適な処方箋は「ついていこうとするな」「確実なものはたった一つJavascriptそのもの」「とにかく言語(javascript)を学び、知識を増やした後で、フレームワークの動きがわかり納得のいく選択ができる」とも言われている。今回は、それら各種フレームワークについてまとめた。

        今回はJavascriptまわりの各種開発ツールとAltaJavascriptの概要について述べる。

        web系のアプリケーションでは人とのインタラクションを考慮する必要があり、マイクロセカンド単位で動作する機械と秒単位で動作する人との圧倒的に異なる時間軸の調整を行う必要が出てくる。それらを実現するメカニズムが非同期処理並列処理とよばれる機能になる。

        RESTはrepresentational state transferの略で、分散型ハイパーメディアシステムのアーキテクチャスタイルを定義している。RESTは、ステートレスで拡張性の高い、独立したコンポーネント実装を作成することに重点を置いている。RESTをサポートするアプリケーションは、クライアントの状態に関する情報をサーバー側に一切保存しない。このようなアプリケーションでは、クライアント自身がステートを維持し、アプリケーションによって公開されるHTTP APIなどのRESTスタイルの実装を使用して、クライアントとサーバーの間でステートを転送する必要がある。REST APIを利用するクライアントは、サーバーに最新の状態を問い合わせ、クライアント側で同じ状態を表現することで、クライアントとサーバーを同期させることができる。

            実装のためのプログラミング技術

            Javascriptによるフロントエンド開発

            Javascriptは、親やすく感じられる様に設計されている。この言語の構文はJavaに似ているし、関数、配列、ディクショナリゅあるいは連想配列)、正規表現などの構造は、多くのスクリプト言語と共通している。よってJavascriptは、少しでプログラムを書いた経験のある人なら、誰でも素早く学習できそうに見える。また、言語の核を形成するコンセプトの数が少ないので、初心者プログラマでも少ない訓練で実際にプログラムを書き始めることができる。

            このように近づきやすいJavascriptだが、本当に熟達するには、長い時間をかけて、この言語の瀬マンティクスや、特異性や、最も効果的なイディオム(慣用句)を、深く理解する必要がある。

            成功した技術が、たいがいそうであるように、Javascriptも時間をかけて進化してきた。最初は対話的なWebページをプログラミングできるよう「Javaを補強するもの」として宣伝されていたJavascriptだが、結局はWebで最も有力なプログラミング言語としてJavaの一を奪ってしまった。このように普及してきたJavascriptには1997年にみ臭い的な標準規格(公式にはECMAScriptと呼ばれる)が定められた。いまでは、このECMAScriptの様々なバージョンに準拠するJavascriptの実装が数多く存在する。

            本ブログでは 以下のページにて、このJavascriptに対して言語概要とフロントエンド開発に用いられる具体的な実装、またReact等のフレームワークについて述べている。

            CSSによるウェブデザイン

            CSSはCascading Style Sheetsの略で、HTMLでマークアップされた文書の見た目を制御するための言語となる。HTMLもCSSも非営利団体であるWorld Wide Web Consortium(略称W3C)によって仕様が策定されている。

            W3Cは世界中の多くの企業や団体がメンバーとして参加していて、最終的に勧告される仕様に至るまでの何段階かのステップが公開される。このような非営利の標準化団体による使用は、特定企業による使用に比べて、グローバルに長期にわたって利用していける利点があるが、その反面仕様が確定するまでに時間がかかるという欠点もあり、最新技術を先取りするために、ブラウザの使用も作成者の利用も途中段階の使用に基づいて行われることもある。

            CSSはHTMLとともに利用される。HTMLドキュメントでは文書の構造を明確にすることが重視される。ここでの「文書の構造」とは、見出し、本文、引用部、箇条書き、表組などの、コンテンツ各部の役割となる。このように文書の構造がHTMLの各要素により適切に定義されることによって、プログラムから構造を識別し扱える様になる。

            本ブログでは 以下のページにて、このCSSの概要と具体的な実装例、さらに人気のあるフレームワークでBootstrapの紹介を行なっている。

            PHPとウェブフレームワーク

            PHP(Hypertext Preprocessor)はApacheやIIS(Internet Information Services)など、主要なWebサーバーで動作するサーバーサイドスクリプトの実行環境となる。関数を主体にしたわかりやすい構文で、プログラムの初心者でも手軽に学習できることから、2000年以降、数年で急速にユーザー層をひろげているものとなる。

            近年では「初心者向け」というイメージはやや薄れてきて、オブジェクト指向構文、型宣言、標準ライブラリ、アプリケーションフレームワークなどの環境が強化されたことで、いわゆる大規模な開発にも十分に対応可能な地盤が整ってきている。またクラウド環境であるMicrosoft Azureを中心にPHPのサポートが強められており、以前は主にLinux環境の技術という印象のあったPHPも、マルチプラットフォームな環境の下で利用できる様になっている。

            PHPはよく言えば「柔軟な」、悪く言えば「曖昧でいい加減な」言語となる。ただなんとなく他の人の真似をしているだけでもそれなりのコードは欠けてしまうが、それだけにバグやセキュリティ上の問題をはらみやすい言語となる。

            本ブログでは 以下のページにてこのPHPについて、言語概要、Composer、Laravel等のフレームワークを使ったweb構築の実際について述べている。

            Clojureと関数型プログラミング

            Clojureは、Rich Hickeyにより作られ2007年に登場した比較的新しい言語である。新しいとは言っても、言語自体は1958年に登場したLISP言語の方言の一つであり、またJVMの上で動作してレガシーなプログラミング言語であるJAVAのコードをそのまま利用できるという古い顔と新しい顔を併せ持つ言語となっている。

            Clojureの特徴の一つとして関数型言語であるというものがある。これはpythonやjavascript等の通常の言語が手続きを書き並べていく言語であるのに対して、関数という機能ブロックで全てのプログラムを構成するというプログラミング言語の歴史の中では最新のトレンドに部類されるものとなる。

            プログラミング言語の開発の視点の一つに再利用性の向上がある。関数型言語の前に一世を風靡したオブジェクト指向型言語もそのような観点で開発されたものだが、関数というブロックで構成するというアイデアは更なる再利用性の向上を実現している。

            本ブログでは 以下のページにて、このClojureに対して、言語概要、一般的な実装例の紹介、webアプリケーションや機械学習での実装例とさらにAI技術への応用について述べている。

            • Node,JS入門

            応用

            人工知能技術、IOT技術で用いられるWoT(Web of Things)技術について述べる。WoTとは、既存のIoTの課題を解決するためにインターネットの規格団体であるW3Cが定めたもので、Web of Thingsの略で、「モノのWeb」という意味となる。

            WoTはIoTの課題のうち、互換性の欠如(現時点では、多くの場合、センサー、プラットフォームまたはオペレーティングシステムは、特定のシステムだけで動作する)に対して、既に広く普及している既存のWeb技術(HTMLやJavascript、JSONなど)やプロトコルを利用して、IoTのサービスやアプリケーションの提供を行うことで、デバイスの相互運用性を上げると共に、アプリケーションレベルでのセキュリティやアクセスコントロール、またSemantic Web技術と組み合わせたデータの意味的な使い回しなどの機能を付与することで、多種多様なサービスが創出できるようにすることを目指すものとなる。

            Apache Sparkは、オープンソースの並列分散処理基盤となる。Sparkは複数のコンポーネントで構成されている。並列分散処理のエンジンであるSpark Coreをベースに、用途別のライブラリ群として、SQL処理用のSpark SQL、ストリーム処理用のSpark Streaming、機械学習処理用のMLlib、グラフ処理用のGraphXなどとなる。

            Spark CoreのデータソースにはHDFS(Hadoop Distributed File System)だけでなく、HIve、HBase、PostgreSQL、MySQL、CSVファイルなどの入力を受け付けることができる。

            Sparkは大量データに対し高速な並列分散処理を実現する。Sparkはデータソースからデータを読み出した後、ストレージへのI?OやネットワークI/Oが極力少なくなる様に処理する。このため、Sparkは同じデータに対する変換処理が連続するケースや、機械学習のように結果セットに対して複数回繰り返し処理を行う処理に適している。また、同じレイテンシーで動作することを利用してストリーム処理を行うこともできる。Sparkの特徴を述べるために「機械学習処理」「業務処理」、「ストリーム処理」の観点でそれぞれ以下に述べる。

            セマンティックウェブ技術について

            Semantic Web技術とは「Webページの意味を扱うことを可能とする標準やツール群の開発によってワールド・ワイド・ウェブの利便性を向上させるプロジェクト」であり、現在のWWWの「ドキュメントの網」から「データの網」にweb技術を進化させるものとなる。

            そこで扱われるデータはDIKW(Data Information Knowledge Wisdom)ピラミッドでのDataではなく、InformationやKnowledgeの情報となり、オントロジーやRDFなどの知識を表現するフレームワークで表現されており、様々なDXやAIのタスクに活用されている。

            本ブログでは 以下のページで、このセマンティックウェブ技術やオントロジー技術、またセマンティックウェブ技術の世界的な学会であるISWC(International Semantic Web Conference)の情報等の学会論文について述べている。

            その他技術トピック

            コメント

            1. […] 本ブログでは以下に示すように、概要から環境の立ち上げ、言語の詳細とWebアプリケーション、機械学習、人工知能技術への応用について述べている。 […]

            2. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー オントロジー技術サマリー 検索技術サマリー データベース技術サマリー ユーザーインターフェース技術サマリー […]

            3. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            4. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            5. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  […]

            6. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            7. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            8. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            9. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            10. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー オントロジー技術サマリー 検索技術サマリー データベース技術サマリー ユーザーインターフェース技術サマリー […]

            11. […] 機械学習技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー オントロジー技術サマリー ウェブ技術サマリー データベース技術サマリー  デジタルトランスフォーメーション技術サマリー […]

            12. […] 人工知能技術サマリー ウェブ技術サマリー データベース技術サマリー デジタルトランスフォーメーション技術サマリー […]

            13. […] 人工知能技術サマリー ウェブ技術サマリー データベース技術サマリー  デジタルトランスフォーメーション技術サマリー […]

            14. […] 人工知能技術サマリー ウェブ技術サマリー データベース技術サマリー  デジタルトランスフォーメーション技術サマリー […]

            15. […] 人工知能技術サマリー ウェブ技術サマリー データベース技術サマリー  デジタルトランスフォーメーション技術サマリー […]

            16. […] 人工知能技術サマリー ウェブ技術サマリー データベース技術サマリー  デジタルトランスフォーメーション技術サマリー […]

            17. […] 人工知能技術サマリー ウェブ技術サマリー データベース技術サマリー  デジタルトランスフォーメーション技術サマリー […]

            18. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー オントロジー技術サマリー 検索技術サマリー データベース技術サマリー ユーザーインターフェース技術サマリー […]

            19. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー […]

            20. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            21. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            22. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            23. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            24. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            25. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            26. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            27. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            28. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            29. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            30. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            31. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            32. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー  デジタルトランスフォーメーションサマリー […]

            33. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー  デジタルトランスフォーメーションサマリー […]

            34. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー  オントロジー技術サマリー […]

            35. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            36. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            37. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            38. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            39. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            40. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            41. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            42. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            43. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー オントロジー技術サマリー 検索技術サマリー データベース技術サマリー ユーザーインターフェース技術サマリー  セマンティックウェブ技術サマリー […]

            44. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリ […]

            45. […] プログラミング技術サマリー  ICT技術サマリー  フロントエンド技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            46. […]  人工知能技術サマリー.  プログラミング技術サマリー.  ウェブ技術サマリー フロントエンド技術サマリー.  […]

            47. […] プログラミング技術サマリー  ICT技術サマリー  フロントエンド技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            48. […] プログラミング技術サマリー  ICT技術サマリー  フロントエンド技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            49. […] プログラミング技術サマリー  ICT技術サマリー  フロントエンド技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            50. […] デジタルトランスフォーメーションサマリー 人工知能技術サマリー ウェブ技術サマリー ICT技術サマリー PHP言語サマリー […]

            51. […] デジタルトランスフォーメーションサマリー 人工知能技術サマリー ウェブ技術サマリー ICT技術サマリー […]

            52. […] プログラミング技術サマリー  ICT技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            53. […] デジタルトランスフォーメーションサマリー   人工知能技術サマリー.  プログラミング技術サマリー.  ウェブ技術サマリー ユーザーインターフェース技術サマリー […]

            54. […] 人工知能、ML等のすべてのIT技術に活用されるウェブ技術の概要 | Deus Ex Machina より: 2022年2月11日 5:09 AM […]

            55. […] 人工知能、ML等のすべてのIT技術に活用されるウェブ技術の概要 | Deus Ex Machina より: 2022年2月11日 5:48 AM […]

            56. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            57. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            58. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            59. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

            60. […] 人工知能、ML等のすべてのIT技術に活用されるウェブ技術の概要 | Deus Ex Machina より: 2022年2月11日 5:15 AM […]

            61. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術  デジタルトランスフォーメーション […]

            62. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術 Clojureと関数プログラミング    デジタルトランスフォーメーション […]

            63. […] 人工知能、ML等のすべてのIT技術に活用されるウェブ技術の概要 | Deus Ex Machina より: 2022年2月11日 5:17 AM […]

            64. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            65. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            66. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            67. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            68. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            69. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            70. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            71. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボッ […]

            72. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術 Clojureと関数プログラミング デジタルトランスフォーメーション […]

            73. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

            74. […] 機械学習技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー オントロジー技術サマリー ウェブ技術サマリー 検索技術サマリー     データベース技術サマリー  アルゴリズムサマリー  デジタルトランスフォーメーション技術サマリー   Visualization & UXサマリー   ワークフロー&サービスサマリー […]

            75. […] 機械学習技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 オントロジー技術 ウェブ技術 検索技術     データベース技術  アルゴリズム  デジタルトランスフォーメーション技術   Visualization & UX   ワークフロー&サービス […]

            76. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

            77. […]  人工知能技術サマリー.  プログラミング技術サマリー.  ウェブ技術サマリー CSSによるウェブデザイン  […]

            78. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

            79. […] 人工知能技術 ウェブ技術 知識情報処理技術 セマンティックウェブ技術   自然言語処理 機械学習技術  オントロジー技術 オントロジーマッチング技術 […]

            80. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            81. […] 人工知能技術 ウェブ技術 知識情報処理技術 セマンティックウェブ技術   自然言語処理 機械学習技術  オントロジー技術 オントロジーマッチング技術 […]

            82. […] 人工知能技術サマリー ウェブ技術サマリー 知識情報処理技術サマリー セマンティックウェブ技術サマリー   自然言語処理サマリー 機械学習技術サマリー  オントロジー技術サマリー オントロジーマッチング技術サマリー […]

            83. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

            84. […] プログラミング技術サマリー  ICT技術サマリー  フロントエンド技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            85. […] プログラミング技術サマリー  ICT技術サマリー  フロントエンド技術サマリー  ウェブ技術サマリー  デジタルトランスフォーメーションサマリー […]

            86. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術  デジタルトランスフォーメーション […]

            87. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術  デジタルトランスフォーメーション […]

            88. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術  デジタルトランスフォーメーション […]

            89. […] プログラミング技術  ICT技術  Javascriptによるフロントエンド開発  ウェブ技術  デジタルトランスフォーメーション […]

            90. […] Twitter Facebook はてブ Pocket LINE コピー 2023.03.29 2022.01.10 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 IOT […]

            91. […] Twitter Facebook はてブ Pocket LINE コピー 2023.06.02 2022.01.02 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 […]

            92. […] Twitter Facebook はてブ Pocket LINE コピー 2023.06.13 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 […]

            93. […] Twitter Facebook はてブ Pocket LINE コピー 2023.06.21 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術  […]

            94. […] Twitter Facebook はてブ Pocket LINE コピー 2023.07.03 2021.10.17 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 […]

            95. […] Twitter Facebook はてブ Pocket LINE コピー 2023.07.18 2021.10.17 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 […]

            96. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 自然言語処理技術 推論技術 セマンティックウェブ技術 深層学習技術 オンライン学習 強化学習技術 […]

            97. […] オントロジー技術 機械学習技術 ウェブ技術 ワークフロー&サービス […]

            98. […] 自然言語処理技術 セマンティックウェブ技術 オントロジー技術 ウェブ技術 検索技術 データベース技術 アルゴリズム […]

            99. […] Twitter Facebook はてブ Pocket LINE コピー 2023.12.09 Web技術 デジタルトランスフォーメーション技術 人工知能技術 […]

            100. […] Intelligence Twitter Facebook はてブ Pocket LINE コピー 2023.12.23 Web技術 デジタルトランスフォーメーション技術 人工知能技術 […]

            101. […] Intelligence Twitter Facebook はてブ Pocket LINE コピー 2024.01.20 2021.04.29 Web技術 デジタルトランスフォーメーション技術 人工知能技術 […]

            102. […] Twitter Facebook はてブ Pocket LINE コピー 2024.01.20 2022.08.20 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 […]

            103. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 自然言語処理技術 推論技術 セマンティックウェブ技術 深層学習技術 オンライン学習 強化学習技術 […]

            104. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 自然言語処理技術 推論技術 セマンティックウェブ技術 深層学習技術 オンライン学習 強化学習技術 […]

            105. […] 自然言語処理技術 セマンティックウェブ技術 オントロジー技術 ウェブ技術 検索技術 データベース技術 アルゴリズム […]

            106. […] Twitter Facebook はてブ Pocket LINE コピー 2024.02.19 2021.10.17 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 […]

            107. […] Twitter Facebook はてブ Pocket LINE コピー 2024.02.19 2021.10.17 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 […]

            108. […] Twitter Facebook はてブ Pocket LINE コピー 2024.03.08 2022.10.16 ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 […]

            タイトルとURLをコピーしました