JavaScriptでXPCOMを作る2005年06月13日 22時33分

FirefoxUIXULとJavaScriptで構成されていますが、JavaScriptの組み込みオブジェクトだけではファイル操作やウィンドウ操作などができません。そこで登場するのがXPCOM、これを用いることでOSに絡んだ操作やRDFの操作などが行えるようになります。

Firefoxに付随するXPCOMコンポーネントの多くはC++でかかれ、プラットフォーム別にコンパイル作業などが必要なのですが、XPCOMはJavaScriptを用いて作ることもでき、これならOSにあわせてコンパイルする必要はありません。そこでここでは実際にJavaScriptでXPCOMを作ってみることにします。

今回作成するXPCOMコンポーネント(nntPerson)は人物をあらわすもので、年齢を示すageプロパティと年齢を言うsayメソッドを持つものとします。また、以下ではWindowsで作成することを前提として話を進めていきますので、ほかのOSで作成する場合は適宜読み替えてください。

なお、ここではXPCOMコンポーネントの呼び出し方や拡張の作成については深くは触れません。XULチュートリアル(未完の邦訳)のXPCOMの章やFirefoxまとめサイトの「拡張の作成」を参考にしてください。

下準備

Gecko SDKの入手

Geckoに関する開発を進めるためのツール集がGecko SDKです。Mozilla 1.7開発版のFTPサイトからプラットフォームにあわせたGecko SDKを入手できます。ここではWindows用ということでgecko-sdk-i586-pc-msvc.zipをダウンロード。解凍してできたgecko-sdkディレクトリをCドライブ直下にコピーします。

libIDL-0.6.dll、glib-1.2.dllの入手

Gecko SDKのツールを使うためにいくつかライブラリを追加する必要が出てきます。プラットフォームによって異なるかもしれませんが、Windowsの場合はlibIDL-0.6.3-win32-bin.zipglib-19990228.zipを入手。解凍した中にあるlibIDL-0.6.dll、glib-1.2.dllをパスの通ったディレクトリに置きます。私は簡便のためC:\gecko-sdk\binにおきました。

UUIDの生成

拡張やインターフェースを識別するためにUUIDを生成する必要がでてきます。Web上でUUIDを生成してくれるサービスもありますが、私はMicrosoftの提供するPlatform SDKguidgen.exeを使用しました。

作業用ディレクトリの作成

ここではC:\JSPersonを作業用ディレクトリとします。

インターフェース記述ファイルの作成

作成するコンポーネントのインターフェース、すなわちどんなプロパティやメソッドを持つのかはあらかじめFirefoxに教えておかないといけません。そこで登場するのがIDLです。IDLを使用することでコンポーネントのプロパティやメソッド、継承関係などを記述することができます。

作業用ディレクトリにcomponentsディレクトリを作成し、その中に以下の内容でnntIPerson.idlを作ります。

#include "nsISupports.idl"

[scriptable, uuid(5E458528-CE7C-4610-9872-5177DCB32E7C)]
interface nntIPerson : nsISupports
{
    attribute int age;
    AString say();
};

nntIPersonインターフェースはnsISupportsインターフェースを継承し、ageプロパティとsayメソッドを持ちます。nsISupportsを継承しているのは、どんなインターフェースもnsISupportsを継承することになっているからです。

[]内にはインターフェースを識別するためのUUIDを指定します。また、キーワードscriptableをつけることで、作成するコンポーネントがスクリプトからアクセスできるようになります。

プロパティの宣言はattribute 型 プロパティ名とし、読み取り専用プロパティの場合はreadonlyをattributeの前に指定します。

メソッドの宣言はC/C++/Javaのそれとよく似ています。ただし、通常の引数はin 型 引数名の形で宣言します。

文字列型としては、string (ASCII文字のみ)やwstring (UTF-16文字列)ではなく、ACString (ASCII文字のみ)やAString (UTF-16文字列)を使ったほうが効率がいいらしいです。

タイプライブラリの作成

こうして作成したインターフェース記述ファイルですが、そのままでは使えません。Geckoがインターフェースを理解できるようコンパイルする必要があります。コンパイルに用いるのが準備で触れたGecko SDKに含まれるxpidlというツールです。コマンドプロンプトから以下のようにxpidlを実行し、nntIPerson.xptを生成してください。

> cd C:\JSPerson\components
> "C:\gecko-sdk\bin\xpidl" -m typelib -w -I "C:\gecko-sdk\idl" nntIPerson.idl

