hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
Plan 9 from Bell Labs
Plan 9 from Bell Labs（通称 Plan 9）は、主に研究用に使われている分散オペレーティングシステム。ベル研究所の Computing Sciences Research Center で1980年代中ごろから2002年まで、UNIXの研究上の後継として開発された。Plan 9 は、ネットワークやユーザインタフェースまで含めたあらゆるシステムインタフェースを、個別のインタフェースではなくファイルシステムを通して統一的に表現することを特徴とする。Plan 9 は9Pプロトコルを使い、ユーザーにワークステーション毎に独立した作業環境を提供することを目指している。
Plan 9 は、UNIXの流れを汲むオペレーティングシステム (OS) の一種であり、開発に当たってUNIXの設計の問題点を改善することを念頭に置かれている。
Plan 9 from Bell Labs 名称の由来
Plan 9の"9"には、UNIX version 8の次の版という意味もあると言われている（UNIX version 9と10も作られているが）。
また、フルネームをPlan9 from Bell Labsだとしているが、これはエド・ウッドの史上最低の映画と評されたSF映画 Plan 9 from Outer Space から来ている。また、プロジェクトのマスコットキャラクターGlendaの名も、同じくエド・ウッド作品グレンとグレンダにちなむ。初期の（つまり間に合わせの）ウインドウシステムの8½は（9に足りてない、という意味もあるが）フェデリコ・フェリーニの名画「8 1/2」に掛けており、ハッカー流ジョークの側面でもUNIXの後継であることをうかがわせる。
Plan 9 from Bell Labs 歴史
Plan 9はベル研究所内の主な研究用プラットフォームとしてUNIXを代替し、システムの使用とプログラミングについての本来のUNIXのモデル、特に分散マルチユーザー環境にいくつかの変更を加えることの研究対象ともなった。1980年代中ごろに始まった当初、Plan 9はベル研究所内部のプロジェクトだった。
Plan 9はベル研究所の Computing Science Research Center のメンバーが開発した。そのグループはUNIXやC言語を開発したグループと同一である。当初チームはロブ・パイクやケン・トンプソンらが率い、Computing Techniques Research Department のリーダーとしてデニス・リッチーが支援した。開発には、ブライアン・カーニハン、ビャーネ・ストロヴストルップらも貢献している。
1992年、大学向けに初めてリリースした。1995年、一般向けの商用OSとしてリリースした。1990年代末、ベル研究所を引き継いだルーセント・テクノロジーは、このプロジェクトの商業化を断念。2000年、オープンソースライセンスで非商用リリースを行った。2002年、新たに自由ソフトウェアライセンスで非商用リリースを行った。
Plan 9 from Bell Labs 歴史
ベル研究所の研究員やマサチューセッツ工科大学などの Plan 9ユーザーコミュニティが、ISOイメージの形で頻繁なマイナーリリースを継続している。その開発はいまだにベル研究所がホスティングしている。開発ソースツリーは9PプロトコルかHTTPプロトコルでアクセスでき、インストールしたものを最新に保つのに使われている。OS本体をISOイメージとしている以外に、アプリケーションやツールのリポジトリもベル研究所がホスティングしている。
Plan 9 from Bell Labs 概要
UNIXの問題点とは、1つのコンピュータを多くの利用者が共有することを前提に作られており、多くのコンピュータを多くの利用者が共有することは考えられていないことである。その結果、利用者が特定のコンピュータを占有することになり、それらのコンピュータは雑然と管理運営されることになる。
UNIXの当初の環境では、どの端末からコンピュータを使っても同じ環境を再現できた。Plan 9では、それをネットワーク上に繋がった分散処理環境上で実現する。
また、UNIXの開発がローカルなファイルシステムをどう表現するかということをテーマとして始まったのに対して、Plan 9は、ローカルであれリモートであれ、リソースというものにどうアクセスするかということを課題とする研究として始まった。
したがって、UNIXの設計当初になかったネットワークの利用を前提とし、端末、CPUサーバ、ファイルサーバ、認証サーバを分けることでセキュリティの向上を狙う。また、ファイルサーバは毎日のスナップショットを保存し、ユーザーレベルでのバックアップ作業をほぼ不要なものとした。
当初はMOジュークボックスなどの利用を考えており、ハードディスクはMOジュークボックスのキャッシュという考え方だった。最近ではハードディスクの大容量化と低廉化が進んでいるため、MOジュークボックスの代わりにハードディスクを使えるようになりつつある。
Plan 9 from Bell Labs 概要
UNIX以前、多くのオペレーティングシステムはそれぞれのデバイスにアクセスするのに、それぞれ異なる機構を用意していた。例えば、ディスクドライブにアクセスするAPIは、シリアルポートでデータ送受信をするためのAPIとは全く異なるし、プリンターにデータを送信するAPIとも全く異なっていた。
UNIXはそのような差異をなくそうとし、全ての入出力をファイル操作でモデル化しようとした。そのため、全デバイスドライバが制御手段として read および write 操作に対応する必要に迫られた。こうすることで、mvやcpなどのユーティリティで、実装の詳細を気にすることなくデバイスからデバイスにデータを転送することができるようになった。しかし、UNIXでは多くの重要な概念（例えば、プロセス状態の制御など）はファイルにきれいにマッピングされなかった。ソケットや X Window System といった新たな機能が追加されたとき、それらはファイルシステムの外に存在するようになった。新たなハードウェア機能（ソフトウェアがCDのイジェクトを制御するなど）も、ioctlシステムコールなどのハードウェア固有制御機構を使うようになった。
Plan 9 from Bell Labs 概要
Plan 9研究プロジェクトは、ファイル中心の見方への回帰を目標とし、それ以外の手法を排除した（その一部は、外のUnixへ与えた影響が限定的であった、ベル研版UNIXのバージョン8, 9, 10から引き継がれたものである）。Plan 9のプログラムから見れば、ネットワークやユーザインタフェースのリソース（ウィンドウなど）も含めたあらゆるリソースが階層型ファイルシステムの一部となっており、それ以外の特別なインタフェースは使わない。
Plan 9は単一のマシンにインストールして、自立したシステムとして使うこともできる。しかし、OSの個々の機能コンポーネントをそれぞれ別のハードウェアプラットフォームに配置することもできる。模範的な配置では、RioというGUIを動作させた軽量な端末をユーザーが使い、ネットワーク経由でCPUサーバに接続して、そちらで計算量の多いプロセスを実行し、さらに別のマシンに用意した永続的データストレージをファイルサーバとして使う。最近のデスクトップコンピュータでは、複数の仮想機械を動作させて、この環境を1台のマシン上に再現することができる。
Plan 9 from Bell Labs 設計
Plan 9設計者はマイクロカーネルと似たような目標を掲げていたが、実際のアーキテクチャや実現方法は異なる。Plan 9の設計目標は次の項目を含む。
ファイルとしてのリソース
全てのリソースを階層型ファイルシステム内のファイルとして表現する。
名前空間
アプリケーションから見て、ネットワークは単一で一貫した名前空間であり、それも階層型ファイルシステムとして表現される。しかし、実体はローカルまたはリモートに分離されたリソース群である。各プロセスの名前空間はそれぞれ独立に構築でき、ユーザーは異なる複数の名前空間のアプリケーション群を同時に扱える。
標準通信プロトコル
9Pという標準プロトコルを使い、ローカルやリモートの区別なく、あらゆるリソースにアクセスする。
Plan 9 from Bell Labs 設計
Plan 9では、ファイルも画面もユーザーもコンピュータも、それぞれに固有のパス名が対応している。それらは全て既存のUNIXの手法で操作されるが、それに加えて任意のオブジェクトにパス名としての名前をつけることができる（World Wide WebのURIシステムに似ている）。UNIXでは、例えばプリンターなどの機器は /dev 配下の名前で表されるが、ネットワーク経由のプリンターはそのように表されることはなく、直接接続しているプリンターだけである。Plan 9ではプリンターはファイルとして仮想化され、ネットワーク上のあらゆるプリンターに任意のワークステーションから同じ方法でアクセスできる。
また Plan 9では、実世界では同一のオブジェクトにユーザーごとに異なる名前を付けることができる。各ユーザーは各種オブジェクトを自分の名前空間に集め、個人的環境を生成できる。UNIXでは類似の概念として、別のユーザーからコピーされることでユーザーが特権を得るというコンセプトがあるが、Plan 9 ではそれを全てのオブジェクトに拡張している。ユーザーは容易に自分自身の「クローン」を生成することができ、それに変更を加え、それらが作成されたリソースに影響を与えることなく削除できる。
Plan 9 from Bell Labs 設計
UNIXでは、「リンク」やファイルシステムの「マウント」といった考え方で各種リソース群からファイルシステムを構築できる。それらを利用すると、元々のディレクトリは見えなくなる。例えば、"net" というディレクトリに新たなファイルシステムをマウントすると、元々の "net" ディレクトリ配下の内容にはアクセスできなくなる。
Plan 9は「unionディレクトリ」という考え方を導入した。これは、異なる媒体やネットワークにまたがるリソース群をまとめたディレクトリであり、他のディレクトリと透過的に連結することができる。例えば、他のコンピュータの /bin ディレクトリを手元のコンピュータの同名のディレクトリと連結し、ローカルとリモートのアプリケーションに透過的にアクセスできるようにすることができる。同様に、/dev に外部のデバイスやリソースをまとめると、全くコードを追加することなくネットワーク経由でデバイスを共有できる。
LinuxディストリビューションのLive CDの多くは、この機能の限定版である union mount という機能を実装しているものが増えている。
Plan 9 from Bell Labs 設計
/proc ディレクトリには動作中プロセスの一覧があり、それぞれの状態を示している。いわゆる「プロセスファイルシステム（procfs）」と呼ばれるもので、標準化はされておらず詳細は異なるが、Linuxその他多くのUnixでも採用されている。プロセスは名前付きのオブジェクト（infoファイルやcontrolファイルのあるサブディレクトリ）として /proc 配下にあり、他のカーネルリソースと共に動的I/Oチャネルもあり、ユーザーはそれにコマンドを送ったり、データを読み取ったりできる。ユーザーは一部のシステムコールを使ったプログラムをコンパイルしてカーネルとやり取りする必要はなく、ls や cat といったコマンドでプロセスを検索し、操作することができる。
Plan 9 from Bell Labs 設計
他のマシンの /proc ディレクトリは他の特殊なファイルシステムと同様、ユーザーの名前空間にマウントでき、ローカルにあるかのようにそれを使うことができる。これにより、複数のマシンから成る分散コンピューティング環境ができる。ユーザーの机上にある端末、データを格納してあるファイルサーバ、高速CPUや認証やゲートウェイなどのその他サーバ群などがあり、それら全てがユーザーが見慣れたディレクトリ階層を使っている。ユーザーはファイルサーバやサーバで動作中のアプリケーションやネットワーク上のプリンターなどを集め、端末上の個人的名前空間にそれらをまとめることができる。
Plan 9 from Bell Labs 設計
Plan 9は多数の通信プロトコルやデバイスドライバのインタフェースとしてのシステムコールを持たない。例えば、/net はTCP/IP全体のAPIの役割を担っており、スクリプトやコマンドで操作可能で、制御ファイルに書き込むことでコネクションを読み書きできる。/net/tcp や /net/udp といったサブディレクトリはそれぞれのプロトコルへのインタフェースとして使うことができる。例えば、NATを実装する場合、公開IPアドレスを持つ境界線上のマシンの /net をマウントし、内部ネットワークで Plan 9 の9Pプロトコルを使い、プライベートIPアドレスの内部ネットワークから当該マシンへと接続する。VPNを実装する場合は、インターネット上でセキュアな9Pプロトコルを使い、リモートのゲートウェイの /net ディレクトリをマウントすればよい。
Plan 9 from Bell Labs 設計
/net で union ディレクトリを使う例を示す。オブジェクト指向プログラミングにおける継承のように、（リモートの） /special に対して、別のローカルなディレクトリを連結（重ね合わせ）する。すると同じ名前の制御ファイルはあとから重ねた方で隠され、新たな制御ファイルは追加された状態になる。言ってみれば union ディレクトリは、元の2つの親を継承した子オブジェクトのようなものである。オリジナルの機能は部分的に変更されることがある。これを /net ファイルシステムで考えると、/net/udp サブディレクトリを更新または隠蔽すると、UDPインタフェースにローカルなフィルタープロセスをかませて制御または拡張でき、/net/tcp は元のまま、おそらくリモートマシン上で動作させておくといったことができる。名前空間はプロセス単位に設定可能なので、信頼できないアプリケーションに対して制限を加えた /net union ディレクトリを見せることで、ネットワークアクセスを制限することができる。
このような機構は、異なるシステム上で異なる言語で書かれたファイルシステムや「オブジェクト」を容易に連結でき、プログラマからはファイルシステムの名前付けやアクセス制御やセキュリティの大部分が透過的となる。
類似の機構として4.4BSDの portalがある。UDPは実装されていない、（慣習であって本質的な違いではないが）マウントポイントが /net ではなく /p である、といった点が違う。
Plan 9はUNIXをベースとしているが、通信を中核機能としたシステムを構築できることを示すために開発された。全てのシステムリソースには名前があり、ファイルのようにアクセスでき、動作中の各プログラムに対応して動的に分散システムのビューを定義できる。この手法は、ユーザーやアプリケーションに提示するデータを保持するサーバ群を通常ファイルの集まりのように見せることで、アプリケーション設計の汎用性とモジュール性を改善する。
Plan 9のネットワーク透過性サポートの鍵となる部分は、9Pというプロトコルである。9Pプロトコルとその実装は、名前付きのネットワークオブジェクト同士を結びつけ、ファイルのようなシステムインタフェースとして提示する。9Pは高速なバイト指向分散ファイルシステムであり（ブロック指向ではない）、リモートマシン上のNFSサーバが提示するオブジェクトだけでなく、任意のオブジェクトを仮想化できる。このプロトコルはプロセスやプログラムやデータと通信するのに使われ、ユーザインタフェースとネットワークの両方を含んでいる。第4版では 9P2000 に改称された。
Plan 9の内部コードはUTF-8となっている。このため、多言語の問題は基本的には発生しない。また、そもそもUTF-8自体、Plan 9の研究の過程でケン・トンプソンが考案したもので、1992年に全コードがUTF-8対応になった。なお、Plan 9 がサポートしているのは、Unicodeの基本多言語面だけである。
Plan 9 from Bell Labs 実装
インストール可能な実行環境がx86向けに用意されている。また、MIPS、DEC Alpha、SPARC、PowerPC、ARMなどのアーキテクチャにも移植されている。システムは ISO/ANSI C の方言の一種で書かれている。いくつかのアプリケーションはAlefという独自の言語で元々は書かれていたが、後でシステムと同じC言語の方言で書き直されたものもある。POSIX対応アプリケーションを移植可能であり、ソケットは ANSI/POSIX Environment APE 経由でエミュレートできる。最近では、Plan 9上でLinux用バイナリを実行できる linuxemu というアプリケーションも開発中である。
IBMのスーパーコンピュータ Blue Gene にも移植されている。
Plan 9 from Bell Labs 影響
Plan 9はUNIXの中核的概念——すなわち全てのシステムインタフェースをファイル群で表現するということ——が現代的分散システムとして実装でき、機能することを示した。Plan 9 の一部機能、例えばUTF-8は他のオペレーティングシステムにも実装された。LinuxなどのUnix系オペレーティングシステムは9P、Plan 9 のファイルシステムやシステムコール体系も部分的に実装した。また、Plan 9 のアプリケーションやツールを集めた Plan 9 from User Space はUnix系システムに移植され、ある程度の人気を得ている。Glendix は、Linuxカーネルの周囲のGNUのシステムプログラムを Plan 9 内のプログラムで置き換えようとするプロジェクト（あるいは、逆に Plan 9 のカーネルを Linux に置き換えるプロジェクト）である。
しかし、Plan 9はUNIXほどの人気を得ることはなく、研究用ツールという位置づけに終始した。Plan 9に対しては、「オペレーティングシステム研究での興味深い論文を生成するためのデバイスとして主に機能している」という批判もある。エリック・レイモンドは著書 The Art of Unix Programming で、Plan 9が広まらない背景について、次のように考察している。
Plan 9 from Bell Labs 影響
Plan 9が失敗したのは単に、Unix がそれ以前のシステムを凌駕したほどPlan 9は注目に値する改良ではなかったからである。Plan 9に比べると Unix はガタピシ言って錆付いたところもあるが、与えられた仕事はちゃんとやっており、現在の位置に留まるだけの資格がある。野心的なシステムアーキテクトへの教訓がここにある。よりよいソリューションにとって最も危険な敵は、すでに存在する十分うまく動作するコードベースである。
Plan 9の支持者や開発者は、採用を妨げていた問題は既に解決され、当初の目標としていた分散システム、開発環境、研究用プラットフォームには十分な完成度であり、今後徐々に広まっていくだろうと主張している。Infernoは仮想機械上で動作するため、混在グリッド環境の一部として Plan 9 の技術をもたらす原動力になるとしている。
Plan 9 from Bell Labs ライセンス
GNUプロジェクトはPlan 9のライセンスを自由ソフトウェアライセンスだとは認めていなかったが、2003年6月にそのライセンスに変更が加えられ、GPLとは整合性を持たないながらも、自由ソフトウェアと認められるようになった。OSIもオープンソースライセンスと認めており、Debianフリーソフトウェアガイドラインには合格している。全ソースコードがそのライセンスでフリーで入手可能である。
内燃機関
内燃機関（ないねんきかん）とは、シリンダーなど機関内においてガソリンなどの燃料を燃焼させ、燃焼によって引き起こされる温度上昇によって燃焼室およびシリンダー内で一気に膨張する燃焼ガスを用いて直接に機械仕事を得る原動機をいう。内燃機関では燃焼ガスを直接作動流体として用いて、その熱エネルギーによって仕事をする。これに対して、蒸気タービンのように燃焼ガスと作動流体がまったく異なる原動機を外燃機関という。
内燃機関はインターナル・コンバスチョン・エンジン（internal combustion engine, ICE）の訳語であり、内部（インターナル）で燃料を燃焼（コンバスチョン）させて動力を取り出す機関（エンジン）である。「機関」も「エンジン」も、複雑な機構を持つ装置という意味を持つが、ここでは発動機という意味である。
なお、動力を取り出すことが目的の内燃機関ではあるが、特殊な用途としてパルスジェットによるフロンガスの分解や4サイクル機関による天然ガスの改質などが研究された。
内燃機関 動作概要と原理
内燃機関は熱エネルギーを機械エネルギーに変換する熱機関の一種であり、レシプロエンジン（ピストンエンジン）やロータリーエンジン(ヴァンケルエンジン)といった容積型内燃機関とガスタービンエンジンやジェットエンジンなどの速度型内燃機関に分けられる。
容積型内燃機関とは、燃焼ガスの容積変化(膨張)を利用するもので、クランク機構などにより回転軸出力として機械仕事に転換する内燃機関をいう。レシプロエンジンの場合、シリンダー（気筒）の内部で燃料を燃焼させ、燃焼ガスがピストンを押す力を利用する。このピストンの往復運動をクランクにより回転運動に変換し軸動力を得る。また、ロータリーエンジンの場合は、作動室内での燃焼後のガスの膨張によるローターの公転が、エキセントリックシャフトを回転させて軸動力を得る。
これに対して速度型内燃機関は燃焼ガスの高速の流れを利用するもので、タービン翼車の回転運動等を通じて機械仕事に転換する内燃機関をいう。ガスタービンエンジンの場合、燃焼器で燃料を燃焼させ、燃焼ガスが出力タービンを回転させることで軸動力を得る。軸動力ではなく推力を直接得るために、出力タービンを省き燃焼ガスを一方向に噴出させるとジェットエンジンとなる。
内燃機関 動作概要と原理
容積型機関は「間欠燃焼」、速度型機関は「連続燃焼」という燃焼形態の違いはあるが（パルスジェットエンジンは間欠燃焼式速度型機関という例外）、ともに燃焼熱により高圧となった燃焼ガスそのものを作動流体とすることは共通する。これに対し蒸気機関などの外燃機関では、機関外部の熱源（燃料の燃焼など）により、燃焼ガスとは別の作動流体（水など）に熱エネルギーを与え、機関により動力を得る。
現代の内燃機関では主に熱効率を高めるために、燃焼には出力の一部を利用して圧縮した空気を使用する。ディーゼルエンジン（レシプロエンジンの一種）のように、原理的に圧縮なしでは動作しない内燃機関もある。
積極的にデトネーションを利用する事で高効率化が期待され、パルス・デトネーション・エンジンの開発が各国で進められている。
内燃機関に限らず、燃焼プロセスを経る装置では、熱効率においてカルノー効率を超えるものは、理論上ありえず、また効率を最大限向上させると出力が殆ど無になる。
内燃機関 動作概要と原理
内燃機関は一般に「燃焼の力で自ら回転を開始する装置」であるかのように誤解される場合があるが、実際には、燃焼そのものには自発的な回転生成能力はなく、エンジンが完全停止（エンスト）している状態では、燃料供給・点火が成り立たないので始動は不可能である。
それに対して、外燃機関（例：蒸気機関）も単独では自己始動できない条件もありうるものの、構造上の工夫（多気筒配置や偏芯軸など）により、自己始動構造を取り得る。
しかし、内燃機関は構造を複数組み合わせたとしても、外部からの初動回転がなければ始動不能であり、「自らの燃焼力だけでは自走できない」という構造的な限界を持つ。この点で、内燃機関は「燃焼によって直接的に回転を生み出す機構」としてではなく、「与えられた回転を燃焼圧で加勢する助力型の機構」として理解する必要があるといえる。
内燃機関 歴史
19世紀より前から様々な内燃機関が発明されてきたが、19世紀に入り都市ガスが普及し始めるとこれを燃料とする内燃レシプロエンジンの開発が活発となった。1860年代には様々な形式のガスエンジンが定置式の産業用原動機として普及し始め、ニコラウス・オットーらの4ストローク機関により完成の域に達した。同じ頃石油の採掘と精製が産業として確立し、ガスエンジンをガソリンで運転する試みが始められたが、ガソリンを継続的に気化する仕組みの開発がネックとなり、ガソリンエンジンの実用化はガスエンジンに多少遅れている。さらに少し遅れて、これら予混合燃焼の機関とは別のアプローチからディーゼルエンジンが発明された。
貯蔵と運搬が容易な液体燃料を使用する内燃機関の登場は、自動車の商業実用化や飛行機の発明を可能にし、特に輸送の分野に大きな発展をもたらした。
内燃機関 歴史
1926年: Alan Arnold Griffith は重要な論文 Aerodynamic Theory of Turbine Design を発表。これによってそれまで実現が疑問視されていたジェットエンジンが注目されるようになった。その中で、これまでの圧縮機は飛行には不向きで、ブレードを翼型に設計変更すべきだとし、実用的エンジンが製造可能であることを数学的に示すと共にターボプロップエンジンの構築法を解説した。同年、ロバート・ゴダードが世界初の液体燃料ロケットを打ち上げた。
レシプロエンジン
レシプロエンジン（英語: reciprocating engine）は、往復動機関あるいはピストンエンジン・ピストン機関とも呼ばれる熱機関の一形式である。燃焼熱を取り出す方法によって、外燃式と内燃式に大別される。
燃料の燃焼による熱エネルギーを作動流体の圧力（膨張力）として利用し、まず往復直線運動に変換し、ついでクランクを用いて回転運動の力学的エネルギーとして取り出す原動機である。初期の蒸気機関においてポンプに使われたそれのように、往復運動を直接利用する場合もある。燃焼エネルギーをそのまま回転運動として取り出すタービンエンジンやヴァンケル型ロータリーエンジンと対置される概念でもある。
船舶、自動車、非電化区間向けの鉄道車両、航空機といった乗り物の他、発電機やポンプなどの定置動力にも用いられ、一般的な動力源として広く普及した。20世紀中盤以降、航空機では大排気量・高出力のものからガスタービンエンジンに置き換わり、21世紀に入ると、分野によっては、電動機に置き換わりつつある。
レシプロエンジン 歴史
往復動型機関の最初の記録は、オランダのクリスティアーン・ホイヘンスが1680年に火薬を使って動力を発生させる考えを発表したものと伝えられている。ベルサイユ宮殿の水役人だったホイヘンスはピストンと真空を熱機関として利用しようとする祖と認められている。ホイヘンスの案はシリンダー（筒）の最下部に燃焼部、最上部にピストンがおかれていた。燃焼部で火薬を燃焼させ、この燃焼により発生した高温の空気が上部の弁から抜けていくだけのものだった。弁は一方通行の不還弁であり、空気が抜けたのちシリンダーが冷えれば内部の圧力が低くなり、当時発見されたばかりの真空の力により最上部のピストンが下降する際に力を及ぼすというものである。当時は火薬の爆発は危険なものとされており、ホイヘンスの考えも真空利用の静粛性が特徴である。当時は内燃と外燃の区別はされず「熱から動力が生み出される」という考えであった。
その後、フランスのアッベ・フォートフュイユやイギリスのモアランドらの創案があるが、これらも試作はされていない。
レシプロエンジン 歴史
ピストンエンジンはピストン型蒸気機関の祖といわれるドニ・パパンの蒸気機関で実現した。ドニ・パパンはホイヘンスとも親交があり、ホイヘンスの案を試作し、検証したものの、当時の技術では火薬の燃焼、ピストンや不還弁の製作は難しかった。そのためパパンは直接火薬を燃やすことではなく、外部で発生させた蒸気によって圧力を高める蒸気機関とした。火薬の燃焼の代わりに蒸気を使う点を除けば、ホイヘンスのものと変わらない。
その後、セイヴァリが英国で特許を取得し、1705年になってトーマス・ニューコメンの改良により実用的な蒸気機関となった。ニューコメン蒸気機関は、英国では炭鉱から水を抜き取るための排水ポンプ用途に使用された。
ニューコメンが最初に機関を発明した時代は、その動作は非常に緩慢なものであり、バルブの開閉は人手で行われていた。このバルブ開閉の進歩が蒸気機関の普及を促した。ニューコメンの「大気圧機関 (Atmospheric engine)」のバルブの改良は、バルブの開閉操作員だったハンフリー・ポッター (Humphrey Potter) という少年により1713年にロープや滑車を利用した最初の自動化の工夫がなされ、1718年にヘンリー・バイトン (Henry Beighton) がさらに改良を重ねた。ジョン・スミートンがさらにさまざまな改良を施した。
レシプロエンジン 歴史
50年以上もの間改良されながら1770年頃まで広く使われていたニューコメン式の蒸気機関であったが、ここまでの蒸気機関は、往復運動をそのまま直線的動力として利用するものであり、しかもその力は往復以前に往だけの片道通行の利用だった。
ジェームズ・ワットは根本的に改良を加えた往復動蒸気機関を考案し、1769年に英国で特許を取得した。これは本格的な回転動力の実用化に至る道でもあった。
ピストンの往復の動きを回転運動として利用した最初のエンジンは、ワットの特許と同年の1769年、フランスで考案された蒸気動力の牽引車、キュニョーの砲車である。これはピストンロッドの先のクランクにラチェットを用いて回転運動に変換するものだった。
次いで英国でワットの元で働いていたウィリアム・マードックが遊星ギアを利用して回転運動を得ることを着想し、蒸気自動車を作成した。この往復運動を回転運動にする特許はマードックではなくワットが取得している。ワットらはクランクシャフトを利用したかったが、同時期に特許がすでに取得されており、その使用にはワットの蒸気機関の特許との交換条件を持ち出されたために使用しなかった。遊星ギアはクランクシャフトに比べて往復運動から回転運動への変換効率が低く、ワットは後年、特許使用可能になったクランクシャフト方式に乗り換えている。
レシプロエンジン 歴史
1801年にトレビシックが蒸気自動車を製作し運転した。トレビシックはさらに1804年に世界最初の蒸気機関車を制作し、試運転を行っている。
1820年、イギリスのW・セシルが水素ガスを燃料とした真空利用の大気圧機関を製作し、60rpm（回転/分）の動きを実現した。爆発時の騒音が問題となったがこれが世界最古のガス機関として認められている。しかし当時は蒸気機関の実用化が盛んな時期であり、ガスエンジンはその後の研究があまり進まなかった。
イギリスでは続いて発明家のサミュエル・ブラウンが、1823年にガス真空機関（真空エンジン、用気エンジン）の開発に成功。内燃機関だったが、爆発の後に生じる真空によりピストンを引き戻すことにより往復運動をおこなうものであり、大気圧利用という点ではトーマス・ニューコメンの蒸気機関そのままの原理であった。1825年には車両に載せられ、この真空機関付き自動車は1826年の試運転で10.5分の1の勾配（約5 °26 ′）をたやすく登った。1827年にはテムズ川で船に真空エンジンを載せて公式試運転を行い、11 - 13 kmを記録している。これらの実績によりブラウンは内燃機関の歴史において功績が認められており、また、ブラウンのエンジンは実用になった最初のガス機関と認められている。もっとも、当時は蒸気機関全盛の時代であり、普及には至っていない。
レシプロエンジン 歴史
1833年には、イギリスのW.L.ライトがガス爆発機関の特許を取得している。実際に製作されたかどうかは確認されていないが、後年、ガス爆発機関としてはこの設計は完璧であり、製作されていればブラウン以上の能力が出せたと評価されている。
ウィリアム・バーネットは1838年に2サイクル圧縮型エンジンと独自の点火プラグを開発した。
イタリアのバルサンチとマテゥチは1855年に世界初のフリー・ピストン・エンジンを創案する。爆発により上方に上がったピストンが重力により落下することを利用したもので、動力はピストンのコネクティングロッドからラチェット付きで一方向回転するギアを使って取り出した。極めて騒々しく、振動も激しかったが、内燃機関の点火自体が不安定だった時代にはこれでも比較的効率が良かった。
フランスでルノアールが1860年にガスエンジンを商用化し、大型化が必然的で大規模工場でなければ使えなかった当時の蒸気機関に比べてコンパクトで軽便であったため、中規模工場などでも一般に使用されるようになった。当時の先進国の都市で普及しつつあったガス燈用の石炭乾留ガス配管を利用して、燃料供給インフラストラクチャーの面も解決したことが優れており、1860年は内燃機関の本格的な実用化の年とされる。
レシプロエンジン 歴史
ルノアール・エンジンは往復動の2ストローク内燃機関であるが、圧縮行程が事故の危険を伴うと危惧したルノアールの意図によって無圧縮の設計であった。このためエンジンとしての効率は低く、実用内燃機関の先駆ではあったが本格的な内燃機関の祖とは言い難い面もある。日本の内燃機関研究者の富塚清は「内燃機関の歴史」で「多少気の毒」と評している。ルノアールは自動車も製作し、走行試験を行い、またセーヌ川でのモーターボート動力にも使用されたが、無圧縮型のガス燃料機関という効率の低さと燃料供給の制約から、工場等の定置動力以外では成功しなかった。
ルノアールのエンジン以前にはさまざまな案が試されていたが、ルノアールの商業的成功により明確な指標ができたため、内燃機関の研究が急速にすすむことになった。
1862年、フランスのボー・ド・ロシャが、内燃機関としての4ストロークエンジンを提唱した。1867年、ドイツでニコラス・オットーとオイゲン・ランゲンがフリー・ピストン機関（de:Flugkolbenmotor）を製作する。1873年、アメリカでブレートンが新型を開発。ブレートン機関とよばれる。
1876年、オットーは後年のレシプロ式ガソリンエンジンの直接の祖型となる4ストローク式ガスエンジンを完成させた。
レシプロエンジン 歴史
20世紀になって実用化がなされた航空機の発達はレシプロエンジンと共にあり、1950年代の後半までは飛行機のエンジンといえば、レシプロエンジンといわれていた。航空機の性能（最大速度や上昇力）はエンジンによってほぼ決定されるため、各国はより高性能の航空機を作りあげるために高性能なエンジンを必要とした。そのためにエンジンの性能をあげるためのさまざまな研究は第一次世界大戦から第二次世界大戦においてその多くがなされている。戦後になると大出力の航空機用エンジンは、高出力プロペラ機用ターボプロップエンジンを含むジェットエンジンに切り替わり、現代では「レシプロ」は小型プロペラ機の代名詞ともなっている。
レシプロエンジン 歴史
船舶においては、20世紀初頭までは蒸気機関のレシプロエンジンが主流であったが、外燃機関の蒸気タービンエンジンや内燃機関のレシプロエンジンの実用化とともに、徐々にそれらに置き換えられていった。現在では民間用途としてはディーゼルの内燃レシプロエンジンが主流となっている。軍艦ではガスタービンエンジンと蒸気タービンエンジン（原子力動力の場合）の採用率が高いが、内燃レシプロエンジン（ガスタービンとの併用を含む）も一定数採用されている。また大型スターリングエンジンが非大気依存推進機関として少数の通常動力型潜水艦に搭載されている。一部の魚雷は、内燃式・外燃式（オットー燃料IIなどを使用）斜板機関をエンジンとしている。
鉄道車輛においては、20世紀の前半期を通じて蒸気機関のレシプロエンジンを搭載する蒸気機関車が主流であったが、電化区間では電気機関車や電車に、非電化区間および両区間の直通用では内燃レシプロエンジンを搭載するディーゼル機関車や気動車に、それぞれ置き換えられた。ガスタービンエンジンはターボ・エレクトリック方式では実用例があるが、その最盛期はオイルショック以前で、また、日本の国鉄のようにガスタービンを直接動力源とする車両は実用化されておらず、電気式、液体式、機械式のいずれでもディーゼルエンジンが大勢を占めている。熱効率の低い蒸気機関車も、僅かながら保存鉄道（産業遺産）としての運行は続いている。
自動車においては、最初期に電気自動車や蒸気自動車が検討・試作されたものの、その歴史を通じて内燃レシプロエンジンが主流である。一時期ロータリーエンジンの採用が各社で検討されたが、結局は主流とならなかった。またガスタービンエンジン駆動の自動車も、一部戦車を除き実用化には至っていない。電気自動車は特殊用途に限られていたが、近年は再び一般向として市販される例が増えている。しかしこれが主流となりレシプロエンジン車を置き換えていくかどうかは未知数である。
発電機やポンプなどの定置動力としては、20世紀初頭は蒸気レシプロエンジンが主流であり、他に選択肢が無い状況であった。その後、それ以外の動力機関が普及していき、蒸気レシプロエンジンは完全に廃れている。発電など大規模用途としては蒸気タービンが主流であるが、それ以外では内燃レシプロエンジンが主流となっている。ただ、20世紀末よりマイクロガスタービンを含むガスタービンエンジンが伸長しており、内燃レシプロエンジンを置き換えつつある。
なお、上述の通り最初期のレシプロ蒸気機関は、直線的動力として利用するもの、かつ往だけの片道通行の利用だった。航空母艦用の蒸気カタパルトは、現代においてはこれに相当するものであるが、将来的にはリニアモーター式の開発も進められている。
またディーゼルハンマー式杭打ち機は、21世紀初頭現在でも生産され続けている現役の、2ストローク単気筒フリーピストンディーゼルエンジン製品である。
レシプロエンジン レシプロエンジンの仕組み
シリンダー内の動作流体（水蒸気や燃焼ガスなど）の加熱方法により外燃機関のレシプロエンジンと、内燃機関のレシプロエンジンの二つに大きく分類される。それぞれの仕組みの概略は以下のようになる。
外燃機関のレシプロエンジンには蒸気機関やスターリングエンジンがある（詳細はそれぞれの項目を参照）。
蒸気機関では高温の蒸気を駆動に使う。初期はトーマス・ニューコメンが作った大気圧の負圧を利用する方法がある。当時から高い蒸気圧を利用することは考えられていたが、まだ工作技術が十分でなかった頃はそれに耐えうるボイラーを作ることができなかったため負圧を利用していた。
ニューコメンの蒸気機関は効率が悪かったため、それをジェームズ・ワットが復水器を組み合わせて使うことで効率を上げ、産業革命の原動力となり、石炭を当時の主要なエネルギー源にした。
ワットが老いた頃は工作技術も上がり、高い圧力に耐えられるボイラーやシリンダーが作られる。するとその効率の良さから、負圧を使った蒸気機関ではなく、そちらを用いて蒸気自動車や蒸気機関車が広まった。
レシプロエンジン レシプロエンジンの仕組み
また、蒸気圧を高めて使う蒸気機関が現れて間もない頃は、シリンダーが蒸気圧に耐えられず爆発する事故が相次いだ。これを見たスコットランドの牧師ロバート・スターリングはより安全な熱機関を作ろうと、外燃レシプロ機関のスターリングエンジンを考案した。高出力には向かないが、理論上は非常に高い熱効率を持つ。ただし一般動力機関としては扱いにくい面もあってほとんど普及しておらず、むしろ空調等を目的に熱を移動させるヒートポンプシステムの分野でその原理が広く応用されている。
動作の仕組みはおよそ以下のようになり、これを繰り返す、すなわちピストンが往復動することで、エンジンは連続的に回転動力を出力する。
外部からは、ガソリンやプロパンガス、軽油、アルコール等の燃料と、それに対し適当な量の空気とをエンジン内部へ供給する。液体の燃料は、気化しやすいように微粒化（霧化）しながら使用される。まず、シリンダー内に吸入した空気を、ピストンにより圧縮する。その圧縮空気中で燃料に何らかの方法で着火し、シリンダー内で急速に（時には爆発的に）燃焼させる。充分な強度を持つシリンダー内で、高温高圧の燃焼ガスが膨張してピストンを押し出す力となる。この力を受けたピストンの直線的な運動を、コネクティングロッド（コンロッド）とクランクシャフトとにより回転運動に変える。燃焼ガスは充分に膨張したのち、外部に排気される。
レシプロエンジン レシプロエンジンの仕組み
内燃機関のレシプロエンジンは様々に分類されるが、主な分類法を列記すると以下のようなものがある。
他にガスタービンエンジンのターボ圧縮機とタービンを、往復動圧縮機とピストン式圧力モーターに置き換えた、連続燃焼式も理論上ある。
一般に気筒の配置と数とを組み合わせて呼称される。例えば直列配置の4気筒は「直列4気筒」、星型配置の14気筒であれば「星型14気筒」などと呼ばれる。
正規表現
正規表現（せいきひょうげん、英: regular expression）は、文字列の集合を一つの文字列で表現する方法の一つである。正則表現（せいそくひょうげん）とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正則式（せいそくしき）あるいは正規式（せいきしき）と呼ばれることもある。
もともと正規表現は形式言語理論において正規言語を表すための手段として導入された。形式言語理論では、形式言語が「正規言語であること」と「正規表現によって表せること」は同値である。
その後正規表現は単機能の文字列探索ツールやテキストエディタ、ワードプロセッサなどのアプリケーションで、マッチさせるべき対象を表すために使用されるようになり、表せるパターンの種類を増やすために本来の正規表現にはないさまざまな記法が新たに付け加えられた。このような拡張された正規表現には正規言語ではない文字列も表せるものも多く、ゆえに正規表現という名前は実態に即していない面もあるが、伝統的に正規表現と呼ばれ続けている。
正規表現
この記事では主にこのような正規表現を用いたパターンマッチングについて説明している。以下、誤解のない限り、アプリケーションやプログラミングにおいて正規表現を用いた文字列のパターンマッチングを行う機能のことを、単に正規表現という。
ほとんどのプログラミング言語では、ライブラリによって正規表現を使うことができる他、一部の言語では正規表現のリテラルもある。「正規表現によるマッチ」を意味する（専用の）演算子がある言語なども一部ある。具体例として、grep, AWK, sed, Perl, Tcl, lex などがある。
それぞれの言語やアプリケーションで細部の仕様が異なっている、といったように思われることも多いが（古い実装では実際にそのようなことも多い）、近年は同じライブラリを使っていれば同じということも多い。またPOSIXなど標準もある。
正規表現 基本的な概念
理論的に明解であり扱いも容易であるため、形式的な説明を先に述べる。
記号（アルファベット） 上の正規表現は次のようなものから成る。正規表現があらわす記号列（アルファベット列）の集合によって形式言語が定義される。
正規表現の定義に、次の項目を含めることもある:
正規表現  の表す集合は正規表現  の表す集合に等しいので、 を正規表現の定義に含めなくても  で代用できる。
の代わりに  と書くことや、 の代わりに  と書くこともある。また、「」や「」の優先順位を明確にするために、補助的なカッコも（上述の定義には含めていないが）必要である。
以下ではもっぱらよく使われているライブラリやツールなどの実用的な観点から説明する。
例えば、「Handel」「Hendel」「Haendel」という3つの文字列を含む集合は「H(e|ae?)ndel」というパターンで表現できる（あるいは、パターンは個々の3つの文字列にマッチすると言われる）。ほとんどの形式では、もし特定の集合にマッチする何らかの正規表現が存在すれば、無限の数のそのような表現がある。ほとんどの形式では正規表現を構築するために次の演算子を提供している。
正規表現 基本的な概念
選言
縦棒は選択肢を区切る。例えば「gray|grey」は「gray」または「grey」にマッチし、これは通常「gr(a|e)y」に短縮される。
グループ分け
丸括弧はスコープと演算子の優先順位を定義するために用いられる。例えば、「gr(a|e)y」では「(a|e)」の部分で「a」または「e」を示し、全体で「gray」または「grey」にマッチする。
量化
文字やグループの後ろの量化子は、直前の表現が何回現れることが許されるかを指定する。非常によく使われる量化子として「?」「*」「+」がある。
?
疑問符は直前の表現が0個か1個あることを示す。例えば、「colou?r」は「color」と「colour」にマッチする。
*
アスタリスクは直前の表現が0個以上あることを示す。例えば、「go*gle」は「google」「gogle」「ggle」などにマッチする。
+
プラス符号は直前の表現が1個以上あることを示す。例えば、「go+gle」は「google」「gogle」などにマッチするが、「ggle」にはマッチしない。
これらの構文は任意の複雑な表現を形成するために組み合わされて使用される。
正規表現 歴史
正規表現の起源は、言語学と、理論計算機科学の一分野であるオートマトン理論や形式言語理論にみることができる。20世紀の言語学では数理的に言語を扱う数理言語学が発展しその過程の一部として、また後者は計算のモデル化（オートマトン）や形式言語の分類方法などを扱う学術分野である。数学者のスティーヴン・クリーネは1950年代に正規集合と呼ばれる独自の数学的表記法を用い、これらの分野のモデルを記述した。
Unix系のツールに広まったのは、ケン・トンプソンがテキストファイル中のパターンにマッチさせる手段として、この表記法をエディタQEDに導入したことなどに始まる。彼はこの機能をUNIXのエディタedにも追加し、後に一般的な検索ツールであるgrepの正規表現へと受け継がれていった。これ以降、トンプソンの正規表現の適用にならい、多くのUnix系のツールがこの方法を採用した（例えば expr, awk, Emacs, vi, lex, Perl など）。
正規表現 歴史
PerlとTclの正規表現はヘンリー・スペンサー(英)によって書かれたものから派生している（Perlは後にスペンサーの正規表現を拡張し、多くの機能を追加した）。フィリップ・ヘーゼルはPerlの正規表現とほぼ互換のものを実装する試みとしてPerl Compatible Regular Expressions (PCRE) を開発した。これはPHPやApacheなどといった新しいツールで使用されている。
Rakuでは、正規表現の機能を改善してその適用範囲や能力を高め、Parsing Expression Grammarを定義できるようにする努力がなされた。この結果として、Raku文法の定義だけでなくプログラマのツールとしても使用できる、Perl 6 rulesと呼ばれる小言語が生み出された。
（本来の）正規表現からの拡張は各種あり便利であるがその多くは、（本来の）正規言語から逸脱するものであり、キャプチャなどが代表例である。なお、正規言語から逸脱しないことによって理論的な扱いが可能になるという利点があるため、例えば「非包含オペレータ」の提案ではそういった観点からの理由も挙げられている。
Rakuに限らずいくつかの実装では、（Perlではsubpatternと呼んでいる）部分パターンの定義とその再帰的な呼出しにより、例えばカッコの対応などといった（本来の）正規表現では不可能なパターンも表現できる。これは、対象部分にマッチした文字列が捕獲され、後から利用できるキャプチャとは異なり、パターンそのものの定義と利用である。PHP, Perl, Python（regexライブラリ）, Ruby などで利用できる。
正規表現 構文
UNIXの標準であるPOSIXでは、単純正規表現、基本正規表現、拡張正規表現の3種類の記法が示されている。このうち、単純正規表現は「歴史的」また「レガシー」と書かれており、後方互換性を提供するものとされ、標準の将来の版では廃止され得ると注意されている。
単純正規表現はSREとも呼ばれる。その仕様は「regexp.h」のマニュアルページとして示されている。
基本正規表現はBREとも呼ばれる。ほとんどの正規表現を利用する UNIXのユーティリティ（grepやsed）のデフォルトはこれである。
この文法では、ほとんどの文字はリテラル（機能を意味せず書かれたそのまま）に扱われる。つまり、ある文字はその文字にのみマッチする。例えば、正規表現「a」は文字「a」にマッチし、正規表現「(bc」は文字列「(bc」にマッチするなど。例外はメタ文字と呼ばれる。
古いバージョンのgrepは選言演算子「\|」をサポートしていない。
例
正規表現「.at」は文字列「hat」「cat」「5at」のような3文字の文字列にマッチする
正規表現「[hc]at」は文字列「hat」と「cat」にマッチする
正規表現 構文
正規表現「[^b]at」は文字列「bat」以外の「.at」でマッチする全ての文字列にマッチする
正規表現「^[hc]at」は行の最初にあるときだけ、文字列「hat」と「cat」にマッチする
正規表現「[hc]at$」は行の最後にあるときだけ、文字列「hat」と「cat」にマッチする
符号点の範囲によってたとえば「アルファベット大文字」などを表現しようとすることは、時に問題をひきおこす。たとえばロケールに依存する例として、エストニア語のアルファベット順では、文字「s」の後に「z」があり、その後は「t」「u」「v」「w」「x」「y」と続くので、正規表現「[a-z]」ではすべての言語のすべてのアルファベット小文字にマッチするわけではない。そのため、POSIX 標準では次の表に示されているクラス、つまり文字の区分を定義している。
例:正規表現「[[:upper:]ab]」は英語の大文字「A」〜「Z」と「a」と「b」のうち1文字のみにマッチする。
いくつかのツールで使用できる、POSIX にないクラスとして「[:word:]」がある。「[:word:]」は通常「[:alnum:]」とアンダースコアからなる。これらが多くのプログラミング言語で識別子として使用できる文字であることを反映している。
正規表現 構文
拡張正規表現はEREとも呼ばれる。より現代的な拡張正規表現は多くの場合、現在の UNIXのユーティリティでコマンドラインオプションに「-E」を含めることで使用できる。
POSIXの拡張正規表現は伝統的な UNIX の正規表現に似ているが、いくつかの点で異なっている。
例えば、拡張正規表現「a\.(\(|\))」は文字列「a.)」や文字列「a.(」にマッチする。
GNU findコマンドにおけるデフォルトの正規表現文法としても用いられる。（findutils-4.2.28）
GNU Emacs Manual - Regexps
PerlはPOSIXの拡張正規表現さえも上回る豊富な文法を持っている。その例として、POSIXとは異なり、Perlの正規表現には「非欲張り量指定子」がある。標準の「*」は、例えば、正規表現「a.*b」の「.*」はできるだけ長い文字列にマッチしようとする。このふるまいを「貪欲」という。たとえば文字列「a bad dab」にマッチさせると、全体にマッチする。これに対し、Perlでは使うことができる正規表現「a.*?b」の「.*?」は、マッチするのであれば、できるだけ短い文字列にマッチする。たとえば文字列「a bad dab」に対して「a b」にだけマッチする。これを「非欲張り量指定子」と言う。
正規表現 構文
また、Perlには以下の定義済み文字クラスがある。
すぐれた機能をもつPerlの拡張正規表現は、多くのプログラミング言語やソフトウェアで採りいれられている。例えば、JavaのPatternクラス、Python、Rubyなどがそうである。しかし、これらがPerlの正規表現と完全に互換である訳ではない。また、Perl Compatible Regular Expressions (PCRE) と呼ばれる汎用の正規表現ライブラリはアプリケーションに組み込まれ、Perlの正規表現とほぼ互換の機能を提供する。
正規表現 正規表現ライブラリ
言語処理系やアプリケーションが正規表現をサポートしていない場合であっても、正規表現に必要な処理を提供する外部ライブラリを導入することで正規表現を使うことができる。以下にその一例を挙げておく。
PCRE
Perl互換のライブラリ。Eximのために開発され、ApacheやPostfixをはじめ、さまざまなソフトウェアに組み込まれている。
鬼車
正規表現オブジェクトごとに異なる文字エンコーディングを指定できる特徴をもつ。Rubyの1.9系列やPHPの5系列に採用されている。macOS用に検索ウィンドウを追加して移植したOgreKit（Oniguruma Regular Expression Framework for Cocoa）が存在する。
鬼雲
鬼車から派生した正規表現ライブラリで、Perl 5.10以降で導入された機能をサポートする。Ruby 2.0以降の標準ライブラリとして利用されている。
正規表現 正規表現ライブラリ
re2
PCREなどのバックトラック式ではなくオートマトンを用いることで、省メモリでマッチングを行うことができる。Googleが内部で利用している。
GNU Regex
GNU Cライブラリに含まれているため、Unix系では標準で利用できる。
Boost.Regex
Boost C++ライブラリによる実装。デフォルトでPerl互換の文法が使われるが、POSIXやECMAScriptなどの文法プロファイルを任意に選択することもできる。C++11規格にてBoost.Regexのサブセットが標準化された。
マハーラーシュトラ州
座標: 北緯18度58分 東経72度49分﻿ / ﻿北緯18.97度 東経72.82度﻿ / 18.97; 72.82
マハーラーシュトラ州（マハーラーシュトラしゅう、マラーティー語: महाराष्ट्र、英語: Maharashtra）は、西インドに位置するインドの州の一つ。人口は約1億1,237万人（2011年現在）。州の公用語はマラーティー語。州都および最大の都市はムンバイ（Mumbai、ボンベイ）。ただし、冬季の州都はナーグプル。
ムンバイはインドの経済と芸能の中心で、政治の中心であるデリーと国としての機能をわけている。
マハーラーシュトラ州 概要
マハーラーシュトラ州は6つの郡と36の県に分かれており、州都はインドで最も人口の多い都市部であるムンバイ、そして冬の首都として機能するナーグプルである。ゴーダーヴァリ川とクリシュナ川は州内の2つの主要な川であり、森林は州の地理的面積の16.47 パーセントを占めている。このマハーラーシュトラ州には、アジャンタ石窟群、エローラ石窟群、エレファンタ石窟群、チャトラパティ シヴァージー ターミナル（旧ビクトリア ターミナル）、ムンバイのビクトリア朝のゴシック様式とアールデコ様式のアンサンブル、西ガーツ山脈の6つのインドの世界遺産がある。個別の物件のうち4件はマハーラーシュトラ州にある。マハーラーシュトラ州はインド経済に最大の貢献をしており、インド全土の名目GDPの14%を占めている。マハーラーシュトラ州の経済はインド最大で、州国内総生産（GSDP）は35兆2,700億ルピー（4,400億米ドル）、一人当たりのGSDPは24万2,247ルピー（ 3,000米ドル）である。サービス部門は州経済を支配しており、国の生産額の69.3パーセントを占めている。農業は州のGDPの12%を占めているが、州の人口のほぼ半分が農業に雇用されている。
マハーラーシュトラ州 概要
マハーラーシュトラ州はインドで最も工業化が進んだ州の1つである。州都ムンバイはインドの金融と商業の中心地。インド最大の証券取引所であるアジア最古のムンバイ証券取引所がムンバイ市内にあり、インド第二の証券取引所で世界最大のデリバティブ取引所の一つであるナショナル証券取引所も同様である。マハーラーシュトラ州は国の社会的および政治的生活において重要な役割を果たしており、農業および工業生産、貿易および輸送、教育の面でリーダーであると広く知られている。マハーラーシュトラ州は、人間開発指数においてインドの州の中で9番目に高い順位にある。