分123あけましておめでとうございます。毎日のように新しいニュースが飛び込んでくるウェブブラウザの世界ですが,2016年は「拡張機能」という分野において大きな動きがありそうです。本稿では,ウェブブラウザの拡張機能のこれまでとこれからについて紹介します。進化が止まらないウェブブラウザの歴史1993年にMosaicウェブブラウザが登場してから,早いもので23年が経過しました。インターネットが人々に浸透していく中で,ウェブブラウザの重要性はとにかく増していく一方です。Explorer(IE⁠)⁠,Firefox,Safari,Opera,そしてEdgeといった代表的なウェブブラウザがシェアの奪い合いを繰り広げています。インターネットの進化は,ウェブブラウザの進化と言い換えることもできるでしょう。ウェブブラウザの登場から今日までの進化をわかりやすく表現したウェブサイト「ウェブの進化」がありますので,ぜひご覧になってみてください。以前はウェブブラウザの機能は「ホームページを閲覧する道具」でしたが,今日では「インターネット上のほぼすべての活動を行う場」になっています。単なるネットサーフィンではない,もっと高度で複雑なことをユーザが行うようになりました。閲覧したウェブページを友だちにシェアしたり,母国語に翻訳したり,数多くのユーザIDとパスワードの組を記憶して必要に応じてウェブページにセットしたり,いちいちウェブページを移動せずに検索を行ったり,といったことが挙げられます。これらはウェブページ側でサポートされるのではなく,ウェブブラウザ側でサポートされる機能だと言えます。ユーザによって必要とされる機能は全く異なってきます。ユーザの好みに合わせて柔軟に機能追加が可能であること,それが理想的な姿です。翻訳」拡張機能の例ウェブブラウザ自体の機能をユーザが追加していくことは,比較的初期から実現されていました。過去に一世を風靡したものとして,以下があります。Appletなど,新しいコンテンツをウェブページ内に表示させるために後から追加するプラグインモジュール。IEツールバー:Yahoo!ツールバーやGoogleツールバーなどが有名。それぞれのサービスが提供する各種機能を迅速に利用可能にするツールバーモジュール。これらの開発にはC++などを利用する必要があり,比較的難しいものでした。当時はウェブブラウザの機能を独自に改良するという発想自体がなかったと思いますが,2002年にリリースされたFirefoxによってこの認識は覆されることになります。NavigatorやIEと違い,Firefoxは「自分でFirefox自体の機能を開発することが可能なウェブブラウザ」でした。アドオンと呼ばれたその機能は,Firefoxの中の人ではない開発者が機能を追加することができるように,数多くのカスタマイズポイントを提供していました。FirefoxにてFirefoxユーザは自由に公開された拡張機能の中から気に入ったものを自分のFirefoxにインストールできるようになりました。Add-onsFirefoxの拡張機能は,XML,JavaScript,CSSといった「比較的手軽な技術要素」を使って開発できるようになっていました。Language)と呼ばれるXMLにて,Firefox自体のUI構成がすべてマークアップされています。簡単に表現すると,Firefoxの拡張機能は,Firefoxが持つXULを上書きしてUIを追加あるいは変更し,それらの振る舞いをJavaScriptで与えたものです。本当に深いところまで変更できるようになっていたため,様々なアイディアが世界中の開発者の手によって実現されていきました。SDKが提供されたことによってXULを深く理解せずとも拡張機能の開発ができるようになりました。SDKに含まれていたcfxコマンドを置き換えるnode.jsベースの開発環境「JPM」が登場しました。これにより,例えばソースコードの変更が直接Firefox上で反映されるなど,生産性を従来よりも向上させることが可能になりました。拡張機能の開発をさらに簡単にしたChrome2008年に登場したChromeにおいても,バージョン4から拡張機能がサポートされました。Firefoxと同じように,JavaScriptでコードを記述していくことが開発の中心的な作業です。XULほどの自由度はありませんが,その分必要となる前提知識が少なく,主要な拡張機能があっという間に開発され,広く利用されるようになりました。バージョン8からは,ユーザがChromeウェブストアから拡張機能を探してインストールできるようになりました。ChromeウェブストアChromeの拡張機能は,必須のmanifest.jsonファイルを記述し,あとはHTML,JavaScript,CSSを駆使して開発します。APIを使って,Chromeに独自の機能を追加します。バージョン5では8個のAPIしかありませんでしたが,現在では63個まで増えました。その中には,Chromeが持つ開発者向けのDevToolsを拡張するためのAPIや,画面やウェブページのキャプチャ画像を撮るためのAPIなど,面白いものも多く含まれています。APIいまでは,1つも拡張機能を入れずにChromeを使っているユーザは皆無と言えます。Chromeの開発自体が「シンプルさを保つ」ことに注力していることも,拡張機能の利用が促進された要因でしょう。ほとんど拡張機能に力を入れてこなかったIEFirefoxやChromeの拡張機能がJavaScript,CSSなどのウェブ標準技術に近いもので開発可能なのに対して,IEのそれは真逆な環境です。OSのレジストリを書き換える必要があります。各機能に応じたインターフェイスが規定されていて,その実装を基本的にはC++で開発しなければなりません(現在ではC#など他の選択肢もあります⁠)⁠。OSが持つUI部品群を利用する,あるいは自分で描く,といったことが求められます。Extensionsという名前のウェブページから,IEの拡張機能を作るための方法を知ることができます。Extensions開発したものを動作させるためにはレジストリの書き換えが必要になるため,IE向けの拡張機能(実際にはアドオンという名称です)はインストーラを作る必要が出てきます。ユーザに配布する際にも,FirefoxやChromeのように「拡張機能ギャラリーからボタンクリックで即インストール完了」にはなりません。削除する場合も,アンインストーラを使う必要が出てきます。FirefoxやChromeと違って,IE向けの拡張機能の個数が非常に少ないのも,こういった事情があるからだと考えられます。Expert(Chrome担当)。Series)』を出版。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。