インターフェースの実装

インターフェースが決まったので実際にその処理の中身をJavaScriptで書いてみます。

componentsフォルダ内にnntPerson.jsを作成しましょう。

function nntPerson() { /* 初期化処理 */ }

nntPerson.prototype = {
    get age()         { return this._age; },
    set age(newValue) { return this._age = newValue; },

    say: function ()
    {
        return "Hello, I'm " + this._age + " years old.";
    },

    QueryInterface: function (iid)
    {
        if (iid.equals(Components.interfaces.nntIPerson) ||
            iid.equals(Components.interfaces.nsISupports))
            return this;

        Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
        return null;
    },

    _age: 0
}

プロパティのゲッタ、セッタはそれぞれキーワードgetsetを用いて指定します。

QueryInterfaceはnsISupportsインターフェースのメソッドです。コンポーネントが実装しているインターフェースを全て書くことになります。この場合ですとnntIPersonインターフェースはnsISupportsインターフェースを継承しているので nsISupportsも書きます。

var nntPersonModule = {
   _description: "JS Person Component";
   _CID: Components.ID("{5E458528-CE7C-4610-9872-5177DCB32E7C}"),
   _contractID: "@nanto.asablo.jp/jsperson;1",

   ...

   _factory: {
       createInstance: function (outer, iid)
       {
           if (outer != null)
               throw Components.results.NS_ERROR_NO_AGGREGATION;

           return (new nntPerson()).QueryInterface(iid);
       }
   },

   ...
};

function NSGetModule(compMgr, fileSpec) {
   return nntPersonModule;
}

上に書いたのが実装を登録するためのモジュールです。CIDにはIDLで指定したUUIDコンポーネントを識別する新たなUUIDを、Contract IDにはコンポーネントを識別するための文字列を指定します。Contract IDの書式についてはIBMのXPCOM作成に関する文書をごらんください。基本的には@<ドメイン名>/<モジュール名>;<バージョン>という形になります。

テストケースの作成

次にテストケースを作成します。作業フォルダに戻って、contentフォルダを作成、さらにその下にjspersonフォルダを作成します。その中にcontents.rdfjsperson.xulを作成します。

<?xml version="1.0" encoding="utf-8" ?>
<!-- jsperson.xul -->
<?xml-stylesheet type="text/css" href="chrome://global/skin/" ?>
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script type="application/x-javascript">
<![CDATA[

var person = Components.classes["@nanto.asablo.jp/jsperson;1"]
               .createInstance(Components.interfaces.nntIPerson);

function setAge()
{
  person.age = parseInt(document.getElementById("text-age").value);
}

function sayAge()
{
  alert(person.say());
}

]]>
</script>

<vbox>
  <textbox id="text-age" value="5" />
  <hbox>
    <button label="Set age" oncommand="setAge();" />
    <button label="Say age" oncommand="sayAge();" />
  </hbox>
</vbox>

</page>

パッケージの作成

contentフォルダをZIP圧縮し、ファイル名をjsperson.jarに変更します。作業フォルダ内にchromeフォルダを作り、jsperson.jarをその中に移動します。さらに、作業フォルダ内にinstall.rdfを以下の内容で作成します。パッケージのUUIDは新たに取得します。

<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:em="http://www.mozilla.org/2004/em-rdf#">

<rdf:Description rdf:about="urn:mozilla:install-manifest">
  <em:id>{34E20009-C0A0-49ad-82F6-5716E674C61B}</em:id>
  <em:name>JSPerson</em:name>
  <em:version>0.0.1</em:version>
  <em:description>JavaScriptによるXPCOM作成のテスト</em:description>
  <em:creator>TOYAMA Nao</em:creator>
  <em:homepageURL>http://nanto.asablo.jp/blog/</em:homepageURL>
  <em:targetApplication>
    <rdf:Description>
      <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
      <em:minVersion>1.0</em:minVersion>
      <em:maxVersion>1.0+</em:maxVersion>
    </rdf:Description>
  </em:targetApplication>
  <em:file>
    <rdf:Description rdf:about="urn:mozilla:extension:file:jsperson.jar">
      <em:package>content/jsperson/</em:package>
    </rdf:Description>
  </em:file>
</rdf:Description>

</rdf:RDF>

最後にchromeフォルダ、componentsフォルダ、install.rdfをZIP圧縮し、ファイル名をjsperson-0.0.1.xpiと変更すればインストールパッケージの完成です。

