Microsoft Edge 拡張の作り方:contentScripts 編

前回と前回と前回の記事に引き続き、Microsoft Edge の以下のアクションの拡張を作成する方法について紹介します。 ブラウザーアクション ページアクション コンテントスクリプツ (※Edge 拡張の概要と、コンテキストメニューの実装サンプルについてはこちらの記事をご覧ください。) 今回はコンテントスクリプツ の拡張について紹介します。 コンテントスクリプツ コンテントスクリプツの拡張は、マニフェストファイルに記載されたリストにあるパターンにマッチした URL に対し、コンテンツのスクリプトファイルをロードするようブラウザに指示します。 ユーザーがその機能を呼び出すための UI は持ちません。 スクリプトファイルと URL パターンの関連付けが JavaScript コードの記述なしでできるので、簡易的なホワイト/ブラックリストを管理する拡張などが作成できます。 以降、ソースを使用して説明を行います。   コンテントスクリプツの manifest.json コンテントスクリプツの manifest.json は以下のようになります。 manifest.json のキー “content_scripts” の内容に注目してください。 “matches” キーで拡張の機能を動作させる URL を、”js” で JavaScript ファイルを指定しています。   コンテンツスクリプツで呼び出される JS ファイル コンテンツスクリプツの拡張から呼び出される JS ファイル内のコードについて、特別な記述はとくに必要ありません。 一般的な Web コンテンツ上で使用される JavaScript 構文から拡張が提供する API を呼びだすことができます。 今回のサンプルでは、URL ごとに呼び出された…


Microsoft Edge 拡張の作り方:pageAction 編

前回の記事に引き続き、Microsoft Edge の以下のアクションの拡張を作成する方法について紹介します。 ブラウザーアクション ページアクション コンテントスクリプツ 今回はページアクションの拡張について紹介します。 (※Edge 拡張の概要と、コンテキストメニューの実装サンプルについてはこちらの記事をご覧ください。) ページアクション ページアクションの拡張は Web ブラウザーのアドレスバーに表示されるアイコンから機能を呼び出します。 アドレスバーの横にアイコンが表示されるという動作上、特定の URL のコンテンツに対しなにがしかの作業を行う用途に使用するのが良いでしょう。(もしくは、短縮 URL を生成するとか、でしょうか)   以降、ソースを使用して説明を行いますが、お手元で実際に動作させるには e-19.png という名前の 19 x 19 ピクセルのアイコン用の画像ファイルが必要です。 作成するのが面倒な方は以下の画像を保存して使用してください。   ページアクションの manifest.json ブラウザーアクションの manifest.json は以下のようになります。 manifest.json のキー “page_action” の内容に注目してください。 “default_icon” キーで、ツールバーに表示されるサイズのアイコンを、”default_title” でアイコン上に表示されるタイトルを指定しています。 このへんの指定は前回紹介したブラウザーアクションと一緒です。必要があればブラウザーアクションと同様に “default_popup” キーにポップアップとして使用する html ファイルを指定することもできます。 “background” キーの “scripts”  では、ブラウザーの背後で動作する JS ファイルを指定しています。 サンプルでは background.js という名前をファイルを指定していますが、名前は任意のものでもかまいません。 同 “background” キー内の…


Microsoft Edge 拡張の作り方:browserAction 編

前回の記事で Microsoft Edge の拡張の作り方を紹介してからずいぶん間があいてしまいましたが今回から数回に別けて続きをお送りします。 前回の記事では、サンプルとして Web コンテンツ上でマウスの右ボタンをクリックした際に表示されるコンテキストメニューに独自のメニューを追加する機能の作成方法について紹介しました。 今回からは、残りのその他のアクションで動作する拡張について、特徴と具体的な作り方を紹介していきます。 取り上げるアクションは以下のとおりです。 ブラウザーアクション ページアクション コンテントスクリプツ (※Edge 拡張の概要と、コンテキストメニューの実装サンプルについてはこちらの記事をご覧ください。) なお、今回から紹介するサンプルコードはすべて Google Chrome(2016年10月時点の最新のもの) でも動作します。   Edge 拡張を構成するファイル その前に、前回の記事で紹介したつもりになっていて実際にはぜんぜん書いていなかった Edge 拡張を構成するファイルについて紹介します。 Microsoft Edge の拡張を構成するファイルは manifest (json)、background page (html)、Content scripts (js)、UI pages (html) の 4 種類のファイルです。 ファイル 説明 Manifest (json) 定義ファイル(※必須)拡張の名前や説明、アクセス権や拡張が使用するファイルなどを指定 Background page (html) 拡張の機能をバックグラウンドで動作させるためのページ Content scripts (js) 拡張の機能を実装するための JS ファイル UI pages…


