<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1516288005274500144</id><updated>2024-09-05T19:54:19.794+09:00</updated><category term="JavaScript基礎文法最速マスター"/><category term="Codecademy"/><category term="Greasemonkey"/><category term="JavaScript"/><title type='text'>ryo.link</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-2330601680405718823</id><published>2012-02-03T21:52:00.000+09:00</published><updated>2012-02-03T21:52:02.123+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Codecademy"/><category scheme="http://www.blogger.com/atom/ns#" term="Greasemonkey"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>独自の日本語化スクリプトのプロトタイプ完成</title><content type='html'>MylingualでCodecademyの日本語化を行っていたが、Mylingualはシステムメッセージの翻訳ツールでドキュメント翻訳ツールとしては無理があることがわかった。&lt;br /&gt;
&lt;br /&gt;
それならば、と独自で日本語化出来るようスクリプトを書いてみた。 &lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;prototype.ja.www.&lt;/b&gt;&lt;b&gt;codecademy.com.user.js&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: black; color: white; overflow: auto; padding: 0.5em;&quot;&gt;// ==UserScript==
// @name            Codecademy for Japanese
// @namespace       Codecademy4Japanese
// @author          Ryo Link
// @include         http://*.codecademy.com/*
// @description     Translates http://www.codecademy.com/ to Japanese. 
// ==/UserScript==