実行

あとは普通の拡張と同じようにインストールして、アドレスバーにchrome://jsperson/content/と入力してください。年齢を セットするさまが見られます。なお、Firefox 1.0.4およびDeer Park Alpha 1 RCにて動作を確認しました。

参考文献

この記事の作成にあたって以下のサイトを参考にさせていただきました。

seamonkey/xpcom/sample/ - seamonkey Cross Reference
XPCOMのサンプルが見られます。
IDL interface rules:
IDLの書き方について。
Mozilla String(文字列)ガイド
XPCOMで使う文字列型についてのガイドです。英語版のほうが内容が新しいのですが私は日本語版のほうを参考にしました。
xpidl - XPCOM インタフェース情報を生成するためのツール
XPIDLの使い方について。
dW : Components : XPCOM: 第2回: XPCOMコンポーネントの基本
Contract IDの書式について参考にしました。
拡張の作成 - Firefox まとめサイト
拡張のパッケージングについて参考にしました。
Element Reference - XULPlanet
テストケースの作成にあたって参考にしました。

コメント

_ Gomita ― 2007年01月01日 04時25分

libIDL-0.6.dllとglib-1.2.dllの入手先についてですが、本文中のリンクはともにリンク切れとなっていました。代わりに、以下のページから入手することができました。
http://ftp.mozilla.org/pub/mozilla.org/mozilla/source/wintools.zip

また、本文中のidlで「attribute int age;」となっているのが原因でxpt作成できませんでしたが、「attribute long age;」とすることで無事成功しました。

ありがとうございました。

_ nanto_vi ― 2007年01月01日 23時38分

ご指摘ありがとうございます。この内容もだいぶ古くなっていますからね。試していませんがWindowsではそもそもlibIDLとglibを別途用意する必要がなくなっているかもしれません。
Bug 242870 – Statically link libIDL, glib with xpidl on Windows
https://bugzilla.mozilla.org/show_bug.cgi?id=242870

それから、QueryInterfaceの実装で
Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
return null;
となっている部分は
throw Components.results.NS_ERROR_NO_INTERFACE;
としたほうがいいですね。

_ Mary ― 2014年10月20日 11時58分

A packet of envelopes http://www.u-neacfasteners.com/vendors/ Cheap Ampicillin That was below a 6.3 percent rise in its third quarter dueto a strong comparative period but ahead of analyst forecasts.The firm said it was now on track to achieve "a slightly betteroutcome" before any exceptional items for the full year.

_ Alyssa ― 2014年10月20日 12時40分

A few months http://www.builddiscipline.com/why-regular-exercise-promotes-your-well-being/ arcoxia cost But Generation Y managers supervise many different types of staff, not all of whom understand the way their young bosses think and work. Here are some pointers for how those workers may handle having a Gen Y boss.

_ Dominic ― 2014年10月20日 12時48分

I can't hear you very well http://ziplinegear.biz/economics-paper/ master thesis ghost writer Whilst many investors were focused on Alcoa, long perceivedas a bellwether for the U.S. economy, some traders were puttingmore onus on earnings from banks given what they will implyabout the health of global financial markets.

_ Lily ― 2014年10月20日 12時48分

Have you got a current driving licence? http://ziplinegear.biz/economics-paper/ cheapest custom writing SIR &ndash; I&rsquo;m someone of modest means who has only worked in the private sector. In spite of the best efforts of successive governments I have built an equally modest £200,000 self-invested pension fund over the last 40 years. I don&rsquo;t agree with Royal Mail privatisation but I do need to look after myself at a time when all other investments are flat-lining.

_ Bella ― 2014年10月20日 12時48分

this is be cool 8) http://www.sharonlevy.com/artpages/assignment-help-melbourne.html reserch paper J.C. Penney has been struggling to revive sales after a failed experiment in 2012 to go upmarket alienated long-time shoppers and depleted its cash reserves. J.C. Penney incurred huge losses and spent large amounts of money on store remodels.

_ Aiden ― 2014年10月20日 13時21分

I'm a trainee http://www.apr.es/aviso-legal Buy Aerovent The charges to which Ibori pleaded guilty amount to the theft of about $80 million, but British prosecutors say that was only part of his total booty, which was kept hidden via a complex web of shell companies, offshore accounts and front men.

_ Angelina ― 2014年10月20日 14時05分