Web Farm Framework 2.0 Beta for IIS 7 の概要

Web Farm Framework 2.0 がリリースされておりました。 Overview of the Web Farm Framework 2.0 Beta for IIS 7 http://learn.iis.net/page.aspx/907/overview-of-the-web-farm-framework-20-beta-for-iis-7/ 名前の通り、Web サーバーでファームを構成する際の、複数サーバーにまたがる設定、コンテンツの配置、管理などをフレームワーク化し、作業を軽減するためのものです。 勉強がてら概要を訳してみましたので興味のある方はご覧ください。 なお、正確に内容を把握されたい方は原文をご覧ください。(私ゃ英語の独特の表現とか、よくわかりませんので。。)   Web Farm Framework 2.0 Bata for IIS7 概要 Microsoft Web Farm Framework ( WFF ) 2. 0 for IIS 7. 0 は、プロビジョニング、スケーリング、および複数のサーバーの管理を簡素化します。 管理者はシームレスに複数サーバーのプロビジョニングをおこない、コンテンツを展開し、elastic スケーリングを有効にするのためにそれらを使用することができます。 Web Farm Framework を使用して、サーバー ファームのプロビジョニングと健常性に関する最新のステータスを提供し、統一されたインターフェイスを通じてサーバー (もしくはサーバー ファーム) の操作を実行できます。 また、効率的な方法でウェブインフラストラクチャを利用して管理コストを下げ、継続的にサーバファームの管理を簡素化することも可能です。…


IIS7 の機能を拡張してみる-指定した言葉の出力禁止

IIS7 は ASP.NET とのパイプライン (リクエストを受けてからレスポンスを返すまでの処理) の統合により、パイプラインにかかわる処理を .NET のマネージコードで記述することができます。 リクエストのハンドリング方法については、既に機能を紹介していますので、今回はレスポンスはハンドリングし、その中のコンテンツを書き換える方法について紹介させていただきます。 この "コンテンツの内容を書き換える = 出力を行う" という処理は本来ハンドラで行う処理ですが、今回はモジュールを使用したものを紹介します。 そのため紹介さていただきますサンプルコードは、既にハンドラが設定されているページ、つまりは、*.aspx や *.php 等の、サーバーサイドで何らかの処理を行うページでしか動作しません。 それなのに、なぜあえてモジュールとして実装したかというと、ええ、….じつは私の勘違いでモジュールとして作ってしまったからです、はい(恥) 以前、php アプリケーション内のリンクを、フレンドリな短い URL に書き換えるというモジュールを作成したこともあり、"ASP.NET 以外のページでも動作 = 静的なファイルでも動作" と短絡的に考えていたのですが、今回モジュールを作り終えてテストしたところ、静的なファイルでは動作しないこと&理由が判明したしだいです。(すみません)   今回のサンプルの機能 のっけから非常に残念な感じの今回のサンプルなのですが、どういった機能を実装したかというと、レスポンス内のコンテンツから任意の言葉を伏字にするという機能です。 この機能を使用すると、任意に指定したワード (言葉) がコンテンツに含まれていた場合、代替えのキャラクタで置き換えてくれるため、サイトの訪問者の目に触れさせたくない言葉をブロックすることができます。 人によっては "そんな機能が本当に必要か? 必要なのか??" と考えられるかもしれません。 しかしどうでしょう、 たとえば、取引先の社の Web サイトを覗いたときに、そのコンテンツ内に公序良俗に反する言葉や、差別用語や、社会通念上許されざる言葉が平然と使用されていたとしたら、今後その会社と深いリレーションを築きたいと思うでしょうか? また、いくら仲の良い友人からのメールであっても、幼児の三大爆笑ワードである "ば〇、う〇こ、ちん〇ん" といったような、下品な言葉が毎回多用されていたりしたら、その人の品性と精神的健康状態について強い疑問を持たざるを得ないでしょう。 さらに"言葉" には、理解した瞬間に著しく相手の気分を害するものもあります。しかもそれは、人間の肉体に備わった機能ではブロックすることはできません。 たとえば、今、このドキュメントをお読みいただいているわけですが、ご自身の肉眼に実際に写っているものは、じつは "文字" でも "言葉" でなく、モニタ上に並んだ映像素子の点滅でしかありません。 モニタに表示された光のパターンを脳が文字と認識し、文字の並びから文としての解釈が行われ、私の言葉が"再生" (処理が実行) されているのです。 この一連の処理は、人間の読解における基本的な処理ですが、基本的であるがゆえにその一連の処理は無条件に実行され、解釈される内容の良し悪しにかかわらず、その実行は防ぎようがないのです。…