(function(){

// start custom code.

    var translation = [
        {
            xpath:&#39;/html/body/div[3]/div/div/div/section/div[2]/h1&#39;,
            original:/Learn to code/,
            newtext:&#39;コードを学ぼう&#39;
        }
        ,
        {
            xpath:&#39;/html/body/div[3]/div/div/div/section/div/div[2]/pre/span[@class=&quot;log&quot;]&#39;,
            original:/Hey! .*? keyboard\./,
            newtext:&#39;はじめまして、Ryanです。あなたのお名前は何ですか？あなたのお名前を&amp;lt;strong&amp;gt;&quot;Ryan&quot;&amp;lt;/strong&amp;gt;のように引用符で括り入力してください。入力できたらキーボードの &amp;lt;strong&amp;gt;Enter&amp;lt;/strong&amp;gt; と書かれたエンターキーを押してください。&amp;lt;span style=&quot;font-size:small;&quot;&amp;gt;注意：引用符「&amp;lt;strong&amp;gt;&quot;&amp;lt;/strong&amp;gt;」は必ず半角で入力します。&amp;lt;/span&amp;gt;&#39;
        }
        ,
        {
            xpath:&#39;/html/body/div[3]/div/div/div/section/div/div[2]/pre/span[@class=&quot;log&quot;]&#39;,
            original:/Well done! .*?&amp;lt;code&amp;gt;&quot;Ryan&quot;.length&amp;lt;\/code&amp;gt;/,
            newtext:&#39;よろしく！お名前は何文字ですか？あなたのお名前を引用符で括り、そのまま続けて&amp;lt;code class=&quot;ace-tm&quot;&amp;gt;&amp;lt;span class=&quot;ace_line&quot;&amp;gt;&amp;lt;span class=&quot;ace_punctuation ace_operator&quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;ace_identifier&quot;&amp;gt;length&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;と入力しエンターキーを押してください。例: &amp;lt;code class=&quot;ace-tm&quot;&amp;gt;&amp;lt;span class=&quot;ace_line&quot;&amp;gt;&amp;lt;span class=&quot;ace_string&quot;&amp;gt;&quot;Ryan&quot;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;ace_punctuation ace_operator&quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;ace_identifier&quot;&amp;gt;length&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;&#39;
        }
        ,
        {
            xpath:&#39;/html/body/div[3]/div/div/div/section/div/div[2]/pre/span[@class=&quot;log&quot;]&#39;,
            original:/Well done! .*? &amp;lt;code class=&quot;ace-tm&quot;&amp;gt;&amp;lt;span class=&quot;ace_line&quot;&amp;gt;&amp;lt;span class=&quot;ace_string&quot;&amp;gt;&quot;Ryan&quot;&amp;lt;\/span&amp;gt;&amp;lt;span class=&quot;ace_punctuation ace_operator&quot;&amp;gt;\.&amp;lt;\/span&amp;gt;&amp;lt;span class=&quot;ace_identifier&quot;&amp;gt;length&amp;lt;\/span&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;\/code&amp;gt;/,
            newtext:&#39;よろしく！お名前は何文字ですか？あなたのお名前を引用符で括り、そのまま続けて&amp;lt;code class=&quot;ace-tm&quot;&amp;gt;&amp;lt;span class=&quot;ace_line&quot;&amp;gt;&amp;lt;span class=&quot;ace_punctuation ace_operator&quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;ace_identifier&quot;&amp;gt;length&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;と入力しエンターキーを押してください。例: &amp;lt;code class=&quot;ace-tm&quot;&amp;gt;&amp;lt;span class=&quot;ace_line&quot;&amp;gt;&amp;lt;span class=&quot;ace_string&quot;&amp;gt;&quot;Ryan&quot;&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;ace_punctuation ace_operator&quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span class=&quot;ace_identifier&quot;&amp;gt;length&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;&#39;
        }
    ];

    function do_platypus_script() {
        for(var i in translation){
            var o = translation[i];
            translate(o.xpath, o.original, o.newtext);
        }
    };

    function getElementsByXPath(xpath, node) {
        var node = node || document;
        var doc = node.ownerDocument ? node.ownerDocument : node;
        var nodesSnapshot = doc.evaluate(xpath, node, null,
            XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        var data = [];
        for (var i = 0; i &amp;lt; nodesSnapshot.snapshotLength; i++) {
            data.push(nodesSnapshot.snapshotItem(i));
        }
        return (data.length &amp;gt;= 1) ? data : null;
    }

    function translate(xpath, original, newtext) {
        var elements = getElementsByXPath(xpath, document);
        for(var e in elements){
            do_modify_html_it(window.document, elements[e], original, newtext, null);
        }
    }

    function loadHandler(){
      var handler = function (evt) {
        if (handler.underOperation) {
          return;
        }
        setTimeout(
          function () {
            handler.underOperation = true;
            do_platypus_script();
            handler.underOperation = false;
          },
          1);
      };
      document.addEventListener(&quot;DOMNodeInserted&quot;, handler, false);
      document.addEventListener(&quot;DOMCharacterDataModified&quot;, handler, false);
    }

    window.addEventListener(&quot;load&quot;, loadHandler, false);

// end custom code.

    var gplatypusBundle = Components.classes[&quot;@mozilla.org/intl/stringbundle;1&quot;].getService(Components.interfaces.nsIStringBundleService);
    var mystrings = gplatypusBundle.createBundle(&quot;chrome://platypus/locale/platypusCore.properties&quot;);
    var platypusplatypuscouldntfi1 = mystrings.GetStringFromName(&quot;platypusplatypuscouldntfi1&quot;);
    var platypusthisusuallyhappens = mystrings.GetStringFromName(&quot;platypusthisusuallyhappens&quot;);

    function walk_down(node, func) {
      if (node.nodeType == 1) {
        if (node.tagName != &quot;IMG&quot;) func(node);
        if (node.childNodes.length != 0)
          for (var i=0; i&amp;lt;node.childNodes.length; i++)
    walk_down(node.childNodes.item(i),func);
      }
    }
    function make_bw(doc, node) {
      walk_down(node,
                function (node) {
          if (node.tagName != &#39;A&#39;) {
      node.bgcolor = &quot;white&quot;;
      node.color = &quot;black&quot;;
      node.style.backgroundColor = &quot;white&quot;;
      node.style.color = &quot;black&quot;;
      node.style.backgroundImage = &quot;&quot;;
          }});
    }
    function center_it(doc, node) {
      var center_node = doc.createElement (&quot;CENTER&quot;);
      node.parentNode.insertBefore(center_node, node);
      node.parentNode.removeChild(node);  
      center_node.appendChild(node);
      return center_node;
    };
    function erase_it(doc, node) {
      var offset_height = node.offsetHeight;
      var offset_width = node.offsetWidth;
      var replacement_div = doc.createElement (&quot;DIV&quot;);
      replacement_div.setAttribute(&#39;style&#39;,
           &quot;height: &quot;+offset_height+&quot;; width: &quot;+offset_width+&quot;;&quot;);
      node.parentNode.insertBefore(replacement_div, node);
      node.style.display = &quot;none&quot;;
      return replacement_div;
    };
    function smart_remove(doc, node) {
        if (node.parentNode.childNodes.length == 1) {
    smart_remove(doc, node.parentNode);
        } else {
    remove_it(doc, node);
        };
    };
    function remove_it(doc, node) {
      if (doc == null || node == null) return;
      if (!node.parentNode) return;
      node.style.display = &quot;none&quot;;
      doc.last_removed_node = node;
    };
    function script_paste(doc, where, what) {
        var new_node = what.cloneNode(true);
        new_node.style.display = &quot;&quot;;
        where.parentNode.insertBefore(new_node, where);
    };
    function isolate(doc, node) {
      if (!node.parentNode) return;
      node.parentNode.removeChild(node);
      while (doc.body.childNodes.length &amp;gt; 0) {
        doc.body.removeChild(doc.body.childNodes[0]);
      };
      var replacement_div = doc.createElement (&quot;DIV&quot;);
      replacement_div.setAttribute(&#39;style&#39;,
           &quot;margin: 0 2%; text-align: left&quot;);
      replacement_div.appendChild(node);
      doc.body.appendChild(replacement_div);
    };
    function set_style_script(doc, element, new_style) {
        element.setAttribute(&#39;style&#39;, new_style);
    };
    function modify_single_url(doc, match_re, replace_string, node) {
        if (node.href) {
    node.href = node.href.replace(match_re, replace_string);
        };
    };
    function do_modify_url_it(doc, node, match_re, replace_string, global_flag) {
        match_re = new RegExp(match_re);
        if (global_flag) {
    var allurls = doc.getElementsByTagName(&#39;A&#39;);
    for(var i = 0, url; url = allurls[i]; i++)
      modify_single_url(doc, match_re, replace_string, url);
        } else {
    modify_single_url(doc, match_re, replace_string, node);
        };
    };
    function do_modify_html_it(doc, element, match_re, replace_string) {
        match_re = new RegExp(match_re);
        if (element.innerHTML) {
            element.innerHTML = element.innerHTML.replace(match_re, replace_string);
        };
    };
    function relax(doc, node) {
      walk_down(node, function (node) {
          node.style.width = &#39;auto&#39;;
          node.style.marginLeft = &#39;0pt&#39;;
          node.style.marginRight = &#39;0pt&#39;;
          if (node.width) node.width = null; });
    }
    function fix_page_it(doc, node) {
        doc.background = null;
        doc.bgColor = &quot;white&quot;;
        if (doc.style) {
          doc.style.backgroundColor = &quot;white&quot;;
          doc.style.backgroundImage = &quot;none&quot;;
          if (doc.style.color == &quot;white&quot;) {
    doc.style.color = &quot;black&quot;;
          };
          if (doc.text == &quot;white&quot;) {
    doc.text = &quot;black&quot;;
          };
        };
        doc.body.background = null;
        doc.body.bgColor = &quot;white&quot;;
        if (doc.body.style) {
          doc.body.style.backgroundColor = &quot;white&quot;;
          doc.body.style.backgroundImage = &quot;none&quot;;
          if (doc.body.style.color == &quot;white&quot;) {
    doc.body.style.color = &quot;black&quot;;
          };
          if (doc.body.text == &quot;white&quot;) {
    doc.body.text = &quot;black&quot;;
          };
        };
    };
    function insertAfter(newNode, target) {
        var parent = target.parentNode;
        var refChild = target.nextSibling;
        if(refChild != null)
    parent.insertBefore(newNode, refChild);
        else
    parent.appendChild(newNode);
    };
    function html_insert_it(doc, element, new_html, before, insert_as_block) {
      var new_element;
      if (insert_as_block) {
        new_element = doc.createElement (&quot;DIV&quot;);
      } else {
        new_element = doc.createElement (&quot;SPAN&quot;);
      };
      new_element.innerHTML = new_html;
      if (before) {
          element.parentNode.insertBefore(new_element, element);
      } else {
          insertAfter(new_element, element);
      };
    };
    function auto_repair_it(doc, node) {
      Dump(&quot;In auto_repair_it...&quot;);
      var biggest_elem = find_biggest_elem(doc);
      Dump(&quot;biggest_elem = &quot;+biggest_elem);
      isolate(doc, biggest_elem);
      Dump(&quot;After isolate.&quot;);
      relax(doc, biggest_elem);
      Dump(&quot;After relax.&quot;);
      make_bw(doc, biggest_elem);
      Dump(&quot;After make_bw.&quot;);
      fix_page_it(doc, biggest_elem);
      Dump(&quot;After fix_page_it.&quot;);
    };
    function find_biggest_elem(doc) {
      const big_element_limit = 0.25;
      var size_of_doc = doc.documentElement.offsetHeight *
          doc.documentElement.offsetWidth;
      var body = doc.body;
      var size_of_body = body.offsetHeight * body.offsetWidth;
      if (size_of_body &amp;lt; (0.80 * size_of_doc)) {
          size_of_body = size_of_doc;
      };
      var max_size = 0;
      var max_elem = doc;
      /*  
      var allElems = doc(&quot;//*&quot;,
         doc, null,
         XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
         null);
      Dump(&quot;allElems = &quot;+allElems);
      Dump(&quot;allElems.snapshotLength = &quot;+allElems.snapshotLength);
      for (var i = 0; i &amp;lt; allElems.snapshotLength; i++) {
        var thisElem = allElems.snapshotItem(i);
      */
        
      var allElems = doc.getElementsByTagName(&quot;*&quot;);
      Dump(&quot;allElems = &quot;+allElems);
      Dump(&quot;allElems.snapshotLength = &quot;+allElems.length);
      for (var i = 0; i &amp;lt; allElems.length; i++) {
          var thisElem = allElems[i];
          var thisElem_size = thisElem.offsetHeight * thisElem.offsetWidth;

          if (thisElem_size &amp;lt; size_of_body &amp;amp;&amp;amp;
      thisElem_size &amp;gt; max_size &amp;amp;&amp;amp;
      !contains_big_element(thisElem, size_of_body * big_element_limit)) {
      max_size = thisElem_size;
      max_elem = thisElem;
          };
      };
      Dump(&quot;Max elem = &quot;+max_elem.tagName);
      return max_elem;
    };

    function contains_big_element(node, limit) {
        if (node.childNodes.length != 0)
    for (var i=0; i&amp;lt;node.childNodes.length; i++) {
        var child = node.childNodes.item(i);
        var child_size = child.offsetHeight * child.offsetWidth;
        if (child_size &amp;gt; limit) return true;
    };
        return false;
    };

    function platypus_do(win, func_name, o, other, other2, other3) {
        var func = eval(func_name);
        var doc = null;
        if (func == null) return;
        if (!o) {
    Warning(platypusplatypuscouldntfi1+
    func_name+platypusthisusuallyhappens);
        };
        doc = win.document;
        func(doc, o, other, other2, other3);
    };
})();

//.user.js
&lt;/pre&gt;
&lt;br /&gt;
ソースはあるツールを使用して半自動で作成したのであまりよろしくないがとりあえず。&lt;br /&gt;
&lt;br /&gt;
translationが翻訳テーブルとなる。このように特定要素内で正規表現による置換ができると翻訳の自由度がとても高くなり、極端な話なんでもできてしまう。原文に忠実でなくとも超意訳で日本語化できるはず。ページ毎に翻訳の判断をする必要があるかまだわからない。&lt;br /&gt;
&lt;br /&gt;
このソースの正式版をgithubで公開し、userscripts.orgで配布する形になる予定。githubのソースはフォークして独自の物を作成してもよし、追加変更してプルリクエストもよし。手伝ってくれる人がいれば非常に助かる。&lt;br /&gt;
&lt;br /&gt;
課題としてユーザーにスクリプトの更新をどうさせるか。自動で出来るか、何か良い方法があるか調査中。どなたかコメントを待っています。&lt;br /&gt;
&lt;br /&gt;
スクリプトの更新が確実にできるようになれば、Mylingualのようにデータベース化せずスクリプトの配布だけで日本語化が出来ると見込んでいる。&lt;br /&gt;
&lt;br /&gt;
将来の展望としてはブラウザ上で見ているサイトを直接翻訳可能にする機能拡張の作成、それで作成されたスクリプトを各自がgithubで公開できるようになればいいなぁ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/2330601680405718823/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/02/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/2330601680405718823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/2330601680405718823'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/02/blog-post.html' title='独自の日本語化スクリプトのプロトタイプ完成'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-8483290175059615974</id><published>2012-02-01T15:22:00.002+09:00</published><updated>2012-02-01T15:22:49.963+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Codecademy"/><title type='text'>codecademy.comへ日本語コースを提出した</title><content type='html'>Codecademyがユーザーへコース作成機能を公開した。公開したと言っても無条件に利用できるものではないようで審査があるようだ。審査後に公開の流れらしい。&lt;br /&gt;
&lt;br /&gt;
mylingualに限界を感じて代替案を用意していたところだったが、公式で出来ることにこしたことはないので早速日本語コースを提出してみた。果たして審査が通るか？</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/8483290175059615974/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/02/codecademycom.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8483290175059615974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8483290175059615974'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/02/codecademycom.html' title='codecademy.comへ日本語コースを提出した'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-4821979909249974240</id><published>2012-01-22T18:39:00.000+09:00</published><updated>2013-10-24T19:50:52.500+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Codecademy"/><title type='text'>Mylingual for codecademy.comの導入 - Firefox編</title><content type='html'>Mylingual for codecademy.comとはcodecademy.comを日本語化するGreasemonkeyスクリプト。 &lt;br /&gt;
&lt;br /&gt;
Mylingual for codecademy.comをFirefoxにインストールするには以下の手順で行う。&lt;br /&gt;
&lt;br /&gt;
まずアドオンのインストールから。次のURLをFirefoxで開きGreasemonkeyというアドオンをインストールする。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;https://addons.mozilla.org/ja/firefox/addon/greasemonkey/&quot; target=&quot;_blank&quot;&gt;https://addons.mozilla.org/ja/firefox/addon/greasemonkey/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh77az8nvHGH_TjBZQlWTZpiJMWti2hCK4W8jkP0OO6nY1llagc3TUZS686rqhOLYmePTnzrfnjuv1AA7XmNY33DcXHCJcxCbjomZBUKCR_6iYtvib6hVmHlnE75iGAy_TCl-Xgw0a0Urs/s1600/ff01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh77az8nvHGH_TjBZQlWTZpiJMWti2hCK4W8jkP0OO6nY1llagc3TUZS686rqhOLYmePTnzrfnjuv1AA7XmNY33DcXHCJcxCbjomZBUKCR_6iYtvib6hVmHlnE75iGAy_TCl-Xgw0a0Urs/s320/ff01.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8gaQuGPDbhJqLmXLln5URbhlkhRssqJhLWV-zs48UCZNs2zDK2eXGkgYXsGzcK8TSoRXWal9019r11ghHOgxhXe0gG8szEuwDiGgjx6J3nONtLrxVsGRvMEsxSfVI2I2iIz0K_SHgnhI/s1600/addon-dl.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;142&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8gaQuGPDbhJqLmXLln5URbhlkhRssqJhLWV-zs48UCZNs2zDK2eXGkgYXsGzcK8TSoRXWal9019r11ghHOgxhXe0gG8szEuwDiGgjx6J3nONtLrxVsGRvMEsxSfVI2I2iIz0K_SHgnhI/s320/addon-dl.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijsV4kgZJ5zLV-vCE0YQUNfSn2QNDGMDgdyIlBOHk-pBRmQDMkLU9_pNxCEjhrKL8KWXmLuk9V0LXEWCdTH5E0AkacFlLHz7QijdnmAQd67vQAnc9oItIXFH-6orfHrw2EVeQpN9QvPFY/s1600/addon-restart.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijsV4kgZJ5zLV-vCE0YQUNfSn2QNDGMDgdyIlBOHk-pBRmQDMkLU9_pNxCEjhrKL8KWXmLuk9V0LXEWCdTH5E0AkacFlLHz7QijdnmAQd67vQAnc9oItIXFH-6orfHrw2EVeQpN9QvPFY/s320/addon-restart.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUb_ibGgLjbYvtayU9sfrkZMaDw3js1dMHcYVtgvDO7s0CNFsnf1fTes-PGFiNY6pmB9eigvp0RaORxPWtFYncMevuamjLoR-6YjS7UA1FZ_LnXJx1gRp8gRceIyWD4wBDghkP_fVDcJs/s1600/gremon.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUb_ibGgLjbYvtayU9sfrkZMaDw3js1dMHcYVtgvDO7s0CNFsnf1fTes-PGFiNY6pmB9eigvp0RaORxPWtFYncMevuamjLoR-6YjS7UA1FZ_LnXJx1gRp8gRceIyWD4wBDghkP_fVDcJs/s1600/gremon.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
アドオンのインストールが完了したら、次はGreasemonkeyで使うスクリプトを以下のURLからインストールする。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://userscripts.org/scripts/show/123724&quot; target=&quot;_blank&quot;&gt;http://userscripts.org/scripts/show/123724&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja9Mt5cKCCAumTlt1sof6JtkqHBsSOnthUBv3Z5UkZpQWgx_Fdr3oj-Zy_oUEBSR5Em5WN9R-khQpJrU8WfFNgpZ8WaVnzRE8IJJsZcrPCkt_ZJNQICneOAYdUY8-b0NXEN4F9mRP8QZ8/s1600/ch01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja9Mt5cKCCAumTlt1sof6JtkqHBsSOnthUBv3Z5UkZpQWgx_Fdr3oj-Zy_oUEBSR5Em5WN9R-khQpJrU8WfFNgpZ8WaVnzRE8IJJsZcrPCkt_ZJNQICneOAYdUY8-b0NXEN4F9mRP8QZ8/s320/ch01.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIXGy24gX1StBtXlw2wuhSf5y4WJ3ooqVS6JGMg8v2dmzFITcu8gfsPl6hLapiwYccCLFfNa0J95SvM3HSkX7yvyvPVilr_-T2pptfgOi8BJOfSCiNYke0zidSXq6itMrAJc-zHyrGYn4/s1600/ch01-1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;278&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIXGy24gX1StBtXlw2wuhSf5y4WJ3ooqVS6JGMg8v2dmzFITcu8gfsPl6hLapiwYccCLFfNa0J95SvM3HSkX7yvyvPVilr_-T2pptfgOi8BJOfSCiNYke0zidSXq6itMrAJc-zHyrGYn4/s320/ch01-1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJAQDMbZtYq2fWWgjDSSWPcoRQW6JCTATDFLayJgCjIjfwBDGN0EbaEgZNUeP4JAxS5T9XuOV5s-m0qB09olplK_QTNRCXa5vRBhHzmZUZNU3iGFwcHu-jgR1GqYl0Ze4l-BlocSFqnbU/s1600/script-install.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;251&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJAQDMbZtYq2fWWgjDSSWPcoRQW6JCTATDFLayJgCjIjfwBDGN0EbaEgZNUeP4JAxS5T9XuOV5s-m0qB09olplK_QTNRCXa5vRBhHzmZUZNU3iGFwcHu-jgR1GqYl0Ze4l-BlocSFqnbU/s320/script-install.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
スクリプトのインストールで導入作業は完了。 &lt;a href=&quot;http://www.codecademy.com/&quot; target=&quot;_blank&quot;&gt;http://www.codecademy.com/&lt;/a&gt; を開けば日本語化される。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjua2VTbAYouQShb-LPtmxNdsgflQhfCPHrJBpL2A109W2FSzeU-bIlEQmNOhUWjy_TR_EainCtaeu3utGXvfd4c13zMV6XqWajGEpMTWUpfV0czNBYHGaViS7P_IhKiCnGtFK-yRjpv2U/s1600/ch05.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjua2VTbAYouQShb-LPtmxNdsgflQhfCPHrJBpL2A109W2FSzeU-bIlEQmNOhUWjy_TR_EainCtaeu3utGXvfd4c13zMV6XqWajGEpMTWUpfV0czNBYHGaViS7P_IhKiCnGtFK-yRjpv2U/s320/ch05.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
エンジョイ！</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/4821979909249974240/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/mylingual-for-codecademycom-firefox.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/4821979909249974240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/4821979909249974240'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/mylingual-for-codecademycom-firefox.html' title='Mylingual for codecademy.comの導入 - Firefox編'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh77az8nvHGH_TjBZQlWTZpiJMWti2hCK4W8jkP0OO6nY1llagc3TUZS686rqhOLYmePTnzrfnjuv1AA7XmNY33DcXHCJcxCbjomZBUKCR_6iYtvib6hVmHlnE75iGAy_TCl-Xgw0a0Urs/s72-c/ff01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-8568915397628730394</id><published>2012-01-22T18:03:00.001+09:00</published><updated>2013-10-24T19:51:25.346+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Codecademy"/><title type='text'>Mylingual for codecademy.comの導入 - Google Chrome編</title><content type='html'>Mylingual for codecademy.comとはcodecademy.comを日本語化するGreasemonkeyスクリプト。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google ChromeでMylingual for codecademy.comを使うのは簡単。次のURLでスクリプトをインストールするだけだ。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;a href=&quot;http://userscripts.org/scripts/show/123724&quot; target=&quot;_blank&quot;&gt;http://userscripts.org/scripts/show/123724&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
URLを開くとこのような画面になるのでInstallボタンを押してスクリプトをインストールする。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja9Mt5cKCCAumTlt1sof6JtkqHBsSOnthUBv3Z5UkZpQWgx_Fdr3oj-Zy_oUEBSR5Em5WN9R-khQpJrU8WfFNgpZ8WaVnzRE8IJJsZcrPCkt_ZJNQICneOAYdUY8-b0NXEN4F9mRP8QZ8/s1600/ch01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja9Mt5cKCCAumTlt1sof6JtkqHBsSOnthUBv3Z5UkZpQWgx_Fdr3oj-Zy_oUEBSR5Em5WN9R-khQpJrU8WfFNgpZ8WaVnzRE8IJJsZcrPCkt_ZJNQICneOAYdUY8-b0NXEN4F9mRP8QZ8/s320/ch01.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIXGy24gX1StBtXlw2wuhSf5y4WJ3ooqVS6JGMg8v2dmzFITcu8gfsPl6hLapiwYccCLFfNa0J95SvM3HSkX7yvyvPVilr_-T2pptfgOi8BJOfSCiNYke0zidSXq6itMrAJc-zHyrGYn4/s1600/ch01-1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;278&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIXGy24gX1StBtXlw2wuhSf5y4WJ3ooqVS6JGMg8v2dmzFITcu8gfsPl6hLapiwYccCLFfNa0J95SvM3HSkX7yvyvPVilr_-T2pptfgOi8BJOfSCiNYke0zidSXq6itMrAJc-zHyrGYn4/s320/ch01-1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8V4pj33MbY8fHno7HXDvThMgN-PT1hiJVgi0PHUnGECduZXCtMYMeXEBSlqamuyXjImMQrQQH34k8CJg0WHsAYRcQYN4rG0KA7J-VCQYpsnEK06q0qTCdf06mt4NDAdkAPIp0GE3fFWc/s1600/ch03.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;104&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8V4pj33MbY8fHno7HXDvThMgN-PT1hiJVgi0PHUnGECduZXCtMYMeXEBSlqamuyXjImMQrQQH34k8CJg0WHsAYRcQYN4rG0KA7J-VCQYpsnEK06q0qTCdf06mt4NDAdkAPIp0GE3fFWc/s320/ch03.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqvJTNKyWSAeeSrwLeU42zxDo_vTnArYHJ-EZIDlS8aJZ2F5ay5YHpYNyz2p7JIoM8TbbJ2-50bEfS6TCt1ZPJyDSnu9WnTjTyZeUHR-jx8kLX3GmRaLNBtMyVNlnvqlHwzeJkbxRXEAk/s1600/ch04.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;55&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqvJTNKyWSAeeSrwLeU42zxDo_vTnArYHJ-EZIDlS8aJZ2F5ay5YHpYNyz2p7JIoM8TbbJ2-50bEfS6TCt1ZPJyDSnu9WnTjTyZeUHR-jx8kLX3GmRaLNBtMyVNlnvqlHwzeJkbxRXEAk/s320/ch04.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
インストール後 &lt;a href=&quot;http://www.codecademy.com/&quot; target=&quot;_blank&quot;&gt;http://www.codecademy.com/&lt;/a&gt; を開くと日本語化出来ているはずだ。 &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjua2VTbAYouQShb-LPtmxNdsgflQhfCPHrJBpL2A109W2FSzeU-bIlEQmNOhUWjy_TR_EainCtaeu3utGXvfd4c13zMV6XqWajGEpMTWUpfV0czNBYHGaViS7P_IhKiCnGtFK-yRjpv2U/s1600/ch05.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjua2VTbAYouQShb-LPtmxNdsgflQhfCPHrJBpL2A109W2FSzeU-bIlEQmNOhUWjy_TR_EainCtaeu3utGXvfd4c13zMV6XqWajGEpMTWUpfV0czNBYHGaViS7P_IhKiCnGtFK-yRjpv2U/s320/ch05.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
エンジョイ！</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/8568915397628730394/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/mylingual-for-codecademycom-google.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8568915397628730394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8568915397628730394'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/mylingual-for-codecademycom-google.html' title='Mylingual for codecademy.comの導入 - Google Chrome編'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja9Mt5cKCCAumTlt1sof6JtkqHBsSOnthUBv3Z5UkZpQWgx_Fdr3oj-Zy_oUEBSR5Em5WN9R-khQpJrU8WfFNgpZ8WaVnzRE8IJJsZcrPCkt_ZJNQICneOAYdUY8-b0NXEN4F9mRP8QZ8/s72-c/ch01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-6642904476586999230</id><published>2012-01-19T09:34:00.000+09:00</published><updated>2013-10-24T19:53:00.337+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Codecademy"/><title type='text'>私はcodecademy.comの日本語翻訳を開始した</title><content type='html'>&lt;a href=&quot;http://www.codecademy.com/&quot; target=&quot;_blank&quot;&gt;http://www.codecademy.com/&lt;/a&gt; が&amp;nbsp;&lt;a href=&quot;http://codeyear.com/&quot; target=&quot;_blank&quot;&gt;http://codeyear.com/&lt;/a&gt; を軸に動き出したようだ。CodecademyはJavaScriptの初学はもちろんプログラミングの入門にも最適だ。これを英語圏だけにとどめておくにはあまりにもおしい。&lt;br /&gt;
&lt;br /&gt;
そこで勝手ながら&lt;a href=&quot;http://mylingual.net/&quot; target=&quot;_blank&quot;&gt;Mylingual&lt;/a&gt;を利用して日本語訳をあてることにした。自分の時間が許す限り翻訳していこうと思う。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;a href=&quot;http://japanize.mylingual.net/index.cgi/view?target=codecademy.com&quot; target=&quot;_blank&quot;&gt;http://japanize.mylingual.net/index.cgi/view?target=codecademy.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
まずMylingualの使い方。Mylingualは以前FirefoxのアドオンとしてJapanizeという名で配布されていた。しかし開発が滞りがちで現在のFirefoxではアドオンがインストールできない。幸いな事に同様の機能がgreasemonkeyのuserscriptで配布されている。それがMylingualである。&lt;br /&gt;
&lt;br /&gt;
しかし公式サイトで配布しているスクリプトは日本語版がない。修正は簡単だったので、日本語版スクリプトを作成・公開することにした。問題があれば公開は止めるかもしれない。以下のソースをmylingual_ja.user.jsという名称で保存しgreasemonkeyにインストールしてほしい。&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: black; color: white; padding: 0.5em;&quot;&gt;// ==UserScript==
// @name Mylingual (ja)
// @namespace http://mylingual.net/
// @author Ryo Link
// @include http://*/*
// @description Mylingual (ja)
// ==/UserScript==

(function () {
  var elem = document.createElement(&#39;script&#39;);
  elem.id = &#39;mylingual-core&#39;;
  elem.src = &#39;http://mylingual.net/userjs/mylingual-core.js?lang=ja&#39;;
  document.body.appendChild(elem);
})();
&lt;/pre&gt;
&lt;br /&gt;
このスクリプトを導入後、&lt;a href=&quot;http://www.codecademy.com/&quot; target=&quot;_blank&quot;&gt;http://www.codecademy.com/&lt;/a&gt;&amp;nbsp;を開くと(まだ一部ではあるが)日本語化されているはずだ。&lt;br /&gt;
&lt;br /&gt;
これの問題点としてMylingualが対応しているサイトは全て日本語化されてしまうところ。任意のサイトに適応させないようにする為にはuserscriptを編集するか機能拡張を作って制御するしかない。これは今後の様子を見て対応しようと思う。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;追記：&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://userscripts.org/&quot; target=&quot;_blank&quot;&gt;Userscripts.org&lt;/a&gt;でスクリプトの配布を開始、そのスクリプトをFirefoxとGoogle Chromeで導入する方法を書きました。詳しくは&lt;a href=&quot;http://ryolink.blogspot.com/p/codecademycom.html&quot;&gt;Codecademyノート&lt;/a&gt;をご覧ください。IEその他のブラウザに関しては導入方法を書くか未定。おそらくgreasemonkey相当の機能が使えるブラウザなら日本語化できると思います。だめだったらFirefoxかChrome使ってね。</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/6642904476586999230/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/codecademy.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/6642904476586999230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/6642904476586999230'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/codecademy.html' title='私はcodecademy.comの日本語翻訳を開始した'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-8194145601037210499</id><published>2012-01-17T00:19:00.000+09:00</published><updated>2012-01-18T00:28:25.680+09:00</updated><title type='text'>デスクトップアプリの一つの形。 Mozilla Labs &gt;&gt; Chromeless Browser</title><content type='html'>&lt;div style=&quot;border: 1px solid silver; margin: 0.5em; padding: 0.5em;&quot;&gt;
&lt;a href=&quot;http://japanese.engadget.com/2011/06/07/webian-shell/&quot; target=&quot;_blank&quot;&gt;動画：デスクトップを消し去るウェブブラウザ Webian Shell、Mozilla Chromeless ベース -- Engadget Japanese&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&quot;話が複雑になってきましたが、要はウェブアプリ時代を迎え、従来のデスクトップアプリを一掃するハイパーシンプルなフルスクリーンブラウザがリリースされたということ。&quot;&lt;/div&gt;
&lt;br /&gt;
古い記事だが、その当時自分は記事を鵜呑みにしてフルスクリーンブラウザが出来たんだ、くらいにしか思っていなかった。しかしMacGap、Fluidなどweb開発技術でのデスクトップアプリ作成を調べていくうちに、この記事が表面上のことにしか触れていない事がわかった。Web ShellとはChromelessのリファレンス実装でもあったのだ。&lt;br /&gt;
&lt;br /&gt;
ではChromelessとは何か？&lt;br /&gt;
&lt;br /&gt;
ChromelessとはXULRunnerアプリをhtml、javascript、cssで書けるフレームワークだ。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px solid silver; margin: 0.5em; padding: 0.5em;&quot;&gt;
&lt;span style=&quot;background-color: #e7eaec; color: rgba(0, 0, 0, 0.792969); font-family: &#39;trebuchet ms&#39;, sans-serif; font-size: 14px; line-height: 22px;&quot;&gt;The “Chromeless” project experiments with the idea of removing the current browser user interface and replacing it with a flexible platform which allows for the creation of new browser UI using standard web technologies such as HTML, CSS and JavaScript.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://mozillalabs.com/chromeless&quot; target=&quot;_blank&quot;&gt;Mozilla Labs » Chromeless Browser&lt;/a&gt;
&lt;/div&gt;
&lt;br /&gt;
XULRunnerアプリが簡単に書けるとなると俄然Chromelessに興味が湧いてきた。これはWebアプリを書くのとは本質的に違う。Thunderbird、SunbirdがChromelessで作れるという事だ。&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px solid silver; margin: 0.5em; padding: 0.5em;&quot;&gt;
&lt;b&gt;XULRunner&lt;/b&gt; とは、Firefox や Thunderbird と同じくらい多機能な XUL+XPCOM アプリケーションを単独で起動するための Mozilla ランタイムパッケージです。XULRunner はアプリケーションをインストール、アップグレード、さらにアンインストールする機能も提供しています。また、他のプロジェクトや製品への Mozilla テクノロジーの組み込みを可能にする libxul も提供します。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://developer.mozilla.org/ja/XULRunner&quot; target=&quot;_blank&quot;&gt;XULRunner - MDN&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
私が目標の一つとしているのはweb技術でのデスクトップアプリ開発。また一つJavaScriptをマスターする理由が出来た。</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/8194145601037210499/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/webian-shellmozilla-chromeless-engadget.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8194145601037210499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8194145601037210499'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/webian-shellmozilla-chromeless-engadget.html' title='デスクトップアプリの一つの形。 Mozilla Labs &gt;&gt; Chromeless Browser'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-3647427797492327021</id><published>2012-01-16T03:38:00.002+09:00</published><updated>2012-01-16T03:38:53.642+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>制御文。</title><content type='html'>JavaScriptの制御文です。一般的な制御文かと。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/1UXS/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/1UXS&quot; title=&quot;制御文&quot;&gt;制御文 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/3647427797492327021/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_16.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/3647427797492327021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/3647427797492327021'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_16.html' title='制御文。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-6144679467035247674</id><published>2012-01-14T20:09:00.001+09:00</published><updated>2012-01-14T20:19:33.997+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>オブジェクトリテラル(連想配列、ハッシュ)</title><content type='html'>ここは自分なりの解釈でエントリーを書いた。&lt;br /&gt;
&lt;br /&gt;
ハッシュはJavaScriptにおける一番単純なオブジェクトで、オブジェクトリテラルと呼ばれます。オブジェクトリテラルとは、ゼロ個以上のプロパティ名とそれに結びつけられた値のペアのリストであり、波括弧 {} でくくられているものです。 オブジェクトリテラルの表記法をベースとした軽量なデータ記述言語をJSON(JavaScript Object Notation)と呼びます。オブジェクトリテラルとJSONは似て非なるものです。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/42ok/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/42ok&quot; title=&quot;連想配列(ハッシュ)。&quot;&gt;連想配列(ハッシュ)。 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/6144679467035247674/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_1611.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/6144679467035247674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/6144679467035247674'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_1611.html' title='オブジェクトリテラル(連想配列、ハッシュ)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-4557999884492088080</id><published>2012-01-14T19:53:00.002+09:00</published><updated>2012-01-14T19:53:09.105+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>配列について。</title><content type='html'>配列の生成方法、参照と代入、操作。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/5Fwq/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/5Fwq&quot; title=&quot;配列について。&quot;&gt;配列について。 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/4557999884492088080/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_8183.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/4557999884492088080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/4557999884492088080'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_8183.html' title='配列について。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-8463090829689249453</id><published>2012-01-14T19:28:00.001+09:00</published><updated>2012-01-14T19:28:50.556+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>正規表現について。</title><content type='html'>JavaScriptにおける正規表現です。正規表現フラグ・特殊文字は&lt;a href=&quot;https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp&quot; target=&quot;_blank&quot;&gt;RegExp - MDC Docs&lt;/a&gt;にまとまっています。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
正規表現オブジェクトは以下のようにして作ります。文字列から生成する場合は， \d などの特殊文字を \\d と書かなければならないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/3VaD/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/3VaD&quot; title=&quot;正規表現について。&quot;&gt;正規表現について。 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/8463090829689249453/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_1360.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8463090829689249453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/8463090829689249453'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_1360.html' title='正規表現について。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-1484495095616030844</id><published>2012-01-14T17:53:00.001+09:00</published><updated>2012-01-14T17:53:54.675+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>文字列について。</title><content type='html'>文字列はシングルクオート( &#39; )かダブルクオート ( &quot; )で囲みます。両者は全く等価です。シングル・ダブルクオートのどちらの場合でも ¥t (タブ), ¥n (改行) などの特殊文字を利用することができます。他のスクリプト系言語にある，変数展開などの便利な機能はありません。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
文字列の基本操作サンプルコードです。
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
console.log(&#39;abc¥ndef&#39;); //¥または\でエスケープ
console.log(&#39;abc\ndef&#39;);

console.log(&#39;abc¥tdef&#39;); //¥または\でエスケープ
console.log(&#39;abc\tdef&#39;);

console.log(&quot;&#39;hogehoge&#39;&quot;);
console.log(&#39;&quot;ほげホゲ&quot;&#39;);
console.log(&#39;¥u0068¥u006f¥u0067¥u0065¥u0068¥u006f¥u0067¥u0065&#39;); //unicode
&lt;/pre&gt;
&lt;script&gt;
console.log(&#39;abc¥ndef&#39;); //¥または\でエスケープ
console.log(&#39;abc\ndef&#39;);

console.log(&#39;abc¥tdef&#39;); //¥または\でエスケープ
console.log(&#39;abc\tdef&#39;);

console.log(&quot;&#39;hogehoge&#39;&quot;);
console.log(&#39;&quot;ほげホゲ&quot;&#39;);
console.log(&#39;¥u0068¥u006f¥u0067¥u0065¥u0068¥u006f¥u0067¥u0065&#39;); //unicode
&lt;/script&gt;

&lt;br /&gt;

&lt;br /&gt;
文字列操作のサンプルコードです。
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://jsdo.it/blogparts/en21/js&quot;&gt;&lt;/script&gt;&lt;p class=&quot;ttlBpJsdoit&quot; style=&quot;width: 465px; margin: 0; text-align: right; font-size: 11px;&quot;&gt;&lt;a href=&quot;http://jsdo.it/ryo.link/en21&quot; title=&quot;文字列操作のサンプルコード。&quot;&gt;文字列操作のサンプルコード。 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/1484495095616030844/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_14.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/1484495095616030844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/1484495095616030844'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_14.html' title='文字列について。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-7226458663551027230</id><published>2012-01-12T22:41:00.001+09:00</published><updated>2012-01-12T22:41:38.709+09:00</updated><title type='text'>MacGapで出来ること。</title><content type='html'>MacGapのJavaScriptコードで出来ることをリストアップしてみた。正直まだ出来ることは少ない。具体的にはこういうことが出来る。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;// アプリケーションの終了
macgap.app.terminate();

// Activate application (前面に表示)
macgap.app.activate();

// アプリケーションを隠す
macgap.app.hide();

// アプリケーションを表示
macgap.app.unhide();

// アプリケーションウインドウサイズの変更
macgap.app.setWindowFrame({x:0,y:0,width:100,height:200})

// ビープ音を鳴らす
macgap.app.beep();

// アプリケーションのパスを取得
macgap.path.application;

// アプリケーションリソースのパスを取得
macgap.path.resource;

// サウンドを鳴らす
macgap.sound.play(&quot;./my/sound.mp3&quot;)

// システムサウンドを鳴らす
macgap.sound.playSystem(&quot;funk&quot;);

// Growl通知を送る
macgap.growl.notify({
  title: &quot;Notify&quot;,
  content: &quot;New Message!&quot;
});

// ドッグアイコンにバッジを設定
macgap.dock.badge = &quot;10&quot;;
&lt;/pre&gt;
&lt;br /&gt;
この程度であれば最新のGoogle Chromeで同じようなことが出来る。ドッグアイコンにバッジの設定はさすがに出来ないが、通知は出来るので実質問題ないであろう。&lt;br /&gt;
&lt;br /&gt;
さて、どちらを使ってアプリケーション開発をすべきなのか？正直自分も迷っている。一つの判断材料として、リソースのアクセスがある。ChromeはFile APIの実装がされておりファイルシステムにアクセスできる。いずれはWebKitフレームワークでも出来るかもしれない。自分としてはSpotlightインポータが使えるようになりたい。それが出来るようになればもうMacGap一択なのだが。&lt;br /&gt;
&lt;br /&gt;
Spotlightインポータの実装ができるか検討してみよう。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/7226458663551027230/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/macgap.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/7226458663551027230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/7226458663551027230'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/macgap.html' title='MacGapで出来ること。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-1081361282754049841</id><published>2012-01-12T21:29:00.000+09:00</published><updated>2012-01-12T21:35:20.163+09:00</updated><title type='text'>XcodeでWebKitアプリ。</title><content type='html'>昨日のエントリー「&lt;a href=&quot;http://ryolink.blogspot.com/2012/01/macgapuki.html&quot; target=&quot;_blank&quot;&gt;MacGapとUKI。&lt;/a&gt;」が気になってソースを追いかけた。なかなか良かった。もうMacGapを使う事になるだろうけど、独自でWebKitフレームワークを組み込んだアプリを作る時のメモとして簡単な手順をブログに残しておく。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;作り方の手順。&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Xcodeで新規プロジェクト作成。プロジェクトテンプレートはCocoa Aplicationを選択。&lt;/li&gt;
&lt;li&gt;任意のプロジェクト情報を記入。&lt;/li&gt;
&lt;li&gt;TARGETSでアプリを選択、SummaryのLinked Frameworks and LibrariesでWebKit.framewokを追加。&lt;/li&gt;
&lt;li&gt;MainMenu.xibをクリック。続いてWindowをクリック。&lt;/li&gt;
&lt;li&gt;Object LibraryでWeb Viewを選択しウインドウに張り付け。&lt;/li&gt;
&lt;li&gt;Size inspectorでリサイズ可能に設定。&lt;/li&gt;
&lt;li&gt;アプリを開いた時に設定したURLを開くにはコーディングが必要。参考URL「How to launch a web page on opening of the application」&lt;a href=&quot;http://stackoverflow.com/questions/8599175/how-to-launch-a-web-page-on-opening-of-the-application&quot; target=&quot;_blank&quot;&gt;http://stackoverflow.com/questions/8599175/how-to-launch-a-web-page-on-opening-of-the-application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;コーディング後、MainMenu.xibでコード内容をWev Viewにコネクトする。&lt;/li&gt;
&lt;/ol&gt;
設定したURLを開くサンプルコードを載せておく。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;AppDelegate.h&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;//
//  AppDelegate.h
//  MyWebBrowser
//
//  Created by ryo on 12/01/12.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import &amp;lt;Cocoa/Cocoa.h&amp;gt;
#import &amp;lt;WebKit/WebKit.h&amp;gt;

@interface AppDelegate : NSObject &amp;lt;NSApplicationDelegate&amp;gt;

@property (assign) IBOutlet NSWindow *window;
@property (retain, nonatomic) IBOutlet WebView *webview;

@end
&lt;/pre&gt;
&lt;b&gt;AppDelegate.m(httpプロトコル)&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;//
//  AppDelegate.m
//  MyWebBrowser
//
//  Created by ryo on 12/01/12.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import &quot;AppDelegate.h&quot;

@implementation AppDelegate

@synthesize window = _window;
@synthesize webview = _webview;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSString *urlAddress = @&quot;https://docs.google.com/?browserok=true&quot;;
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [[self.webview mainFrame] loadRequest:requestObj];
}

@end
&lt;/pre&gt;
&lt;b&gt;AppDelegate.m(ローカルリソース)&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;//
//  AppDelegate.m
//  MyWebBrowser
//
//  Created by ryo on 12/01/12.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import &quot;AppDelegate.h&quot;

@implementation AppDelegate

@synthesize window = _window;
@synthesize webview = _webview;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSString *filepath = [[NSBundle mainBundle] pathForResource:@&quot;index&quot; ofType:@&quot;html&quot; inDirectory:@&quot;public_html&quot;];
    NSURL *url = [NSURL fileURLWithPath:filepath];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [[self.webview mainFrame] loadRequest:requestObj]; 
}

@end
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/1081361282754049841/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/xcodewebkit.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/1081361282754049841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/1081361282754049841'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/xcodewebkit.html' title='XcodeでWebKitアプリ。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-2707259791352368560</id><published>2012-01-12T00:28:00.001+09:00</published><updated>2012-01-12T00:39:10.274+09:00</updated><title type='text'>MacGapとUKI。</title><content type='html'>&lt;blockquote class=&quot;tr_bq&quot;&gt;
HTML5/CSS3/JavaScriptでMac OS Xのネイティブ・アプリケーションが作れる「MacGap」が公開されています。&lt;/blockquote&gt;
&lt;a href=&quot;http://dothtml5.com/archives/20120111_macgap.html&quot;&gt;HTML5でMacのネイティブアプリが作れる「MacGap」 :: dotHTML5&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Windows8から同様にネイティブアプリが作れるようになるらしい。Macでもいずれ出来るだろうと思ってたけど丁度タイミングよく出てきた。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;この手の物はモバイルアプリが流行りだしてから幾つか出てきている。ちょっと問題なのはUIがWebそのものだったりする。どうせなら見栄えもネイティブに近い方がいい。&lt;br /&gt;
&lt;br /&gt;
Macのネイティブに近い見栄えのフレームワークと言えば&lt;a href=&quot;http://sproutcore.com/&quot; target=&quot;_blank&quot;&gt;SproutCore&lt;/a&gt;があったのだが、facebookに買収されてからOSXらしくなくなってしまった。他にも何かないかと探したところUKI(&lt;a href=&quot;http://ukijs.org/&quot; target=&quot;_blank&quot;&gt;http://ukijs.org/&lt;/a&gt;)というものがあった。デモとしてメーラー(&lt;a href=&quot;http://ukijs.org/mail/index.html&quot; target=&quot;_blank&quot;&gt;http://ukijs.org/mail/index.html&lt;/a&gt;)があったがもうまさにOSXのネイティブの見栄え。早速試したので出来たもののスクリーンショットを掲載しておく。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBXGMna8UIedDCOAgNwu9tz6-Rq99SZNuJXJ2g-YGibm0ehhtAJE3NsD904KOExB6nWwHIFkwwAAhmPHw7PUTU8PaPOIA1ui9-njnhyphenhyphenzAEODlWv_fVH2gGTYYILXghDS0eN7Dx2-4GFHY/s1600/macgap%252Buki.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBXGMna8UIedDCOAgNwu9tz6-Rq99SZNuJXJ2g-YGibm0ehhtAJE3NsD904KOExB6nWwHIFkwwAAhmPHw7PUTU8PaPOIA1ui9-njnhyphenhyphenzAEODlWv_fVH2gGTYYILXghDS0eN7Dx2-4GFHY/s320/macgap%252Buki.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
ウェブサービスのアプリはこれで十分かもしれない。</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/2707259791352368560/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/macgapuki.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/2707259791352368560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/2707259791352368560'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/macgapuki.html' title='MacGapとUKI。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBXGMna8UIedDCOAgNwu9tz6-Rq99SZNuJXJ2g-YGibm0ehhtAJE3NsD904KOExB6nWwHIFkwwAAhmPHw7PUTU8PaPOIA1ui9-njnhyphenhyphenzAEODlWv_fVH2gGTYYILXghDS0eN7Dx2-4GFHY/s72-c/macgap%252Buki.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-7550435692587569425</id><published>2012-01-11T13:31:00.002+09:00</published><updated>2012-01-14T17:08:55.481+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>数値について。</title><content type='html'>JavaScript の数値は全てが実数型です。整数型という概念はありません。JavaScript の数値は全てが実数型です。整数型という概念はありません。数値演算、代入演算子、インクリメント、デクリメント、演算子について述べます。&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/3gLI/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/3gLI&quot; title=&quot;数値について。&quot;&gt;数値について。 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
演算子は以下の通りです。&lt;br /&gt;
&lt;style&gt;
table {border-collapse: collapse;border-spacing: 0;}
table, th, td{border:1px solid gray;margin: 1em;padding: 0.5em;}
&lt;/style&gt;
&lt;br /&gt;
&lt;table&gt;
  &lt;tbody&gt;
&lt;tr&gt;
  &lt;th&gt;演算子の種類&lt;/th&gt;&lt;th&gt;個々の演算子&lt;/th&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;メンバ&lt;/td&gt;&lt;td&gt;. &amp;nbsp;[]&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;インスタンスの呼び出し/作成&lt;/td&gt;&lt;td&gt;() &amp;nbsp;new&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;否定/インクリメント&lt;/td&gt;&lt;td&gt;! &amp;nbsp;~ &amp;nbsp;- &amp;nbsp;+ &amp;nbsp;++ &amp;nbsp;-- &amp;nbsp;typeof &amp;nbsp;void &amp;nbsp;delete&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;乗算/除算&lt;/td&gt;&lt;td&gt;* &amp;nbsp;/ &amp;nbsp;%&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;加算/減算&lt;/td&gt;&lt;td&gt;+ &amp;nbsp;-&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ビットシフト&lt;/td&gt;&lt;td&gt;&amp;lt;&amp;lt; &amp;nbsp;&amp;gt;&amp;gt; &amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;関係&lt;/td&gt;&lt;td&gt;&amp;lt; &amp;nbsp;&amp;lt;= &amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;= &amp;nbsp;in &amp;nbsp;instanceof&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;等価&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
== &amp;nbsp;!= &amp;nbsp;評価時に自動型変換される&lt;br /&gt;
=== &amp;nbsp;!== 自動型変換なし&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ビットごとの and&lt;/td&gt;&lt;td&gt;&amp;amp;&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ビットごとの xor&lt;/td&gt;&lt;td&gt;^&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;ビットごとの or&lt;/td&gt;&lt;td&gt;|&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;論理積&lt;/td&gt;&lt;td&gt;&amp;amp;&amp;amp;&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;論理和&lt;/td&gt;&lt;td&gt;||&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;条件&lt;/td&gt;&lt;td&gt;?:&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;代入&lt;/td&gt;&lt;td&gt;= &amp;nbsp;+= &amp;nbsp;-= &amp;nbsp;*= &amp;nbsp;/= &amp;nbsp;%= &amp;nbsp;&amp;lt;&amp;lt;= &amp;nbsp;&amp;gt;&amp;gt;= &amp;nbsp;&amp;gt;&amp;gt;&amp;gt;= &amp;nbsp;&amp;amp;= &amp;nbsp;^= &amp;nbsp;|=&lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;コンマ&lt;/td&gt;&lt;td&gt;,&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/7550435692587569425/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_6514.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/7550435692587569425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/7550435692587569425'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_6514.html' title='数値について。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-5261842975031337046</id><published>2012-01-11T13:12:00.000+09:00</published><updated>2012-01-14T17:08:43.164+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>変数の宣言。</title><content type='html'>JavaScriptにおける変数の宣言です。var で宣言します。変数に型はありません。varで宣言しない場合はグローバル変数となります。既に宣言した変数に改めてvarで宣言してもエラーにはなりません。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/pGhC/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/pGhC&quot; title=&quot;変数の宣言&quot;&gt;変数の宣言 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/5261842975031337046/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_11.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/5261842975031337046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/5261842975031337046'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_11.html' title='変数の宣言。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-7101461995797898783</id><published>2012-01-11T13:01:00.000+09:00</published><updated>2012-01-14T17:08:33.290+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>JavaScriptの基礎。</title><content type='html'>JavaScript基礎文法最速マスターを参考に基本を書いてみる。内容は出力、コメント、文法チェック。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
既にHello World(&lt;a href=&quot;http://jsdo.it/ryo.link/eS5r&quot; target=&quot;_blank&quot;&gt;http://jsdo.it/ryo.link/eS5r&lt;/a&gt;)で書いたことなので、そちらにコメント等を追加。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/eS5r/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/eS5r&quot; title=&quot;Hello World&quot;&gt;Hello World - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/7101461995797898783/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/javascript.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/7101461995797898783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/7101461995797898783'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/javascript.html' title='JavaScriptの基礎。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-984553219052465558</id><published>2012-01-10T22:26:00.000+09:00</published><updated>2012-01-14T17:08:19.026+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>前準備としてputs()を作る。</title><content type='html'>前回のブログで書いたように最速マスターのまえがきを自分なりにまとめようとしたが、まとめるまでもないのと内容にちょっと不満があるので自分なりの前書きを。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ブラウザを実行環境としたJavaScriptは標準出力がない。&lt;br /&gt;
&lt;br /&gt;
うん、これはわかる。だからと言ってhtmlも同時に復習するのも面倒。なのでここは&lt;a href=&quot;http://blog.livedoor.jp/dankogai/archives/50940883.html&quot; target=&quot;_blank&quot;&gt;小飼弾さんにならって&lt;/a&gt;標準出力代わりのputs()を作る事にした。そんな大げさなものでもないけど。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/jsJb/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/puts&quot; title=&quot;puts()&quot;&gt;puts() - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
とこんな感じで。
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そして他のサンプルで使う時はこのputs()のコードをjsdo.itで新規にコードを書いた際にJavaScriptソースとして読み込み、htmlにはidがworldのdiv要素を書けばそこにputs()で指定した内容が表示される。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/eS5r/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/eS5r&quot; title=&quot;Hello World&quot;&gt;Hello World - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
こんな小さな工夫だけど、これでDOMは今のところ気にせずJavaScriptの復習に集中できる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/984553219052465558/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/puts.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/984553219052465558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/984553219052465558'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/puts.html' title='前準備としてputs()を作る。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-4917074829007631421</id><published>2012-01-10T21:54:00.001+09:00</published><updated>2012-01-14T17:07:19.906+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript基礎文法最速マスター"/><title type='text'>復習項目。</title><content type='html'>幸いな事にウェブにはよくまとめられたドキュメントがあったので、そちらを利用して進めていこうと思う。&lt;br /&gt;
&lt;br /&gt;
JavaScript基礎文法最速マスター&lt;br /&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/gifnksm/20100131/1264934942&quot; target=&quot;_blank&quot;&gt;http://d.hatena.ne.jp/gifnksm/20100131/1264934942&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
最速マスターシリーズというものらしく、他の言語も多くあるようだ。いつか他の言語もチャレンジしてみよう。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
見出しをピックアップしてみた。&lt;br /&gt;
&lt;br /&gt;
まえがき&lt;br /&gt;
JavaScript の標準仕様&lt;br /&gt;
JavaScript の実行 (ブラウザ編)&lt;br /&gt;
JavaScript の実行 (ブラウザ以外編)&lt;br /&gt;
基礎&lt;br /&gt;
print文&lt;br /&gt;
コメント&lt;br /&gt;
文法チェック&lt;br /&gt;
文&lt;br /&gt;
変数の宣言&lt;br /&gt;
数値&lt;br /&gt;
数値演算&lt;br /&gt;
代入演算子とインクリメント・デクリメント&lt;br /&gt;
文字列&lt;br /&gt;
文字列操作&lt;br /&gt;
配列&lt;br /&gt;
配列の参照と代入&lt;br /&gt;
要素の個数&lt;br /&gt;
配列の操作&lt;br /&gt;
連想配列 (のようなもの)&lt;br /&gt;
制御文&lt;br /&gt;
if文&lt;br /&gt;
if-else文&lt;br /&gt;
while文&lt;br /&gt;
for文&lt;br /&gt;
for in文&lt;br /&gt;
for each文 (Firefoxのみ対応)&lt;br /&gt;
Array#forEach (最近のブラウザのみ対応)&lt;br /&gt;
switch文&lt;br /&gt;
関数&lt;br /&gt;
ファイル入出力&lt;br /&gt;
正規表現&lt;br /&gt;
検索&lt;br /&gt;
置換&lt;br /&gt;
例外処理&lt;br /&gt;
JavaScriptのオブジェクト指向&lt;br /&gt;
オブジェクトの定義&lt;br /&gt;
メソッド&lt;br /&gt;
クラスのようなもの&lt;br /&gt;
継承&lt;br /&gt;
雑多なtips&lt;br /&gt;
真偽値&lt;br /&gt;
==と===&lt;br /&gt;
変数のスコープ&lt;br /&gt;
thisの指す物&lt;br /&gt;
既存のオブジェクトの拡張&lt;br /&gt;
既存のオブジェクト拡張の落とし穴&lt;br /&gt;
JavaScript参考資料&lt;br /&gt;
&lt;br /&gt;
ざっとこんな感じだ。前書きから自分なりにまとめてみようか。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/4917074829007631421/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_10.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/4917074829007631421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/4917074829007631421'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post_10.html' title='復習項目。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1516288005274500144.post-5291174368994410811</id><published>2012-01-10T20:31:00.004+09:00</published><updated>2012-01-11T12:46:39.129+09:00</updated><title type='text'>ブログを始める。</title><content type='html'>今日からブログを始める。内容はJavaScriptを中心としたプログラミングで。最初は復習を行い、html5に向けての準備、サーバーサイド node.js を学び、最終的に何かアプリを作る。このブログはその過程を記録していく。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
まずは環境の整備。と言っても何かをインストールすることはせず、ブラウザだけでやっていく。ブラウザがあればどこからでもプログラミングをできるようにね。&lt;br /&gt;
&lt;br /&gt;
そこで利用するサービスが&amp;nbsp;&lt;a href=&quot;http://c9.io/&quot; target=&quot;_blank&quot;&gt;Cloud9 IDE&lt;/a&gt;というもの。node.jsで作られたアプリケーションだ。このサービスを利用するのにそのまま登録してもいいが、後々の事も考えて &lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt; のアカウントも取得しておく。github アカウントでCloug9にログインできるんだ。&lt;br /&gt;
&lt;br /&gt;
登録方法は簡単なので特に説明はしない。github アカウントが取得できたら Cloud9 のトップページを開き「Sign up Today!」の下にある github アイコンをクリック。アクセスを許可すればCloud9の利用が可能になる。&lt;br /&gt;
&lt;br /&gt;
あと学習用に &lt;a href=&quot;http://jsdo.it/&quot; target=&quot;_blank&quot;&gt;jsdo.it&lt;/a&gt; も利用する。ブログに埋め込みできるかな？&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://jsdo.it/blogparts/co7t/js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div class=&quot;ttlBpJsdoit&quot; style=&quot;font-size: 11px; margin: 0; text-align: right; width: 465px;&quot;&gt;
&lt;a href=&quot;http://jsdo.it/ryo.link/co7t&quot; title=&quot;2012-01-10 1st&quot;&gt;2012-01-10 1st - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
無事に埋め込めた。テーマが新しいやつだと表示されないのでブログの設定に注意が必要だった。&lt;br /&gt;
&lt;br /&gt;
それじゃ早速始めてみようか。</content><link rel='replies' type='application/atom+xml' href='http://ryolink.blogspot.com/feeds/5291174368994410811/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/5291174368994410811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1516288005274500144/posts/default/5291174368994410811'/><link rel='alternate' type='text/html' href='http://ryolink.blogspot.com/2012/01/blog-post.html' title='ブログを始める。'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>