We were at school together http://www.cornwallfoodanddrink.co.uk/why-dont-i-do-my-homework/ how to do homework fast Explaining that he wanted to give voice to the doctor&rsquo;s perspective on the social-emotional toll health care reform is taking on the nation&rsquo;s physicians, Coy wrote his first novel, &ldquo;Morton&rsquo;s Fork,&rdquo; which was published last year.

_ Michael ― 2014年10月20日 14時05分

Sorry, you must have the wrong number http://www.warwickhughes.com/blog/?p=writing-process-essay visual analysis essay papers for sale The Hyperloop, which Musk previously described as a crossbetween a Concorde, rail gun and air-hockey table, would cost anestimated $6 billion to build and construction would take 7 to10 years. Eventually, according to the plan, it would jettisonmore than 7 million people a year along one of the U.S. WestCoast's busiest traffic corridors.

_ Diego ― 2014年10月20日 14時05分

Where did you go to university? http://www.sharonlevy.com/artpages/personal-statement-revision-price.html custom written term papers But some important products such as semiconductor manufacturing equipment and certain types of memory chips were left off the list, as well many types of audio-visual equipment such as speakers, DVD players and video cameras.

_ Jasmine ― 2014年10月20日 14時05分

How would you like the money? http://www.warwickhughes.com/blog/?p=writing-process-essay 10 best resume writing services "The introduction of locally set licensing fees affects a wide range of businesses and community groups and we need to get it right. The government remains committed to introducing locally set licensing fees and will progress this as fast as possible."

_ Samuel ― 2014年10月20日 14時05分

This is the job description http://www.cornwallfoodanddrink.co.uk/write-a-essay/ research paper introduction Spot gold rose as high as $1,416 an ounce and was up 1.4 percent at the close of trading on September 3 following comments from Republican House Speaker John Boehner supporting U.S. President Barack Obama's call for limited strikes on Syria.

_ dogkill ― 2014年10月20日 15時23分

How many would you like? http://www.cornwallfoodanddrink.co.uk/where-to-buy-essays-online/ make money writing articles Didn&#8217;t the UK say they wouldn&#8217;t invade or attack? So, if Syria doesn&#8217;t give up it&#8217;s weapons England won&#8217;t do anything? What kind of stupid threat is that? Who appointed the UK and the US to decide what a sovereign nation can and cannot do within its own borders, anyway?

_ heyjew ― 2014年10月20日 15時23分

We went to university together http://www.videogameconsolelibrary.com/blog/?p=research-paper-process-order buy custom research papers "The U.S. administration questions further bilateral contact at the highest level (due to the situation with Snowden)," Ryabkov was quoted as saying by Interfax. "It seems to me that this is an utter distortion of reality. This is viewing the world through a distorted lens."

_ Bryan ― 2014年10月20日 15時23分

A Second Class stamp http://www.cornwallfoodanddrink.co.uk/where-to-buy-essays-online/ good words for essay writing DAEGU, South Korea, Oct 13 (Reuters) - OPEC's crude oilproduction is at a suitable level for the market and there is notalk of the cartel changing output when it meets in December,UAE energy minister Suhail bin Mohammed al-Mazroui said onSunday.

_ Mary ― 2014年10月20日 15時23分

Is it convenient to talk at the moment? http://www.videogameconsolelibrary.com/blog/?p=research-paper-process-order essay writing services singapore &#8220;It&#8217;s a troubling pattern of pilot error and an inadequate response to stalling,&#8221; Schumer said. &#8220;What&#8217;s even more troubling is that we have new, tighter safety standards on pilot trainings for situations like stalling that are already written and passed, but are waiting to be finalized.&#8221;

_ Benjamin ― 2014年10月20日 15時23分

Can you hear me OK? http://www.sharonlevy.com/artpages/the-effects-of-divorce-on-children-essay.html personal essay for college admission When you live your life in the limelight, it's no surprise that you'd even make an injury look glamorous. From bejeweled crutches and neck braces to designer wheelchairs, check out which celebrities a...

_ Joshua ― 2014年10月20日 16時43分

When can you start? http://weimar.edu/where-can-i-buy-college-essays/ can i buy a research paper without getting caught Public cloud computing, which AWS pioneered in 2006, letscompanies rent computing power, storage and other services fromdata centers shared with other customers - typically cheaper andmore flexible than maintaining their own.

_ Carter ― 2014年10月20日 16時43分

Can I call you back? http://ziplinegear.biz/pay-my-assignment/ write my essay for me cheap “A lot of the people looking at us have been big investors,” Patti says. “They would want to make as much money as possible. Once you can bring in the liquor you are going to double or triple your income.”

