「GeckoFX」の版間の差分
imported>Administrator |
|||
(5人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
− | '''GeckoFX''' | + | '''GeckoFX'''(読み:げっこーえふえっくす)とは、[[.NET Framework]]および[[Mono]]から[[Geckoエンジン]]を扱うための[[ラッパークラス]]である。 |
− | [[.NET Framework]] | + | 大雑把にいうと[[C Sharp|C#]]で[[Firefox]]を操るための[[ライブラリ]]と思ってほぼ間違いない。[[Linux]]([[Linux Mint]] 12)上の[[Mono]]と[[Firefox]]の組み合わせでも問題なく動作している。 |
+ | |||
+ | == 概要 == | ||
+ | [[.NET Framework]]には最初期からウェブブラウザを手軽に自作できる純正の[[WebBrowserクラス]]が用意されている。これは[[C Sharp|C#]]以前の[[Delphi]]と[[VCL]]の時代から存在している。ただ互換性を維持するためか、一切改善されることなく常に腐っており、実用には程遠い代物でもある。 | ||
+ | |||
+ | その代用としてGeckoFXは有望である。またGeckoFXは一般的な[[ウェブブラウザ]]のみならず、[[JavaScript]]や[[CSS]]、[[Cookie]]の制御できるため[[HTML5]]に依存した[[ウェブサイト]]などを対して高精度に[[ウェブスクレイピング]]するなどの用途にも用いることができる。 | ||
+ | |||
+ | ただしGeckoFXにも欠点があり、別途[[Firefox]](に同梱される[[XPCOM]])の[[インストール]]が必須であるため、場合によっては配布方法などにおいて面倒なことになる。なおXPCOMは単体でも配布されており、こちらを[[アプリ]]に同梱してしまう方法もある<ref>http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/</ref>。 | ||
== 注意 == | == 注意 == | ||
− | 2012年4月10日現在、[[Google]]のウェブ検索において「geckofx」と検索すると、GeckoFX 1. | + | 2012年4月10日現在、[[Google]]のウェブ検索において「geckofx」と検索すると、GeckoFX 1.xまで使われていた古いサイト<ref>http://code.google.com/p/geckofx/</ref>([[Googleコード]])が上位表示され、現在の公式サイト<ref>https://bitbucket.org/geckofx/</ref>([[bitbucket]])が上位表示されておらず、「古い情報しかない」「更新が止まってる」と誤認識してしまう恐れがあるので、他人に教えるときは注意すること。 |
== 利用方法 == | == 利用方法 == | ||
− | GeckoFXの利用には、別途[[Geckoエンジン]]を[[コンポーネント]]化した[[XPCOM]]([[Cross Platform Component Object Model]] | + | GeckoFXの利用には、別途[[Geckoエンジン]]を[[コンポーネント]]化した[[XPCOM]]([[Cross Platform Component Object Model]])が必要であり、利用時にはXPCOMのインストールパスを設定する。 |
− | == バージョン番号 == | + | XPCOMはMozilla公式サイトから単体で[[ダウンロード]]<ref>http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/</ref>してきてもいいし、Mozilla Firefoxにも同梱されているのでFirefoxのインストールディレクトリを指定しても動く。同梱する場合は単品の方が確実であると思われる。 |
− | GeckoFX2.0までは独自のバージョン番号であったが、以降は最近は[[Firefox]]のメジャーバージョン番号と同一になっているので、[[XPCOM]] | + | |
+ | === バージョン番号 === | ||
+ | GeckoFX2.0までは独自のバージョン番号であったが、以降は最近は[[Firefox]]のメジャーバージョン番号と同一になっているので、[[XPCOM]]として用いる「Firefoxが10.x」ならば「GeckoFX10.x」を用いること。マイナーバージョンは気にしなくてよい。 | ||
また近年のFirefoxの[[ラピッドリリースサイクル]]の導入に伴い、GeckoFXも平行して物凄い勢いで[[フォーク]](バージョンアップ)しまくっている。FirefoxおよびGeckoFXの両方のインターフェイスなどもガンガン書き換えられているので、常に最新バージョンを用いればいいというものでもなく、基本的に開発開始時に用いたFirefoxとGeckoFXを拾ってくれば間違いない。 | また近年のFirefoxの[[ラピッドリリースサイクル]]の導入に伴い、GeckoFXも平行して物凄い勢いで[[フォーク]](バージョンアップ)しまくっている。FirefoxおよびGeckoFXの両方のインターフェイスなどもガンガン書き換えられているので、常に最新バージョンを用いればいいというものでもなく、基本的に開発開始時に用いたFirefoxとGeckoFXを拾ってくれば間違いない。 | ||
2012年6月26日現在まで使ってみた感じでは、Firefoxの自動アップデート後にGeckoFXを使ったアプリが壊滅したという事例があり、Firefox 10をベースとしたFirefox ESR版<ref>http://mozilla.jp/business/downloads/</ref>を使う、またはFirefoxの自動アップデートを無効化して使うのが望ましいように思われる。 | 2012年6月26日現在まで使ってみた感じでは、Firefoxの自動アップデート後にGeckoFXを使ったアプリが壊滅したという事例があり、Firefox 10をベースとしたFirefox ESR版<ref>http://mozilla.jp/business/downloads/</ref>を使う、またはFirefoxの自動アップデートを無効化して使うのが望ましいように思われる。 | ||
+ | |||
+ | === x64での動作について === | ||
+ | [[Mozilla]]が配布している[[Gecko]]は[[x86]]専用でありGeckoFXも[[x86]]専用となっている。 | ||
+ | |||
+ | [[Windows Server 2008 R2]]([[x64]])上で動いている[[ASP.NET Web API]]を使ったオレオレWeb API群に、URLを渡すとGeckoFXを用いて[[Webページ]]の[[スクリーンショット]]を撮るという[[プログラム]]を追加した際にこの点が問題となったので記載しておく。あまりに大雑把で強引な解決方法であり一般人にはオススメはしない。 | ||
+ | |||
+ | # GeckoFXの[[ソースコード]]を[[ダウンロード]]してくる | ||
+ | # GeckoFXをターゲット「Any CPU」または「x64」に変更しビルドする | ||
+ | #* 面倒なので[[秀丸]]で[[slnファイル]]や[[csprojファイル]]を開いて「x86」という文字列を「AnyCPU」に一括置換である。これでも一応動いたがオススメはしない。ちゃんと1個1個設定しよう。 | ||
+ | #* この状態でx86版のFirefoxを指定して動かすとDllImportで落ちる。 | ||
+ | # [[Waterfox]](Firefoxの非公式x64バージョン)を[[ダウンロード]]し<ref>http://www.waterfoxproject.org/</ref>、[[インストール]]する | ||
+ | # Xpcom.Initializeメソッドの引数にWaterfoxのインストールディレクトリを指定する | ||
+ | #* 毎回フルパス指定は面倒なので以下のようにして「ProgramFile/Waterfox」を探させるようにした。これまたオススメしない。 | ||
+ | #** Geckofx-Coreプロジェクトの | ||
+ | #** XULRunnerLocatorクラスの | ||
+ | #** GetXULRunnerLocationWindowsメソッドの | ||
+ | #** folderSearch変数(string配列)に「Waterfox」という文字列を追加する | ||
== 使用例 == | == 使用例 == | ||
34行目: | 60行目: | ||
* http://mozilla.jp/business/downloads/ - Firefox ESR版 | * http://mozilla.jp/business/downloads/ - Firefox ESR版 | ||
; GeckoFX | ; GeckoFX | ||
− | * https://bitbucket.org/geckofx | + | * https://bitbucket.org/geckofx/ |
− | |||
− | |||
− | |||
− | |||
{{stub}} | {{stub}} |
2016年1月12日 (火) 00:45時点における最新版
GeckoFX(読み:げっこーえふえっくす)とは、.NET FrameworkおよびMonoからGeckoエンジンを扱うためのラッパークラスである。
大雑把にいうとC#でFirefoxを操るためのライブラリと思ってほぼ間違いない。Linux(Linux Mint 12)上のMonoとFirefoxの組み合わせでも問題なく動作している。
概要[編集 | ソースを編集]
.NET Frameworkには最初期からウェブブラウザを手軽に自作できる純正のWebBrowserクラスが用意されている。これはC#以前のDelphiとVCLの時代から存在している。ただ互換性を維持するためか、一切改善されることなく常に腐っており、実用には程遠い代物でもある。
その代用としてGeckoFXは有望である。またGeckoFXは一般的なウェブブラウザのみならず、JavaScriptやCSS、Cookieの制御できるためHTML5に依存したウェブサイトなどを対して高精度にウェブスクレイピングするなどの用途にも用いることができる。
ただしGeckoFXにも欠点があり、別途Firefox(に同梱されるXPCOM)のインストールが必須であるため、場合によっては配布方法などにおいて面倒なことになる。なおXPCOMは単体でも配布されており、こちらをアプリに同梱してしまう方法もある[1]。
注意[編集 | ソースを編集]
2012年4月10日現在、Googleのウェブ検索において「geckofx」と検索すると、GeckoFX 1.xまで使われていた古いサイト[2](Googleコード)が上位表示され、現在の公式サイト[3](bitbucket)が上位表示されておらず、「古い情報しかない」「更新が止まってる」と誤認識してしまう恐れがあるので、他人に教えるときは注意すること。
利用方法[編集 | ソースを編集]
GeckoFXの利用には、別途Geckoエンジンをコンポーネント化したXPCOM(Cross Platform Component Object Model)が必要であり、利用時にはXPCOMのインストールパスを設定する。
XPCOMはMozilla公式サイトから単体でダウンロード[4]してきてもいいし、Mozilla Firefoxにも同梱されているのでFirefoxのインストールディレクトリを指定しても動く。同梱する場合は単品の方が確実であると思われる。
バージョン番号[編集 | ソースを編集]
GeckoFX2.0までは独自のバージョン番号であったが、以降は最近はFirefoxのメジャーバージョン番号と同一になっているので、XPCOMとして用いる「Firefoxが10.x」ならば「GeckoFX10.x」を用いること。マイナーバージョンは気にしなくてよい。
また近年のFirefoxのラピッドリリースサイクルの導入に伴い、GeckoFXも平行して物凄い勢いでフォーク(バージョンアップ)しまくっている。FirefoxおよびGeckoFXの両方のインターフェイスなどもガンガン書き換えられているので、常に最新バージョンを用いればいいというものでもなく、基本的に開発開始時に用いたFirefoxとGeckoFXを拾ってくれば間違いない。
2012年6月26日現在まで使ってみた感じでは、Firefoxの自動アップデート後にGeckoFXを使ったアプリが壊滅したという事例があり、Firefox 10をベースとしたFirefox ESR版[5]を使う、またはFirefoxの自動アップデートを無効化して使うのが望ましいように思われる。
x64での動作について[編集 | ソースを編集]
Mozillaが配布しているGeckoはx86専用でありGeckoFXもx86専用となっている。
Windows Server 2008 R2(x64)上で動いているASP.NET Web APIを使ったオレオレWeb API群に、URLを渡すとGeckoFXを用いてWebページのスクリーンショットを撮るというプログラムを追加した際にこの点が問題となったので記載しておく。あまりに大雑把で強引な解決方法であり一般人にはオススメはしない。
- GeckoFXのソースコードをダウンロードしてくる
- GeckoFXをターゲット「Any CPU」または「x64」に変更しビルドする
- 面倒なので秀丸でslnファイルやcsprojファイルを開いて「x86」という文字列を「AnyCPU」に一括置換である。これでも一応動いたがオススメはしない。ちゃんと1個1個設定しよう。
- この状態でx86版のFirefoxを指定して動かすとDllImportで落ちる。
- Waterfox(Firefoxの非公式x64バージョン)をダウンロードし[6]、インストールする
- Xpcom.Initializeメソッドの引数にWaterfoxのインストールディレクトリを指定する
- 毎回フルパス指定は面倒なので以下のようにして「ProgramFile/Waterfox」を探させるようにした。これまたオススメしない。
- Geckofx-Coreプロジェクトの
- XULRunnerLocatorクラスの
- GetXULRunnerLocationWindowsメソッドの
- folderSearch変数(string配列)に「Waterfox」という文字列を追加する
- 毎回フルパス指定は面倒なので以下のようにして「ProgramFile/Waterfox」を探させるようにした。これまたオススメしない。
使用例[編集 | ソースを編集]
関連項目[編集 | ソースを編集]
- WebBrowser クラス (System.Windows.Forms)
- gluezilla - Monoプロジェクトにより開発が行われているGeckoベースのブラウザーコンポーネント。
- WebKit# - Monoプロジェクトにより開発が行われているWebKitベースのブラウザーコンポーネント。
- WPF Chromium WebBrowser control - WebKitをDirectX特化型に魔改造したAwesomiumのC#向けラッパークラス。
- C#
- .NET Framework
参考文献[編集 | ソースを編集]
外部リンク[編集 | ソースを編集]
- Firefox
- http://mozilla.jp/firefox/ - Firefox 通常版
- http://mozilla.jp/business/downloads/ - Firefox ESR版
- GeckoFX