IIS7 の機能を拡張してみる-レスポンスヘッダー内のサーバー名の改ざん

Web サーバーが返す HTTP レスポンス内 のヘッダー Server には、Web サーバーの名前が含まれています。 以下は、実際に IIS 7.5 が返すレスポンスヘッダー中の Server の値です。 Server: Microsoft-IIS/7.5 この情報は、インターネットでどのような Web サーバーが使用されているかの調査等に利用されていますが、管理者の方からは、セキュリティの観点からこの情報を隠蔽、あるいは削除したいというご要望を受けることがあります。 残念ながら、IIS 7 の標準の機能では、この機能は提供されておりません。(※) (※) IIS 管理ツールにある [HTTP 応答ヘッダー] の機能を使用してカスタムヘッダーの追加/削除などは可能です しかし、先日の記事でご紹介したように、.NET を使用して IIS の機能を拡張することでその機能を実装することができます。 この処理に使用する コードの量は非常に少なくシンプルであり、コンパイルも不要かつ、配置も容易ということで、驚くほど簡単にその機能を実装することが可能です。 セキュリティを強化するため、使用している Web サーバーが Microsoft 社の Internet Information Server 7 であることを世間の目からひた隠しに覆い隠す、という行為は、セキュリティの向上という観点から理解できますが、しかし、これは、あくまでも私一個人の心情の問題にすぎないのですが、日々仕事で IIS にかかわる者としては少々複雑な気分にならざるをえません。 たとえばもし、お子さんから "同級生に見られたくないから授業参観に来ないで"とか、あるいは恋人から "人に見られなくないから離れて歩いて" とか言われたらどうでしょう? この悲惨な心情たるや、あえてここで語るまでもないでしょう。 しかし、心ある人であればあるほど、無理をしてまで、その残酷な要求に笑顔で応えてしまうものなのです。 私が本日ここで、レスポンスヘッダーから IIS の名前を消すサンプルコードを紹介させていただくのも、もしかしたらそういう理由なのかもしれませんね。…

2

IIS7 の機能を拡張してみる-Hot Link (直リン) 禁止モジュール

IIS7 はパイプラインの変更により、.NET を使用してその機能を拡張することができます。 .NET を使用した IIS 7 の機能拡張については、詳しいセッションを過去に何度か行ったことがあるのですが、この機能に関しての記事をあまり見かけないので書いておきます。 .NET を使用した IIS 7 の拡張方法は大別すると、以下の方向性に大別されます。 リクエスト、レスポンスの応答処理 IIS 7 に対する操作 IIS 管理ツールの拡張 今回は リクエスト、レスポンスの応答処理 の中の、リクエストを処理を使用して Hot Link を禁止する方法をご紹介しましょう。 ちなみに Hot Link とは、Web サイトで公開しているコンテンツを、他の Web サイトが直接リンクして使用する行為です。"直リン" などと短縮して呼ばれることもあります。 "コンテンツへの直接のリンク" ということで、"Web に公開しているものに直接リンクしてなにが悪い?" と、疑問に思われる方もいらっしゃることてしょう。 たとえば、自分の Web サイトで、お宝画像、もとい、ユーザーから需要のある画像等を公開し、そのページに貼ったバナーのアフィリエイトで収益を上げているとしましょう。 ところが、他の Web サイトが、自分のサイトで公開している画像を <img> タグなどを使用して、さもその Web サイトが提供しているように公開していたらどうでしょう? "非常に腹立たしい"、のはもちろんなのですが、なんといっても他所のサイトの訪問者は、バナーの貼ってある自分のサイトのページにはアクセスしませんので、アフィリエイトが機能せず、経済的な損失も生じることになります。 そういった場合には、Hot Link をしている Web サイトに対して注意、警告する必要が出てくるわけですが、運営者が気弱だったり、相手が道徳心に欠けるような ならず者 だったりすると、たいがいの場合、泣き寝入りすることになります。…