_ eblanned ― 2014年10月20日 16時43分

Remove card http://www.sharonlevy.com/artpages/cheap-law-essay-writing-service.html website copywriting services Rouhani proposed Mohammad Javad Zarif, a diplomat at Iran's U.N. Mission in New York for five years, to serve as foreign minister. He also proposed Mahmoud Alavi, a cleric and former lawmaker, as minister of intelligence and Hossein Dehghan, a former commander in the powerful Revolutionary Guards, as defense minister. Others include officials who served in the administrations of both reformist President Mohammad Khatami and centrist President Akbar Hashemi Rafsanjani.

_ Aaliyah ― 2014年10月20日 18時04分

Whereabouts are you from? http://ziplinegear.biz/do-my-philosophy-paper/ cpm homework help algebra UCAS, the admissions service said that according to its latest figures, applications have risen by 3.1%, with more students holding offers and more people already securing a place compared to the same time last year.

_ Kyle ― 2014年10月20日 18時04分

I'm from England http://www.cornwallfoodanddrink.co.uk/please-do-my-homework-for-me/ online essay writing help Zachary Warren, from the Treatment and Research Institute for Autism Spectrum Disorders at the Vanderbilt Kennedy Center in Nashville, Tennessee, said that rate is significantly lower than what's been found in studies of other groups.

_ Bryan ― 2014年10月20日 18時04分

How much were you paid in your last job? http://www.cornwallfoodanddrink.co.uk/please-do-my-homework-for-me/ civil engineering resume cover letter "These are all common sense, practical improvements that will ensure that the broad and powerful surveillance tools being used by the government are subject to appropriate limitations, transparency, and oversight," Leahy said in a released statement. "The American people deserve to know how laws like the USA PATRIOT Act and the FISA Amendments Act are being used to conduct electronic surveillance, particularly when it involves the collection of data on innocent Americans. "

_ Ian ― 2014年10月20日 18時04分

I've been made redundant http://www.cafsowrag4development.org/where-can-you-buy-research-papers/ help writing my paper As part of the excursion in China, the two fighters raced each other up the steps of the Great Wall; paid a visit to Tiananmen Square and recoiled under former Houston Rocket center Yao Ming, in a humorous photo-op as part of the press tour to sell the fight. The promoter Bob Arum said that both camps got along merrily with no trash talking. "He's a nice boy, Brandon, he really is," Arum said.

_ Gabriel ― 2014年10月20日 18時04分

I study here http://weimar.org/economic-homework-help/ online assignments The division, alongside Smiths’ slumping explosives detection business, will now be subjected to a groupwide restructuring which chief executive Philip Bowman believes could lead to £50 million in cost savings over the next four years.

_ Alexis ― 2014年10月20日 18時19分

A law firm http://rawmatroid.net/faqs/ avapro generic alternative Give them time — and only a little is needed — and this same bunch of blind zealots will drive the U.S. to default on its financial obligations, wreaking catastrophic damage to the American and world economies and destroying Uncle Sam’s critical standing as the globe’s ever-dependable money man. They don’t give a damn.

_ Zoey ― 2014年10月20日 19時03分

Best Site Good Work http://www.cedenpa.org.br/Noticias Aygestin Cost It marks a startling turnaround from the start of the crisis. In 2008 when house prices were close to their peak, it was 50pc cheaper to rent at £720 a month, compared to £1,072 a month to buy - a difference of more than £4,200 a year.

_ Stephanie ― 2014年10月20日 19時25分

When can you start? http://weimar.edu/my-essay-writing/ research proposal abstract example Papua New Guinea occupies the eastern part of the world&#039;s second largest island and is prey to volcanic activity, earthquakes and tidal waves. Linguistically, it is the world&#039;s most diverse country, with more than 700 native tongues.

_ Julian ― 2014年10月20日 19時25分

A book of First Class stamps http://barcelonaconsensus.org/essay-about-soccer/ write my essays for free The 30-year-old had received calls from across Russia, with offers to give him money and a place to stay, and even a suggestion by one woman to adopt him. He said he had enough money to get by for now.

_ Garry ― 2014年10月20日 19時26分

I'm doing a phd in chemistry http://www.cornwallfoodanddrink.co.uk/professional-essay-writers-for-hire/ buyessay.org "Anyone buying the deal is taking a view on Spain. Thebuffer is over 4%, and while it might seem small in comparisonto other CoCo deals we have seen, it is big on a relative basis,taking into account the size of the bank."

_ Benjamin ― 2014年10月20日 19時26分

Another service? http://www.sharonlevy.com/artpages/do-assignments-for-money.html buy coursework Research firm Euromonitor has more modest expectations, but still sees growth comfortably beating major overseas markets. It looks at volumes rather than values of online purchases of fresh food, with the Chinese market expected to grow by around 8 percent by 2017 from 664 million tonnes this year, compared to U.S. growth of about 5 percent from 77 million tonnes.

_ Mia ― 2014年10月20日 19時26分

I was made redundant two months ago http://www.cornwallfoodanddrink.co.uk/professional-essay-writers-for-hire/ essay writing services online Julie Turner, a social worker with the Downtown Cluster of Congregations nonprofit, told The Wall Street Journal that Ms. Picciotto had willingly moved from her spot when Inauguration celebrations required that viewing stands be built in that area. But on Thursday, Ms. Turner said she was surprised to hear that the shelter was gone.

_ David ― 2014年10月20日 19時47分

How much is a Second Class stamp? http://www.jubileusul.org.br/nota/833 benoquin cream for sale "We can create added value for our corporate partners and maximize the international commercial opportunities that benefit everyone at the Club, including the players, coaching staff and the global community of fans across the world."

_ Dominic ― 2014年10月20日 20時31分

I like watching TV http://www.studioforty9.com/products dermatologist eyelash growth bimatoprost Major options exchanges including platforms run by CBOEHoldings, Nasdaq OMX Group Inc and NYSEEuronext said they were reviewing the trades, sent inroughly the first quarter hour of trading and affecting optionson shares with listing symbols beginning with the letters Hthrough L.

_ Haley ― 2014年10月20日 20時47分

Could I make an appointment to see ? http://www.sharonlevy.com/artpages/best-personal-statement-editing-services.html writing a report for university "He was very close to his mother and sister," the friend said. "He had a great support network. He had his local priest and lots of good friends who were like family, including the 'Rizzoli' cast."

_ Alexis ― 2014年10月20日 20時47分

I'd like some euros http://www.cornwallfoodanddrink.co.uk/college-term-papers/ help with physics homework One thing we are already aware of, and are trying to alleviate as fast as we can, is the unanticipated additional pressure on the servers due to a significantly higher number of players than we were anticipating at this point – we are working around the clock to buy and add more servers, but this increased scale is only going to make the first few days even more temperamental than such things usually are.

_ Hayden ― 2014年10月20日 20時47分

Have you got any qualifications? http://weimar.edu/where-to-buy-essays/ persuasive essays for high school students The oil and gas company should get a closer look for itsoperations in the Texas Permian Basin, where land valuesindicate that its shares could be worth at least 50 percentmore, Barron's reported in its Sept. 23 edition.

_ Ella ― 2014年10月20日 20時47分

Accountant supermarket manager http://weimar.edu/write-my-dissertation-for-me/ assignment assistance Andrew Sharkey, head of woodland management at the Woodland Trust, which owns the majority of the 2,471 acre Wentwood Forest, said the outbreak undermined nearly seven years of work to restore the ancient broadleaved woodland.

_ Molly ― 2014年10月20日 20時48分

A Second Class stamp http://weimar.edu/where-to-buy-essays/ where to buy essays Also, verbal intelligence in particular makes people more social, and in fact, the study authors discovered that the earlier speakers and readers had more friends than the twins that had less verbal prowess. In turn, that could make them more likely to be in more social situations where there is alcohol.

_ Dominic ― 2014年10月20日 21時49分

I'd like to order some foreign currency http://www.poly.ee/polygon/ bimatoprost best price Last week, the mission finished investigating science targets in the Glenelg area, about 500 yards (half a kilometer) east of where Curiosity landed. The mission&#8217;s next major destination is at the lower layers of Mount Sharp, about 5 miles (8 kilometers) southwest of Glenelg.

_ Payton ― 2014年10月20日 21時49分

I have my own business http://www.poly.ee/polygon/ oral bimatoprost buy Manziel answered the crowd’s call at kickoff Saturday. Pushing the No. 6-ranked Aggies downfield at a breakneck pace, he glided past defenders, kept his balance and served as the catalyst in building a two-touchdown lead.

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2005/06/13/20665/tb

_ stick stack - 2008年02月15日 09時08分