<?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-1199537066454887912</id><updated>2024-08-30T23:19:25.130+09:00</updated><category term="android"/><category term="Node.js"/><category term="PHP"/><category term="CakePHP"/><category term="javascript"/><category term="セキュリティ"/><category term="Facebook"/><category term="Sails.js"/><category term="Twitter"/><category term="BaasBox"/><category term="Webサービス"/><category term="eclipse"/><category term="mBaas"/><category term="C#"/><category term="Googleトレンド"/><category term="MySQL"/><category term="Ruby on Rails"/><category term="Visual Studio Code"/><category term="プログラミング"/><category term="企画"/><title type='text'>ちくわのあなから花が咲く。</title><subtitle type='html'>androidのことやら気のついたことやら</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-6993639942573750320</id><published>2016-01-02T19:45:00.000+09:00</published><updated>2016-01-02T20:19:02.157+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="Googleトレンド"/><title type='text'>android：Googleトレンドから急上昇ワードを取得する</title><content type='html'>&lt;a href=&quot;https://www.blogger.com/$20160102193117[5].png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/$20160102193117[5].png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;androidアプリ内でGoogleトレンドの急上昇ワードを扱う。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Googleトレンドへのアクセスは、AsyncTaskLoaderを使用して非同期で通信する。 
&lt;/li&gt;
&lt;li&gt;Googleトレンドから取得したXMLのパースはXmlPullParserで解析する。 
&lt;/li&gt;
&lt;li&gt;取得したワードはリストビュー(ListView)で表示する。&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;MainActivity&lt;/u&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.googletrendaccesssample;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.util.Xml;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import org.xmlpull.v1.XmlPullParser;

import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks&amp;lt;String&amp;gt; {
    private final String GOOGLETREND_URL = &quot;http://www.google.co.jp/trends/hottrends/atom/hourly&quot;;
    private final String ENCODING = &quot;UTF-8&quot;;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Googleトレンドからワードを取得(非同期)
        getSupportLoaderManager().initLoader(0, null, this);

    }

    @Override
    public Loader&amp;lt;String&amp;gt; onCreateLoader(int id, Bundle args) {
        // GoogleトレンドにアクセスするAsyncTaskLoaderを返す
        return new HttpAccessingTaskLoader(this, GOOGLETREND_URL);
    }

    @Override
    public void onLoadFinished(Loader&amp;lt;String&amp;gt; loader, String data) {
        // Googleトレンドから取得したXMLから、CDATAの部分を抽出
        String htmlData = getHtmlData(data);

        // CDATAからワードを抽出
        List&amp;lt;String&amp;gt; words = getListData(htmlData);

        // リストビューのアダプタを作成、Googleトレンドのワードを設定
        ArrayAdapter&amp;lt;String&amp;gt; adapter = new ArrayAdapter&amp;lt;String&amp;gt;(this, android.R.layout.simple_list_item_1, words);

        // リストビューにアダプタを設定
        ListView view = (ListView)findViewById(R.id.listView);
        view.setAdapter(adapter);
    }

    @Override
    public void onLoaderReset(Loader&amp;lt;String&amp;gt; loader) {
    }

    /**
     * Googleトレンドから取得したXMLデータから、CDATAの部分を抽出する
     * @param data 解析するXMLデータ
     * @return CDATA内のHTMLデータ
     */
    private String getHtmlData(String data) {
        String htmlData = &quot;&quot;;
        try {
            // Xmlパーサで解析
            XmlPullParser xmlPullParser = Xml.newPullParser();
            xmlPullParser.setInput(new ByteArrayInputStream(data.getBytes(ENCODING)), ENCODING);
            int eventType;
            String tagName;
            while((eventType = xmlPullParser.next()) != XmlPullParser.END_DOCUMENT) {
                if(eventType == XmlPullParser.START_TAG) {
                    tagName = xmlPullParser.getName();

                    // contentタグの中身を抽出する
                    if(tagName.equals(&quot;content&quot;)) {
                        htmlData = xmlPullParser.nextText();
                        break;
                    }
                }
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }

        return htmlData;
    }

    /**
     * CDATA内のHTMLからワードを抽出する
     * @param htmlData 解析するHTMLデータ
     * @return 抽出したワードのリスト
     */
    private List&amp;lt;String&amp;gt; getListData(String htmlData) {
        List&amp;lt;String&amp;gt; listData = new ArrayList&amp;lt;String&amp;gt;();

        try {
            // HTMLでもXmlパーサで解析可能
            XmlPullParser xmlPullParser = Xml.newPullParser();
            xmlPullParser.setInput(new ByteArrayInputStream(htmlData.getBytes(ENCODING)), ENCODING);

            // content内の構造は下記
            // &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;&amp;lt;a&amp;gt;データ&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;
            int eventType;
            String tagName;
            String word;
            boolean inLi = false;
            boolean inSpan = false;
            while((eventType = xmlPullParser.next()) != XmlPullParser.END_DOCUMENT) {
                switch(eventType) {
                    case XmlPullParser.START_TAG:
                        tagName = xmlPullParser.getName();
                        if(tagName.equals(&quot;li&quot;)) {
                            inLi = true;
                            break;
                        }
                        if(inLi != true) {
                            break;
                        }

                        // &amp;lt;Li&amp;gt;タグ内部のみ以下を実施

                        if(tagName.equals(&quot;span&quot;)) {
                            inSpan = true;
                            break;
                        }
                        if(inSpan != true) {
                            break;
                        }

                        // &amp;lt;span&amp;gt;タグ内部のみ以下を実施

                        if(tagName.equals(&quot;a&quot;)) {
                            // ワードを抽出
                            word = xmlPullParser.nextText();
                            listData.add(word);
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        tagName = xmlPullParser.getName();
                        if(tagName.equals(&quot;li&quot;)) {
                            inLi = false;
                        }
                        else if(tagName.equals(&quot;span&quot;)) {
                            inSpan = false;
                        }
                        break;
                }
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }

        return listData;
    }
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;AsyncTaskLoader&lt;/u&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.googletrendaccesssample;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

/**
 * Created by junichi on 2016/01/02.
 */
public class HttpAccessingTaskLoader extends AsyncTaskLoader&amp;lt;String&amp;gt; {
    private String mUrl;

    public HttpAccessingTaskLoader(Context context, String url) {
        super(context);
        mUrl = url;
    }

    @Override
    public String loadInBackground() {
        String result = &quot;&quot;;

        try {
            // URL
            URL url = new URL(mUrl);

            // 接続
            URLConnection connection = url.openConnection();

            // 結果を文字列で返す
            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line;
            while((line = br.readLine()) != null) {
                sb.append(line);
            }
            result = sb.toString();
        }
        catch(Exception e) {
            e.printStackTrace();
        }

        return result;
    }

    @Override
    protected void onStartLoading() {
        forceLoad();
    }
}


&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;レイアウト&lt;/u&gt;&lt;/h2&gt;
&lt;br /&gt;
リストビューだけ。
&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;&lt;a href=&quot;https://www.blogger.com/$20160102193117[5].png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout
    xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;net.kuttya.googletrendaccesssample.MainActivity&quot;&amp;gt;

    &amp;lt;ListView
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:id=&quot;@+id/listView&quot;
        android:layout_alignParentLeft=&quot;true&quot;
        android:layout_alignParentStart=&quot;true&quot;
        android:layout_alignParentTop=&quot;true&quot;/&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;AndroidManifest.xml&lt;/u&gt;&lt;/h2&gt;
&lt;br /&gt;
パーミッションの追加を忘れずに。
&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;manifest package=&quot;net.kuttya.googletrendaccesssample&quot;
          xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;

    &amp;lt;application
        android:allowBackup=&quot;true&quot;
        android:icon=&quot;@mipmap/ic_launcher&quot;
        android:label=&quot;@string/app_name&quot;
        android:supportsRtl=&quot;true&quot;
        android:theme=&quot;@style/AppTheme&quot;&amp;gt;
        &amp;lt;activity android:name=&quot;.MainActivity&quot;&amp;gt;
            &amp;lt;intent-filter&amp;gt;
                &amp;lt;action android:name=&quot;android.intent.action.MAIN&quot;/&amp;gt;

                &amp;lt;category android:name=&quot;android.intent.category.LAUNCHER&quot;/&amp;gt;
            &amp;lt;/intent-filter&amp;gt;
        &amp;lt;/activity&amp;gt;
    &amp;lt;/application&amp;gt;

    &amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&amp;gt;&amp;lt;/uses-permission&amp;gt;

&amp;lt;/manifest&amp;gt;

&lt;/pre&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;実行結果&lt;/u&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNEX938QnS7cCDYEqUQakELZhM_xzbZDeWEs4UN4NQsgBajh2mg8ktVY_EM-sFRw1H2o5UmwMc2RTuEgUYM_ikDPtoaT2Hm0bzPUT3n2cOtX0ovpfbgx3bmg-kq_mO6kMjM7SZOtO4HO8/s1600/20160102193117.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNEX938QnS7cCDYEqUQakELZhM_xzbZDeWEs4UN4NQsgBajh2mg8ktVY_EM-sFRw1H2o5UmwMc2RTuEgUYM_ikDPtoaT2Hm0bzPUT3n2cOtX0ovpfbgx3bmg-kq_mO6kMjM7SZOtO4HO8/s640/20160102193117.png&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/6993639942573750320/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2016/01/androidgoogle.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6993639942573750320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6993639942573750320'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2016/01/androidgoogle.html' title='android：Googleトレンドから急上昇ワードを取得する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEjNEX938QnS7cCDYEqUQakELZhM_xzbZDeWEs4UN4NQsgBajh2mg8ktVY_EM-sFRw1H2o5UmwMc2RTuEgUYM_ikDPtoaT2Hm0bzPUT3n2cOtX0ovpfbgx3bmg-kq_mO6kMjM7SZOtO4HO8/s72-c/20160102193117.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-5108592594586884356</id><published>2015-11-24T22:03:00.001+09:00</published><updated>2015-11-24T22:15:25.848+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio Code"/><title type='text'>Linux(CentOS7)にVisual Studio Codeをインストールし、C#アプリを実行する</title><content type='html'>&lt;p&gt;CentOS7にVisual Studio Codeをインストールし、C#アプリケーションをデバッグする。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・CentOS 7&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;インストールするもの&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールするものは以下。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Visual Studio Code&amp;nbsp; &lt;li&gt;Mono  &lt;li&gt;DNVM、DNX  &lt;li&gt;Node.js&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Visual Studio Code単体ではコンパイルできないため、LinuxでのC#実行環境であるDNX、DNXの動作に必要なMonoのインストールが必要となる。&lt;br&gt;DNVMは.NETのバージョン管理で、DNXをインストールするのに必要となる。&lt;br&gt;Node.jsは、Visual Studio Codeのインテリセンスに必要となる。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Monoのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;MonoをLinuxのインストール用ページに記載されている方法でインストールする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://software.opensuse.org/download/package?project=home:tpokorra:mono&amp;amp;package=mono-opt&quot;&gt;software.opensuse.org: Install package home:tpokorra:mono / mono-opt&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-Fx4vda6tVBM/VlRgES3UMLI/AAAAAAAACxE/g8v2bFc_oXU/s1600-h/201511210003454.png&quot;&gt;&lt;img title=&quot;20151121000345&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151121000345&quot; src=&quot;http://lh3.googleusercontent.com/-dqFC4r1wpQc/VlRgE-xjFxI/AAAAAAAACxI/Zv3WDEkUQkQ/20151121000345_thumb1.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;268&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ウェブブラウザで上記のページを開いた後、CentOSをクリックする。&lt;br&gt;上の画像のように、インストール方法が表示される。&lt;br&gt;記載されているコマンドを実行する。&lt;/p&gt;&lt;pre&gt;% cd /etc/yum.repos.d/&lt;br /&gt;% wget http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-7/home:tpokorra:mono.repo&lt;br /&gt;% yum install mono-opt&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;monoのインストール中、何度かYes/Noの入力を促されるため、「ｙ 」を入力する。 &lt;br&gt;インストール完了後、環境変数MONO_HOMEを設定し、Monoのコマンドを実行可能にする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% vi /etc/profile.d/mono.sh &lt;br /&gt;&lt;p&gt;#!/bin/bash&lt;br&gt;MONO_HOME=/opt/mono&lt;br&gt;PATH=$PATH:$MONO_HOME/bin&lt;br&gt;export PATH MONO_HOME&lt;br&gt;export CLASSPATH=. &lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;設定用のシェルに実行権限を与える。 &lt;br /&gt;&lt;p&gt;% chmod +x /etc/profile.d/mono.sh &lt;br /&gt;&lt;p&gt;環境変数を有効にする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% source /etc/profile.d/mono.sh&lt;/p&gt;&lt;br /&gt;&lt;p&gt;インストールが完了していることの確認として、バージョンを表示する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% mono --version&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;DNVM、DNXのインストール&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;DNVMを下記のコマンドでインストールする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh &amp;amp;&amp;amp; source ~/.dnx/dnvm/dnvm.sh&lt;/p&gt;&lt;br /&gt;&lt;p&gt;インストールが完了していることの確認として、バージョンを表示する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% dnvm -v&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;DNXを下記のコマンドでインストールする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% dnvm upgrade -r mono&lt;/p&gt;&lt;br /&gt;&lt;p&gt;インストールが完了していることの確認として、バージョンを表示する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% dnx --version&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;Node.jsのインストール&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Node.jsを下記のコマンドでインストールする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% yum install epel-release&lt;br&gt;% yum install nodejs&lt;/p&gt;&lt;br /&gt;&lt;p&gt;インストールが完了していることの確認として、バージョンを表示する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% node -v&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;Visual Studio Codeのインストール&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;VisualStudioのサイトからダウンロードする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code - Code Editing. Redefined.&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://lh3.googleusercontent.com/-C7LIkKgd_4o/VlRgFRMb5KI/AAAAAAAACxM/Pf0o_xZacow/s1600-h/201511221451554.png&quot;&gt;&lt;img title=&quot;20151122145155&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151122145155&quot; src=&quot;http://lh3.googleusercontent.com/-I7LhHeKUOEU/VlRgF5Hr9RI/AAAAAAAACxQ/oKg44o83gXQ/20151122145155_thumb1.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;319&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;ダウンロード後、zipファイルを展開する。&lt;br&gt;展開したディレクトリ内の「Code」というシェルファイルを実行することによって、VisualStudioCodeが起動する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;a href=&quot;http://lh3.googleusercontent.com/-q8_R8OMdvWg/VlRgGaRC7zI/AAAAAAAACxU/Il86Bt4Ccgc/s1600-h/20151123004245%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151123004245&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151123004245&quot; src=&quot;http://lh3.googleusercontent.com/--YiUzQeZJKI/VlRgG-GYBhI/AAAAAAAACxc/IaEPc2lHEFY/20151123004245_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;378&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;u&gt;&lt;strong&gt;C#プロジェクトの作成、実行、デバッグ&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;ここから、C#アプリケーションのプロジェクト、コードを作成する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Visual Studio Codeの左上のアイコン「Explore」を押し、「Open Folder」を押す。&lt;br&gt;任意のフォルダを作成する。&lt;br&gt;ここでは、「HelloWorld」というフォルダを作成することにする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;作成したフォルダ名の横のアイコン「New File」を押し、csファイルを作成する。&lt;br&gt;ここでは、「HelloWorld.cs」というファイルを作成することにする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;HelloWorld.csに下記のコードを記述する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9909cfbb-021e-43ac-8de4-c3849909f3e6&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:c#&quot;&gt;using System;&lt;br /&gt;&lt;br /&gt;namespace HelloWorld&lt;br /&gt;{&lt;br /&gt; public class HelloWorld&lt;br /&gt; {&lt;br /&gt;  static public void Main()&lt;br /&gt;  {&lt;br /&gt;   Console.WriteLine(&quot;Hello World&quot;);&lt;br /&gt;   Console.ReadKey();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;次に、作成したフォルダ名の横のアイコン「New File」を押し、csprojファイルを作成する。&lt;br&gt;ここでは、「HelloWorld.csproj」というファイルを作成することにする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;HelloWorld.csprojに下記の設定内容を記述する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:32242646-78a2-4709-9984-256abf9f7d7b&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:xml&quot;&gt;&amp;lt;Project DefaultTargets = &quot;Build&quot;&lt;br /&gt;    xmlns=&quot;http://schemas.microsoft.com/developer/msbuild/2003&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- Specify the inputs by type and file name --&amp;gt;&lt;br /&gt;    &amp;lt;ItemGroup&amp;gt;&lt;br /&gt;        &amp;lt;CSFile Include = &quot;HelloWorld.cs&quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/ItemGroup&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;Target Name = &quot;Build&quot;&amp;gt;&lt;br /&gt;        &amp;lt;!-- Run the Visual C# compilation using input files of type CSFile --&amp;gt;&lt;br /&gt;        &amp;lt;CSC  Sources = &quot;@(CSFile)&quot;&lt;br /&gt;            DebugType=&quot;full&quot;&lt;br /&gt;            Optimize=&quot;no&quot;&lt;br /&gt;            OutputAssembly=&quot;HelloWorld.exe&quot; &amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;!-- Set the OutputAssembly attribute of the CSC task to the name of the executable file that is created --&amp;gt;&lt;br /&gt;            &amp;lt;Output TaskParameter=&quot;OutputAssembly&quot;&lt;br /&gt;                ItemName = &quot;EXEFile&quot; /&amp;gt;&lt;br /&gt;        &amp;lt;/CSC&amp;gt;&lt;br /&gt;    &amp;lt;/Target&amp;gt;&lt;br /&gt;&amp;lt;/Project&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;プロジェクトファイルができたので、ビルドする。&lt;br&gt;Ctrl+Shift+pを押すと、コマンド入力欄が表示される。&lt;br&gt;「build」と入力し、「Run Build Task」を押す。&lt;br&gt;続けて、「Configure Task Runner」を押すと、「tasks.json」ファイルができる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;「tasks.json」ファイルは、プロジェクトをコンパイルするタスクの設定を書いておくファイル。&lt;br&gt;このファイル内を「CSC」で検索し、CSC用の設定のコメントアウトを解除して、有効化する。&lt;br&gt;(本記事の執筆時点では、109行目から128行目のコメントアウトを解除した。)&lt;br&gt;初期状態ではTypescript用の設定が有効化されているが、これはコメントアウトして無効化する。&lt;br&gt;さらに、「command」が「msbuild」となっている箇所を、「xbuild」に変更する。変更すると、下記のようになる。&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:3a7ab658-8b91-47c9-9fb8-b2bcfdc06ca3&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:xml&quot;&gt;{&lt;br /&gt; &quot;version&quot;: &quot;0.1.0&quot;,&lt;br /&gt; &quot;command&quot;: &quot;xbuild&quot;,&lt;br /&gt; &quot;args&quot;: [&lt;br /&gt;  // Ask msbuild to generate full paths for file names.&lt;br /&gt;  &quot;/property:GenerateFullPaths=true&quot;&lt;br /&gt; ],&lt;br /&gt; &quot;taskSelector&quot;: &quot;/t:&quot;,&lt;br /&gt; &quot;showOutput&quot;: &quot;silent&quot;,&lt;br /&gt; &quot;tasks&quot;: [&lt;br /&gt;  {&lt;br /&gt;   &quot;taskName&quot;: &quot;build&quot;,&lt;br /&gt;   // Show the output window only if unrecognized errors occur.&lt;br /&gt;   &quot;showOutput&quot;: &quot;silent&quot;,&lt;br /&gt;   // Use the standard MS compiler pattern to detect errors, warnings&lt;br /&gt;   // and infos in the output.&lt;br /&gt;   &quot;problemMatcher&quot;: &quot;$msCompile&quot;&lt;br /&gt;  }&lt;br /&gt; ]&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;再度、Ctrl+Shift+p、「build」を入力し、「Run Build Task」を押す。&lt;br&gt;ビルドが成功し、「HelloWorld.exe」が出力される。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-5qUf0FZibas/VlRgHJofoII/AAAAAAAACxg/zY3i0NqG9zA/s1600-h/20151124214130%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151124214130&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151124214130&quot; src=&quot;http://lh3.googleusercontent.com/-3tZhyD6QxGk/VlRgHgwPAVI/AAAAAAAACxk/RNpRqq6LPmc/20151124214130_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;376&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;次に、デバッグする。&lt;br&gt;画面左側のアイコン「Debug」を押し、緑色三角のアイコン「Start」を押す。&lt;br&gt;デバッグの候補がいくつか表示されるので、「C# mono」を選択する。&lt;br&gt;「launch.json」が出力される。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;「launch.json」を下記のように修正する。&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9749f6c8-97a7-4eeb-8361-d3ee38ad5d98&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:xml&quot;&gt;{&lt;br /&gt; &quot;version&quot;: &quot;0.2.0&quot;,&lt;br /&gt; &quot;configurations&quot;: [&lt;br /&gt;  {&lt;br /&gt;   &quot;name&quot;: &quot;Launch&quot;,&lt;br /&gt;   &quot;type&quot;: &quot;mono&quot;,&lt;br /&gt;   &quot;request&quot;: &quot;launch&quot;,&lt;br /&gt;   &quot;program&quot;: &quot;HelloWorld.exe&quot;,&lt;br /&gt;   &quot;args&quot;: [],&lt;br /&gt;   &quot;cwd&quot;: &quot;.&quot;,&lt;br /&gt;   &quot;runtimeExecutable&quot;: null&lt;br /&gt;   //&quot;env&quot;: {}&lt;br /&gt;  },&lt;br /&gt;  {&lt;br /&gt;   &quot;name&quot;: &quot;Attach&quot;,&lt;br /&gt;   &quot;type&quot;: &quot;mono&quot;,&lt;br /&gt;   &quot;request&quot;: &quot;attach&quot;,&lt;br /&gt;   &quot;address&quot;: &quot;localhost&quot;,&lt;br /&gt;   &quot;port&quot;: 5858&lt;br /&gt;  }&lt;br /&gt; ]&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;「launch.json」を編集後、再度、「Start」アイコンを押す。&lt;br&gt;プログラムが実行され、コンソール画面が立ち上がる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-J_mnoKbr4dY/VlRgH381HgI/AAAAAAAACxo/FC7mZwx6XCg/s1600-h/20151124215108%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151124215108&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151124215108&quot; src=&quot;http://lh3.googleusercontent.com/-1cK5jtfEnl8/VlRgIbL05sI/AAAAAAAACxs/wfXZHaS4LhY/20151124215108_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;381&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;ブレイクポイントを作成していないためこのようになったが、ブレイクポイントを作成しておけば、任意の箇所でブレイクできる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-Ofm6LJNw2T8/VlRgIuDmd1I/AAAAAAAACxw/qZwBPvCROZY/s1600-h/20151124215707%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151124215707&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151124215707&quot; src=&quot;http://lh3.googleusercontent.com/-QKBkWeaByzo/VlRgJOK4Q3I/AAAAAAAACx0/l4qXc4bC5MQ/20151124215707_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;378&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;参考：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://troushoo.blog.fc2.com/blog-entry-248.html#trackback&quot;&gt;Visual Studio Code を使ってUbuntu でC# コンソールアプリをデバッグ&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://qiita.com/moris/items/4850d4e19392186e34f0&quot;&gt;CentOS 7 に Node.js をインストールする - Qiita&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;https://docs.asp.net/en/latest/getting-started/installing-on-linux.html#installing-on-centos-fedora-and-derivatives&quot;&gt;Installing ASP.NET 5 On Linux — ASP.NET 0.0.1 documentation&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/5108592594586884356/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2015/11/linuxcentos7visual-studio-codec.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5108592594586884356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5108592594586884356'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2015/11/linuxcentos7visual-studio-codec.html' title='Linux(CentOS7)にVisual Studio Codeをインストールし、C#アプリを実行する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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="http://lh3.googleusercontent.com/-dqFC4r1wpQc/VlRgE-xjFxI/AAAAAAAACxI/Zv3WDEkUQkQ/s72-c/20151121000345_thumb1.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-6776806289130479064</id><published>2015-11-13T00:50:00.001+09:00</published><updated>2015-11-13T00:51:41.780+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BaasBox"/><category scheme="http://www.blogger.com/atom/ns#" term="mBaas"/><title type='text'>BaasBoxにDocumentを作成する。</title><content type='html'>&lt;p&gt;オープンソースmBaasのBaasBoxにドキュメントを作成する。&lt;br&gt;BaasBoxはドキュメントデータベースを採用しており、作成したドキュメントを検索することもできる。&lt;/p&gt; &lt;p&gt;今回はターミナル上でBaasBoxのREST APIをたたく。&lt;/p&gt; &lt;p&gt;BassBoxのインストールはこちら。&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://tikuflower.blogspot.jp/2015/11/mbaasbaasbox.html&quot;&gt;ちくわのあなから花が咲く。: オープンソースmBaasのBaasBoxをインストールする&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;h2&gt;&lt;u&gt;ログイン&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;まずはログインから。adminユーザでログインする。&lt;/p&gt; &lt;p&gt;% curl http://localhost:9000/login -d &quot;username=admin&quot; -d &quot;password=admin&quot; -d &quot;appcode=1234567890&quot;&lt;/p&gt; &lt;p&gt;成功すると下記のJSONが返ってくる。&lt;/p&gt; &lt;p&gt;&lt;pre style=&quot;background-color: #dddddd&quot;&gt;{&lt;br /&gt;    &quot;data&quot;: {&lt;br /&gt;        &quot;X-BB-SESSION&quot;: &quot;2ffe6a91-71a6-4345-8a9c-9a227a2017ff&quot;, &lt;br /&gt;        &quot;signUpDate&quot;: &quot;2015-11-08T11:54:56.500+0900&quot;, &lt;br /&gt;        &quot;user&quot;: {&lt;br /&gt;            &quot;name&quot;: &quot;admin&quot;, &lt;br /&gt;            &quot;roles&quot;: [&lt;br /&gt;                {&lt;br /&gt;                    &quot;isrole&quot;: true, &lt;br /&gt;                    &quot;name&quot;: &quot;administrator&quot;&lt;br /&gt;                }&lt;br /&gt;            ], &lt;br /&gt;            &quot;status&quot;: &quot;ACTIVE&quot;&lt;br /&gt;        }&lt;br /&gt;    }, &lt;br /&gt;    &quot;http_code&quot;: 200, &lt;br /&gt;    &quot;result&quot;: &quot;ok&quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;コレクションの作成&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;ドキュメントを作成するコレクションを作成する。&lt;br&gt;下記では、「sample」というコレクションを作成する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% curl -X POST http://localhost:9000/admin/collection/sample -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff&lt;/p&gt;&lt;br /&gt;&lt;p&gt;成功すると下記のJSONが返ってくる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;pre style=&quot;background-color: #dddddd&quot;&gt;{&lt;br /&gt;    &quot;data&quot;: &quot;&quot;, &lt;br /&gt;    &quot;http_code&quot;: 201, &lt;br /&gt;    &quot;result&quot;: &quot;ok&quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;ドキュメントの作成&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;コレクションができたら、コレクションにドキュメントを登録する。&lt;br&gt;URLに「sample」コレクションを指定する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% curl -X POST http://localhost:9000/document/sample -d &#39;{&quot;No&quot; : &quot;1&quot;, &quot;message&quot; : &quot;Hello.&quot;}&#39; -H Content-type:application/json -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff&lt;/p&gt;&lt;br /&gt;&lt;p&gt;成功すると下記のJSONが返ってくる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;pre style=&quot;background-color: #dddddd&quot;&gt;{&lt;br /&gt;    &quot;data&quot;: {&lt;br /&gt;        &quot;@class&quot;: &quot;sample&quot;, &lt;br /&gt;        &quot;@rid&quot;: &quot;#25:0&quot;, &lt;br /&gt;        &quot;@version&quot;: 1, &lt;br /&gt;        &quot;No&quot;: &quot;1&quot;, &lt;br /&gt;        &quot;_author&quot;: &quot;admin&quot;, &lt;br /&gt;        &quot;_creation_date&quot;: &quot;2015-11-11T01:03:09.904+0900&quot;, &lt;br /&gt;        &quot;id&quot;: &quot;eee962f4-929e-4377-adcf-e511b29e2e98&quot;, &lt;br /&gt;        &quot;message&quot;: &quot;Hello.&quot;&lt;br /&gt;    }, &lt;br /&gt;    &quot;http_code&quot;: 200, &lt;br /&gt;    &quot;result&quot;: &quot;ok&quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;別のドキュメントを作成する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% curl -X POST http://localhost:9000/document/sample -d &#39;{&quot;No&quot; : &quot;2&quot;, &quot;message&quot; : &quot;Hello. Hello.&quot;}&#39; -H Content-type:application/json -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff&lt;/p&gt;&lt;br /&gt;&lt;p&gt;成功すると下記のJSONが返ってくる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;pre style=&quot;background-color: #dddddd&quot;&gt;{&lt;br /&gt;    &quot;data&quot;: {&lt;br /&gt;        &quot;@class&quot;: &quot;sample&quot;, &lt;br /&gt;        &quot;@rid&quot;: &quot;#25:1&quot;, &lt;br /&gt;        &quot;@version&quot;: 1, &lt;br /&gt;        &quot;No&quot;: &quot;2&quot;, &lt;br /&gt;        &quot;_author&quot;: &quot;admin&quot;, &lt;br /&gt;        &quot;_creation_date&quot;: &quot;2015-11-11T01:04:08.144+0900&quot;, &lt;br /&gt;        &quot;id&quot;: &quot;f50947d4-cde7-4a7b-a017-ed72fae28e79&quot;, &lt;br /&gt;        &quot;message&quot;: &quot;Hello. Hello.&quot;&lt;br /&gt;    }, &lt;br /&gt;    &quot;http_code&quot;: 200, &lt;br /&gt;    &quot;result&quot;: &quot;ok&quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;ドキュメント数の出力&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;作成したドキュメント数を出力してみる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% curl http://localhost:9000/document/sample/count -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff&lt;/p&gt;&lt;br /&gt;&lt;p&gt;成功すると下記のJSONが返ってくる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;pre style=&quot;background-color: #dddddd&quot;&gt;{&lt;br /&gt;    &quot;data&quot;: {&lt;br /&gt;        &quot;count&quot;: 2&lt;br /&gt;    }, &lt;br /&gt;    &quot;http_code&quot;: 200, &lt;br /&gt;    &quot;result&quot;: &quot;ok&quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;ドキュメントの検索&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;ドキュメントを検索する。「No」が「1」のドキュメントを検索する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;% curl http://localhost:9000/document/sample?where=No=&#39;1&#39; -H X-BB-SESSION:2ffe6a91-71a6-4345-8a9c-9a227a2017ff -H X-BAASBOX-APPCODE:1234567890&lt;/p&gt;&lt;br /&gt;&lt;p&gt;成功すると下記のJSONが返ってくる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;pre style=&quot;background-color: #dddddd&quot;&gt;{&lt;br /&gt;    &quot;data&quot;: [&lt;br /&gt;        {&lt;br /&gt;            &quot;@class&quot;: &quot;sample&quot;, &lt;br /&gt;            &quot;@rid&quot;: &quot;#25:0&quot;, &lt;br /&gt;            &quot;@version&quot;: 1, &lt;br /&gt;            &quot;No&quot;: &quot;1&quot;, &lt;br /&gt;            &quot;_author&quot;: &quot;admin&quot;, &lt;br /&gt;            &quot;_creation_date&quot;: &quot;2015-11-11T01:03:09.904+0900&quot;, &lt;br /&gt;            &quot;id&quot;: &quot;eee962f4-929e-4377-adcf-e511b29e2e98&quot;, &lt;br /&gt;            &quot;message&quot;: &quot;Hello.&quot;&lt;br /&gt;        }&lt;br /&gt;    ], &lt;br /&gt;    &quot;http_code&quot;: 200, &lt;br /&gt;    &quot;result&quot;: &quot;ok&quot;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/6776806289130479064/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2015/11/baasboxdocument.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6776806289130479064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6776806289130479064'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2015/11/baasboxdocument.html' title='BaasBoxにDocumentを作成する。'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-8022790968171375962</id><published>2015-11-09T00:07:00.001+09:00</published><updated>2015-11-25T00:03:09.355+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BaasBox"/><category scheme="http://www.blogger.com/atom/ns#" term="mBaas"/><title type='text'>オープンソースmBaasのBaasBoxをインストールする</title><content type='html'>&lt;p&gt;LinuxにオープンソースmBaasのBaasBoxをインストールする方法を記載する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・CentOS7&lt;/p&gt; &lt;h2&gt;&lt;u&gt;インストールするもの&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールするものは以下。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;JDK  &lt;li&gt;Play Framework&amp;nbsp; &lt;li&gt;BaasBox&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;BaasBoxが動作するためには、JavaのフレームワークであるPlay Frameworkをインストールしなくてはならない。&lt;br&gt;さらに、Play FrameworkはJavaで実装されているため、JDKをインストールしなくてはならない。&lt;/p&gt; &lt;p&gt;なので、通常はJDK→Play Framework→BaasBoxの順でインストールをするのだが、&lt;br&gt;BaasBoxのReadMeで、JDK、Play Frameworkのバージョンが指定されているため、&lt;br&gt;先にBaasBoxのダウンロード、インストールを実施する。&lt;br&gt;BaasBoxのインストールは、JDK、Play Frameworkがインストールされていなくても 可能。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;BaasBoxのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;BaasBoxはターミナル上でダウンロードする。&lt;/p&gt; &lt;p&gt;% wget --content-disposition &lt;a href=&quot;http://www.baasbox.com/download/baasbox-stable.zip&quot;&gt;http://www.baasbox.com/download/baasbox-stable.zip&lt;/a&gt;&lt;/p&gt; &lt;p&gt;執筆時点でのバージョンは0.9.4となっている。&lt;br&gt;ダウンロードされるファイル名は「baasbox-0.9.4.zip」。&lt;/p&gt; &lt;p&gt;Webサイトからもダウンロードできる。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.baasbox.com/#home&quot;&gt;The open source backend for your mobile app | BAASBOX&lt;/a&gt;&lt;/p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-A6VQfVWy-Eg/Vj9lHUfpUzI/AAAAAAAACrA/oO-arDBtCHk/s1600-h/20151108222737%25255B14%25255D.png&quot;&gt;&lt;img title=&quot;20151108222737&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151108222737&quot; src=&quot;http://lh3.googleusercontent.com/-cq2Vy8zi6A4/Vj9lIPu_SlI/AAAAAAAACrE/x3F7KlU2fTI/20151108222737_thumb%25255B11%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;366&quot;&gt;&lt;/a&gt;  &lt;p&gt;ダウンロード後、zipファイルを展開する。&lt;br&gt;展開後、任意のディレクトリに移動してもよい。&lt;/p&gt; &lt;p&gt;% unzip baasbox-0.9.4.zip  &lt;p&gt;展開したディレクトリ内の「start」というシェルファイルを実行することによって、BaasBoxが起動する。&lt;br&gt;「start」には実行権限がないため、実行権限を与える。&lt;/p&gt; &lt;p&gt;% cd baasbox-0.9.4&lt;br&gt;% chmod +x ./start&lt;br&gt;% ./start&lt;/p&gt; &lt;p&gt;この時点では、JDK、Play Frameworkがインストールされていないため、起動しない。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;JDKのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;BaasBoxのディレクトリに、「README.md」が格納されている。&lt;br&gt;このファイルの中を見てみると、BaasBoxを起動させるために、JDKはバージョン8が必要だと書かれている。&lt;br&gt;間違ってJREをインストールしないようにとも書かれている。注意すること。&lt;/p&gt; &lt;p&gt;README.mdには、ダウンロード先URLが書かれているため、そこからダウンロードする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/index.html&quot;&gt;Java SE - Downloads | Oracle Technology Network | Oracle&lt;/a&gt;&lt;/p&gt; &lt;p&gt;開いたページの中央右側の「JDK DOWNLOAD」からJDKのダウンロードページに移動する。&lt;br&gt;「Accept License Agreement」をチェックし、Linuxのrpmファイルをダウンロードする。&lt;br&gt;執筆時点での最新バージョンは8u65であったため、「jdk-8u65-linux-x64.rpm」をダウンロードした。&lt;br&gt;(実行環境がが32bitか64bitかによってダウンロードするファイルが異なる)&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-LUH5hxrUfag/Vj9lIhvxxqI/AAAAAAAACrI/3CB8Uy9Zi_k/s1600-h/20151108225801%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151108225801&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151108225801&quot; src=&quot;http://lh3.googleusercontent.com/-qQOPUmP2L_w/Vj9lJJX-gsI/AAAAAAAACrM/nW4DG29En6o/20151108225801_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;397&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ダウンロード後、下記のコマンドでインストールする。&lt;/p&gt; &lt;p&gt;% yum localinstall jdk-8u65-linux-x64.rpm&lt;/p&gt; &lt;p&gt;インストール完了後、Javaのバージョンを確認する。&lt;/p&gt; &lt;p&gt;% java -version&lt;/p&gt; &lt;p&gt;筆者の環境では、先にJDK7がインストールされていたため、バージョンが1.7であった。&lt;br&gt;環境変数JAVA_HOMEを設定し直し、JDK8に切り替える。&lt;/p&gt; &lt;p&gt;% vi /etc/profile.d/java.sh&lt;/p&gt; &lt;p&gt;#!/bin/bash&lt;br&gt;JAVA_HOME=/usr/java/jdk1.8.0_65&lt;br&gt;PATH=$PATH:$JAVA_HOME/bin&lt;br&gt;export PATH JAVA_HOME&lt;br&gt;export CLASSPATH=.  &lt;p&gt;設定用のシェルに実行権限を与える。&lt;/p&gt; &lt;p&gt;% chmod +x /etc/profile.d/java.sh&lt;/p&gt; &lt;p&gt;環境変数の変更を反映させるため、OSを再起動する。&lt;br&gt;再起動後、バージョンが1.8となっていることを確認する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Play Frameworkのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;JDKと同様に「README.md」を確認すると、Play Frameworkのバージョンは2.2.4が指定されている。&lt;br&gt;同じくダウンロード先URLが書かれているため、そこから「play-2.2.4.zip」をダウンロードする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://www.playframework.com/download&quot;&gt;Downloads&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-xAuNMnkfOn4/Vj9lJryWJ9I/AAAAAAAACrQ/G1NG-pkpJ3w/s1600-h/20151108233630%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151108233630&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151108233630&quot; src=&quot;http://lh3.googleusercontent.com/-FXd6vXQO17Q/Vj9lKb_49UI/AAAAAAAACrU/IBIWb7_bZrc/20151108233630_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;385&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ダウンロード後、zipファイルを展開する。&lt;br&gt;展開後、作成されたディレクトリを下記のように移動し、リネームする。&lt;/p&gt; &lt;p&gt;% unzip play-2.2.4.zip&lt;br&gt;% mv play-2.2.4 /usr/local/lib&lt;br&gt;% cd /usr/local/lib&lt;br&gt;% ln –s play-2.2.4 play &lt;/p&gt; &lt;p&gt;環境変数PLAY_HOMEを設定し、Play Frameworkのコマンドを実行可能にする。  &lt;p&gt;vi /etc/profile.d/play.sh  &lt;p&gt;#!/bin/bash&lt;br&gt;PLAY_HOME=/usr/local/lib/play&lt;br&gt;PATH=$PATH:$PLAY_HOME&lt;br&gt;export PATH PLAY_HOME  &lt;p&gt;設定用のシェルに実行権限を与え、OSを再起動する。&lt;/p&gt; &lt;p&gt;% chmod +x /etc/profile.d/java.sh&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;BaasBoxの起動、ログイン&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;下記のディレクトリに移動し、起動シェルを実行する。&lt;/p&gt;% cd baasbox-0.9.4&lt;br&gt;% ./start  &lt;p&gt;うまく起動していれば、下記URLにアクセスすることができる。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://localhost:9000/&quot;&gt;http://localhost:9000/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-coU39WNje4I/Vj9lK-nmueI/AAAAAAAACrc/S6R3JXkNAVk/s1600-h/20151108235225%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151108235225&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151108235225&quot; src=&quot;http://lh3.googleusercontent.com/-L5aE5OE3qo8/Vj9lLLc8THI/AAAAAAAACrk/nLjv6zF7qQ0/20151108235225_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;348&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;「Administration Login」をクリックする。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-xDNkFH95kLU/Vj9lLmO7_zI/AAAAAAAACrs/nbmB-NHShwY/s1600-h/20151108235453%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151108235453&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151108235453&quot; src=&quot;http://lh3.googleusercontent.com/-9IKnFk3QPg8/Vj9lMAD9JiI/AAAAAAAACr0/XzVyJa5-PjQ/20151108235453_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;470&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;下記の様に入力し、「Login」をクリックする。&lt;/p&gt; &lt;p&gt;Username：admin&lt;br&gt;Passwork：admin&lt;br&gt;Application Code：1234567890&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.googleusercontent.com/-xqFQu26BCaw/Vj9lMp9gQGI/AAAAAAAACr4/BmBVp4TwpxY/s1600-h/20151108235728%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20151108235728&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20151108235728&quot; src=&quot;http://lh3.googleusercontent.com/-B0p7vb09T-g/Vj9lNOxLMwI/AAAAAAAACsA/eLe2nvcDOdI/20151108235728_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;369&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ログインに成功し、ダッシュボードが表示される。&lt;/p&gt; &lt;p&gt;Documentの作成はこちら。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2015/11/baasboxdocument.html&quot;&gt;ちくわのあなから花が咲く。: BaasBoxにDocumentを作成する。&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/8022790968171375962/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2015/11/mbaasbaasbox.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/8022790968171375962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/8022790968171375962'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2015/11/mbaasbaasbox.html' title='オープンソースmBaasのBaasBoxをインストールする'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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="http://lh3.googleusercontent.com/-cq2Vy8zi6A4/Vj9lIPu_SlI/AAAAAAAACrE/x3F7KlU2fTI/s72-c/20151108222737_thumb%25255B11%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-6210605520214756245</id><published>2015-01-04T23:47:00.001+09:00</published><updated>2015-01-05T00:05:22.241+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails"/><title type='text'>Ruby on Rails 4をWindowsにインストールし、Eclipseで実行する</title><content type='html'>&lt;p&gt;WindowsにRuby on Rails 4をインストールし、Eclipseで実行する方法を記載する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack 1&lt;br&gt;・Eclipse 4.4 Luna Pleiades All in One&lt;/p&gt; &lt;h2&gt;&lt;u&gt;インストールするもの&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールするものは以下。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Ruby  &lt;li&gt;SQLite  &lt;li&gt;DevKit  &lt;li&gt;Node.js  &lt;li&gt;Ruby on Rails 4  &lt;li&gt;Eclipse&lt;br&gt;Aptana Studio 3プラグイン&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Rubyのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Ruby Installer for WindowsからRubyをインストールする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://rubyinstaller.org/&quot;&gt;RubyInstaller for Windows&lt;/a&gt;&lt;br&gt;ダウンロードはこちらから。&lt;a href=&quot;http://rubyinstaller.org/downloads/&quot;&gt;Downloads&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ここでは、2.0系のRubyをインストールするため、「Ruby 2.0.0-pXXX」をダウンロードする。&lt;br&gt;執筆時点での最新版は「Ruby 2.0.0-p598」となっている。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/-RWBtrcESHZs/VKlSWZk1UXI/AAAAAAAAAQQ/0aaGW1h346M/s1600-h/img00198.png&quot;&gt;&lt;img title=&quot;&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh6.ggpht.com/-aJFvy2i_jsA/VKlSXCWQtnI/AAAAAAAAAQU/tmK7K7T_-_4/img0019_thumb4.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;375&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Ruby Installer for Windowsは、通常のRubyウィザード形式でRubyをインストールできる。&lt;br&gt;「Rubyの実行ファイルへの環境変数PATHを設定する」にチェックを入れておくと、&lt;br&gt;インストール後に「ruby」コマンドを絶対パスで入力しなくてよい。&lt;/p&gt; &lt;p&gt;インストール完了後、コマンドプロンプトを開き、下記のコマンドを実行する。&lt;/p&gt; &lt;p&gt;　% ruby –v&lt;/p&gt; &lt;p&gt;実行結果は、下記のようになる。&lt;/p&gt; &lt;p&gt;ruby 2.0.0p598 (2014-11-13) [i386-mingw32]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;SQLite3のインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;SQLiteはRuby on Railsでアプリケーションを作成するために必要なデータベース。&lt;br&gt;アプリケーションでデータを扱う際に必要となる。&lt;/p&gt; &lt;p&gt;SQLiteを公式サイトからダウンロードする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.sqlite.org/download.html&quot;&gt;SQLite Download Page&lt;/a&gt;&lt;/p&gt; &lt;p&gt;開いたページの中程にある、「Precompiled Binaries for Windows」から&lt;br&gt;「sqlite-shell-win32-x86-XXXXXXX.zip」をダウンロードする。&lt;br&gt;執筆時点での最新版は「sqlite-shell-win32-x86-3080704.zip」となっている。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/--ifncxavDmo/VKlSXwQ4ZjI/AAAAAAAAAQc/SSrN-nY9W5s/s1600-h/201412281428047.png&quot;&gt;&lt;img title=&quot;20141228142804&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20141228142804&quot; src=&quot;http://lh6.ggpht.com/-1_sEV_fmlWg/VKlSYRP_Y7I/AAAAAAAAAQk/gN_FnMEM2jI/20141228142804_thumb4.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;406&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ダウンロードしたファイルを解凍すると、EXEファイル「sqlite3.exe」が格納されている。&lt;br&gt;EXEファイルを先ほどRubyをインストールしたフォルダ「C:\Ruby200\bin」に格納する。&lt;/p&gt; &lt;p&gt;格納後、コマンドプロンプトを開き、下記のコマンドを実行する。&lt;br&gt;EXEファイルへのパスは、Rubyのインストール時の設定(「Rubyの実行ファイルへの環境変数PATHを設定する」)により、通っている。&lt;/p&gt; &lt;p&gt;　% sqlite3 -version&lt;/p&gt; &lt;p&gt;実行結果は、下記のようになる。&lt;/p&gt; &lt;p&gt;3.8.7.4 2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;DevKitのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;DevKitはRuby on Railsをインストールするときや、railsコマンドを実行する際に必要となる。&lt;/p&gt; &lt;p&gt;DevKitはRuby Installerと同じWebサイトからダウンロードする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://rubyinstaller.org/&quot;&gt;RubyInstaller for Windows&lt;/a&gt;&lt;br&gt;ダウンロードはこちらから。&lt;a href=&quot;http://rubyinstaller.org/downloads/&quot;&gt;Downloads&lt;/a&gt;&lt;/p&gt;開いたページの下部にある、「DEVELOPMENT KIT」から&lt;br&gt;「DevKit-mingw64-32-x.x.x-xxxxxxxx-xxxx-sfx.exe」をダウンロードする。&lt;br&gt;執筆時点での最新版は「DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe」となっている。  &lt;p&gt;ダウンロードしたEXEファイルを実行すると、展開先の入力を求められるので、&lt;br&gt;「C:\Ruby200\devkit\」を入力し、「Extract」ボタンを押下する。&lt;/p&gt; &lt;p&gt;展開後、コマンドプロンプトで下記のコマンドを実行する。&lt;/p&gt; &lt;p&gt;　% cd c:\Ruby200\devkit&lt;br&gt;　% ruby dk.rb init&lt;br&gt;　% ruby dk.rb install&lt;/p&gt; &lt;p&gt;実行結果は下記のようになる。&lt;/p&gt; &lt;p&gt;　% ruby dk.rb init&lt;/p&gt; &lt;p&gt;[INFO] found RubyInstaller v2.0.0 at C:/Ruby200 &lt;/p&gt; &lt;p&gt;Initialization complete! Please review and modify the auto-generated&lt;br&gt;&#39;config.yml&#39; file to ensure it contains the root directories to all&lt;br&gt;of the installed Rubies you want enhanced by the DevKit.  &lt;p&gt;　% ruby dk.rb install&lt;/p&gt; &lt;p&gt;[INFO] Updating convenience notice gem override for &#39;C:/Ruby200&#39;&lt;br&gt;[INFO] Installing &#39;C:/Ruby200/lib/ruby/site_ruby/devkit.rb&#39; &lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;h2&gt;&lt;u&gt;Node.jsのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Ruby on Railsを実行するHTTPサーバとして必要となる。&lt;/p&gt; &lt;p&gt;Node.jsを公式サイトからダウンロードする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;node.js&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEo8Jud9rtMOZVwtx8BCrzm8JI0eIgzFuwyswpGF6pB_6ztBh3zRQQ97mrPXQhpw_UQ1o0yBAl6quI0T7WDGauHf2z2potUYof2gys1KnKNJtAAUMv9361Ub9oGxn7WJ8IXNJxmyNmFck/s1600-h/20140510144810%25255B5%25255D.png&quot;&gt;&lt;img title=&quot;20140510144810&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140510144810&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkbsq41IrnblOzalMzDOOBxF7GWEV2xZtoDMAYnigQKVQxudc0NLUyt7qoyKdFqMonyUAx6OH7poR37qFEFNC5jmwFZFjgYQifbN0n-uIJSPEFTlt7AOFNEMsAWzJWxAyMwTZNjJT78dU/?imgmax=800&quot; width=&quot;565&quot; height=&quot;381&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;サイト中央の「INSTALL」から自環境に適したインストーラをダウンロードする。&lt;br&gt;本稿執筆時、Node.jpの最新バージョンは「0.10.35」であった。&lt;/p&gt; &lt;p&gt;ダウンロードしたインストーラを起動し、インストールを実施する。&lt;br&gt;ソフトウェアの使用許諾契約やインストール先選択の画面が表示されるが、&lt;br&gt;画面の指示に従って先へ進んでいく。&lt;/p&gt; &lt;p&gt;「Completed the Node.js Setup Wizard」と記載された画面が表示されれば、インストールは完了。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Ruby on Rails 4のインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Ruby on Railsはgemコマンドからインストールする。&lt;/p&gt; &lt;p&gt;コマンドプロンプトで下記のコマンドを実行する。&lt;/p&gt; &lt;p&gt;　% gem install rails&lt;/p&gt; &lt;p&gt;コマンド実行後、10分程度の時間をかけてRuby on Railsをインストールする。&lt;br&gt;環境によっては、コマンド実行がエラーになる場合がある。SSLエラーが発生した場合、下記のサイトを参考にすると解決できる。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://qiita.com/shimoju/items/394818b4989b94680aaf&quot;&gt;Windowsでgem installするとSSLエラーが出る場合の解決策 - Qiita&lt;/a&gt;&lt;/p&gt; &lt;p&gt;インストールが成功したことを確認するために、コマンドプロンプトで下記を実施する。&lt;/p&gt; &lt;p&gt;　% rails –v&lt;/p&gt; &lt;p&gt;実行結果は下記のようになる。&lt;/p&gt; &lt;p&gt;Rails 4.2.0&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Eclipseのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Eclipseは公式サイトからダウンロードすると言語が英語なので、日本語化されたPleiadesからダウンロードする。&amp;nbsp; &lt;p&gt;&lt;a href=&quot;http://mergedoc.sourceforge.jp/&quot;&gt;Eclipse 日本語化 | MergeDoc Project&lt;/a&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-XUIr8jtkNgk/VKlSZiRF2dI/AAAAAAAAAQw/8Dak786g7WU/s1600-h/20150104211705%25255B5%25255D.png&quot;&gt;&lt;img title=&quot;20150104211705&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20150104211705&quot; src=&quot;http://lh5.ggpht.com/-baDfGregf8Q/VKlSaDCT1_I/AAAAAAAAAQ0/gyU0ObSr3CY/20150104211705_thumb%25255B4%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;398&quot;&gt;&lt;/a&gt;  &lt;p&gt;ここでは、Eclipse 4.4 Luna Pleiades All in Oneをダウンロードした。  &lt;p&gt;ダウンロードしたファイルは圧縮ファイルなので解凍する。解凍後のフォルダを格納する場所はどこでもよい。解凍後、「pleiades\eclipse\eclipse.exe」を実行すると、Eclipseが起動する。  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Aptana Studio 3のインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;EclipseでRuby on Railsのプロジェクトを作成するために、Aptana Studio 3プラグインをインストールする。&lt;/p&gt; &lt;p&gt;Eclipseのメニュー「ヘルプ」→「新規ソフトウェアのインストール」からソフトウェアのインストール画面を開く。&lt;/p&gt; &lt;p&gt;作業対象の欄に下記のURLを入力する。&lt;/p&gt; &lt;p&gt;　&lt;a href=&quot;http://download.aptana.com/studio3/plugin/install&quot;&gt;http://download.aptana.com/studio3/plugin/install&lt;/a&gt;&lt;/p&gt; &lt;p&gt;表示されたAptana Studioの項目にチェックを入れ、「次へ」ボタンを押下する。&lt;br&gt;インストール詳細、ライセンスのレビュー画面が表示されるので、指示に従ってインストールを実施する。&lt;br&gt;セキュリティの警告画面が表示された場合は、「OK」を押下する。&lt;/p&gt; &lt;p&gt;インストール完了後、Eclipseを再起動する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Ruby on Railsプロジェクトの作成&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Aptana Studio 3のインストールが完了すると、Ruby on Railsプロジェクトを作成できるようになる。&lt;br&gt;Eclipseのメニュー「ファイル」→「新規」→「プロジェクト」から新規プロジェクト画面を開く。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/-r3v58p9Q47U/VKlSa6bKEzI/AAAAAAAAARA/u3Q7TYjYH0g/s1600-h/image%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/-e_0rp2O8AzU/VKlSbbD-EPI/AAAAAAAAARE/qOuwu1YjHv0/image_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;298&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;「Railsプロジェクト」を選択し、「次へ」ボタンを押下する。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/-lxZS7uxb0bY/VKlScYxA4rI/AAAAAAAAARQ/gGK6Dtp3fTY/s1600-h/image%25255B7%25255D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/-x8B1IjN1WVA/VKlSc28h1oI/AAAAAAAAARU/LBr4Yyvkrnc/image_thumb%25255B3%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;298&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;「新規Railsプロジェクト」画面では、プロジェクト名を入力する。&lt;br&gt;ここでは、「SampleRails」とした。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-D-_7ZZaJ5gE/VKlSdYiqATI/AAAAAAAAARg/7eNjiknQWFo/s1600-h/image%25255B11%25255D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/-FKsZnSUQv8o/VKlSd1-In1I/AAAAAAAAARo/W0i0jad1dlk/image_thumb%25255B5%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;119&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Webパースペクティブでプロジェクトを開くか聞かれるので、「はい」を選択する。&lt;/p&gt; &lt;p&gt;Ruby on Railsのプロジェクトが作成される。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Ruby on Railsプロジェクトの実行&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;作成したプロジェクトでHTTPサーバを起動する。&lt;/p&gt; &lt;p&gt;Eclipseのメニュー「実行」→「Rails console」からコンソール画面を開く。&lt;br&gt;下記のコマンドを実行する。&lt;/p&gt; &lt;p&gt;　% rails server&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;実行結果は下記のようになる。&lt;/p&gt; &lt;p&gt;DL is deprecated, please use Fiddle&lt;br&gt;=&amp;gt; Booting WEBrick&lt;br&gt;=&amp;gt; Rails 4.2.0 application starting in development on &lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;&lt;br&gt;=&amp;gt; Run `rails server -h` for more startup options&lt;br&gt;=&amp;gt; Ctrl-C to shutdown server&lt;br&gt;[2015-01-04 23:41:08] INFO&amp;nbsp; WEBrick 1.3.1&lt;br&gt;[2015-01-04 23:41:08] INFO&amp;nbsp; ruby 2.0.0 (2014-11-13) [i386-mingw32]&lt;br&gt;[2015-01-04 23:41:08] INFO&amp;nbsp; WEBrick::HTTPServer#start: pid=6320 port=3000  &lt;p&gt;Webブラウザで下記のURLにアクセスする。&lt;/p&gt; &lt;p&gt;　&lt;a href=&quot;http://localhost:3000&quot;&gt;http://localhost:3000&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-i3_Z9mOXPMA/VKlSeb93JdI/AAAAAAAAARw/Tzph8MzClBo/s1600-h/20150104234556%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20150104234556&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20150104234556&quot; src=&quot;http://lh5.ggpht.com/-bzmPVmI_8zA/VKlSfWRWjCI/AAAAAAAAAR4/vaF0YP32fy0/20150104234556_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;569&quot; height=&quot;305&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Ruby on Railsのデフォルトのページが表示される。&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/6210605520214756245/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2015/01/ruby-on-rails-4windowseclipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6210605520214756245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6210605520214756245'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2015/01/ruby-on-rails-4windowseclipse.html' title='Ruby on Rails 4をWindowsにインストールし、Eclipseで実行する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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="http://lh6.ggpht.com/-aJFvy2i_jsA/VKlSXCWQtnI/AAAAAAAAAQU/tmK7K7T_-_4/s72-c/img0019_thumb4.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-1828820073196525904</id><published>2014-12-14T19:43:00.001+09:00</published><updated>2014-12-14T19:46:24.674+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><title type='text'>Nodeclipseがインストールできない</title><content type='html'>&lt;p&gt;PCを初期化したので、Node.jsの開発環境を作り直した。&lt;/p&gt; &lt;p&gt;過去記事の通りに環境を作成してみた。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.com/2014/05/nodejswindowseclipse.html&quot;&gt;Node.jsをWindowsにインストールし、Eclipseで実行する&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Eclipseをダウンロードし、Nodeclipseもインストールしたが、&lt;br&gt;「新規作成」→「プロジェクト」を選択しても、Node.jsの項目がない。&lt;/p&gt; &lt;p&gt;Nodeclipseのインストールに失敗しているのかと思ったが、&lt;br&gt;インストールには成功している様子。&lt;br&gt;新規ソフトウェアのインストール画面でも、インストール済みと表示されている。&lt;/p&gt; &lt;p&gt;Google先生で検索しても、同様の症状が見つからない。&lt;/p&gt; &lt;p&gt;2週間くらい、そこで作業が止まっていたのだが、&lt;br&gt;何の気なしに新規プロジェクトの選択画面を見ていたら、&lt;br&gt;「ノード」と日本語で書かれたグループが目にとまった。&lt;/p&gt; &lt;p&gt;もしかして、とグループを展開してみると、&lt;br&gt;Node.jsのプロジェクトが存在した。&lt;/p&gt; &lt;p&gt;以前にインストールしたときには「Nodeclipse」だったはず。。。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7KmqVK1F28_RrHZPu0ELM4zRV9u7LA0mxHHQbzKl_XwQTbKzANYrn2bJEWt239Q904cP7X7FQJpAhflAbamz-YmRnPeK2yK0upaXpeudWWWWTcKy97leQZhmA6w5Kp3lhyphenhyphen9HsIp5vOhA/s1600-h/img0018%25255B6%25255D.png&quot;&gt;&lt;img title=&quot;img0018&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0018&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj83Wq5CUZlyTbZ2AkiUEYNaOgf0W_LLNTT7rkOQtwy3dCTSIB1naf3CSPoGjXpH9YGB5CpeW9mZ-e6lqHTd08XPHT56ebxRoAeMbwh63hfqixpoGb-mDgf8Z9toWiooHNPIf5SDB82SbA/?imgmax=800&quot; width=&quot;579&quot; height=&quot;409&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/1828820073196525904/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/12/nodeclipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/1828820073196525904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/1828820073196525904'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/12/nodeclipse.html' title='Nodeclipseがインストールできない'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEj83Wq5CUZlyTbZ2AkiUEYNaOgf0W_LLNTT7rkOQtwy3dCTSIB1naf3CSPoGjXpH9YGB5CpeW9mZ-e6lqHTd08XPHT56ebxRoAeMbwh63hfqixpoGb-mDgf8Z9toWiooHNPIf5SDB82SbA/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-4450717415434551007</id><published>2014-12-10T22:56:00.001+09:00</published><updated>2014-12-10T22:57:48.095+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><title type='text'>Eclipseの圧縮ファイルが解凍できない</title><content type='html'>&lt;p&gt;Eclipseの圧縮ファイルをダウンロード後、任意のフォルダで解凍すると、エラーが発生する場合がある。&lt;/p&gt; &lt;p&gt;次の画像は、解凍ソフトのLhaplusを使用し、解凍結果でエラーが発生した画面である。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO2OMLJd-N5i8Ah5z3sivQcLAJ-cU6pIpMKniUbBMmNVxYU6BUmlMojNKL9LhrQk_y4U51l7fqbizTpGMjOUYHMIQo563tt2jB_sib0erYmkmYiQk-NXlu0Cfa-axjkSEU0NK9rAAsvCI/s1600-h/img0016%25255B6%25255D.png&quot;&gt;&lt;img title=&quot;img0016&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0016&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin3eXTi_whjrspuNn3hcPkBM9BSagN1SovsSxzJd7csww8sBsNMujezQr7XYgghcZCtqi9TMrIJf0QtHxZXOyM7XdNaLSsbrnyy129LcYIdm5eRMUPHoTxp6O1QjKkYEPhuyqCLaY8nc8/?imgmax=800&quot; width=&quot;565&quot; height=&quot;304&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;解凍失敗の原因は、「CRCが一致しないか、出力先ファイルが使用中です。」とのこと。&lt;br&gt;他にも多数のファイルが同じエラーで解凍に失敗している。&lt;/p&gt; &lt;p&gt;CRCが一致しない原因を追及していっても解決しなかった。&lt;/p&gt; &lt;p&gt;ファイル名が長かったり、階層が深いファイルでエラーが発生しているようにも見えるため、&lt;br&gt;パスの長さが関係していると思うのだが、何が原因なのだろうか。&lt;/p&gt; &lt;p&gt;幸いなことに、Eclipseの圧縮ファイルはZIP形式であるため、&lt;br&gt;右クリック→「プログラムから開く」→「エクスプローラー」で圧縮ファイルの中身を見ることができる。&lt;/p&gt; &lt;p&gt;そして、中身を適当なフォルダにドラッグアンドドロップすれば、&lt;br&gt;全ファイルを解凍したのと同じ状態になる。&lt;/p&gt; &lt;p&gt;これでいったん解決。&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/4450717415434551007/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/12/eclipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/4450717415434551007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/4450717415434551007'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/12/eclipse.html' title='Eclipseの圧縮ファイルが解凍できない'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEin3eXTi_whjrspuNn3hcPkBM9BSagN1SovsSxzJd7csww8sBsNMujezQr7XYgghcZCtqi9TMrIJf0QtHxZXOyM7XdNaLSsbrnyy129LcYIdm5eRMUPHoTxp6O1QjKkYEPhuyqCLaY8nc8/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-567714972229030868</id><published>2014-07-13T15:59:00.001+09:00</published><updated>2014-07-13T16:04:56.556+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Node.jsでTwitter APIを使用し、タイムラインを取得する</title><content type='html'>&lt;p&gt;Node.jsからTwitter APIを使用してみる。&lt;br&gt;今回は自分のタイムラインを取得する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack １&lt;br&gt;・Node.js 0.10.28&lt;br&gt;・node-twitter 0.2.9&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;準備&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Node.jsでTwitter APIを使用するには、次の手順を実施する。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Node.js開発環境の作成  &lt;li&gt;Twitter APIを使用するための各種キーの取得  &lt;li&gt;node-twitterのインストール  &lt;li&gt;コード生成、実行&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;１．のNode.js開発環境については、下記の記事にインストール方法を記載している。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2014/05/nodejswindowseclipse.html&quot;&gt;ちくわのあなから花が咲く。: Node.jsをWindowsにインストールし、Eclipseで実行する&lt;/a&gt;&lt;/p&gt; &lt;p&gt;２．のTwitter APIを使用するための各種キーの取得については、下記の記事に記載している。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2014/07/twitter-api.html&quot;&gt;ちくわのあなから花が咲く。: Twitter APIを使用するための各種キーの取得&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;３．node-twitterのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;node-twitterはnpmでインストールする。コマンドプロンプトより、下記のコマンドを入力する。&lt;br&gt;コマンドを入力するディレクトリは、Nodeアプリケーションのプロジェクト直下とする。&lt;/p&gt; &lt;p&gt;　% npm install twitter&lt;/p&gt; &lt;p&gt;インストールに成功すると、下図のようになる。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH6NcMe_r6X-vgL2wzDujxXSWmpjWJ2usINCYV_RVKtQRmTwjAOwfsLAF617yld9UqUXcAxr_rN6llNmm9G_deG56RNtaiJUm6OCUtJTepZqjAiqjHh7O14MhMNrDH4d3mOnMvPFt-ADU/s1600-h/img0014%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0014&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0014&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMQlG4g8ww-iknMSn_GxdN9f2xH0MIWb6AdYQdnPR6UgHp8uGPAPC99hMUJJktwA-UfebBCYhxJyn-HaivSP9UArQaSO0t7t3duUZymUE_4SKCLmJNVYxMaoGtdj3NxLs-5uRc4umY_-E/?imgmax=800&quot; width=&quot;474&quot; height=&quot;360&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;４．コード生成、実行&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Node.jsからTwitter APIを使用する。&lt;br&gt;node-twitterプラグインを使用するため、APIへのアクセスURLなどは、プラグインに隠蔽されている。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:79bd0eb7-d683-46d5-a6eb-2470a7449a9b&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:js&quot;&gt;var twitter = require(&#39;twitter&#39;);&lt;br /&gt;&lt;br /&gt;// 各種キーを入力し、インスタンス生成&lt;br /&gt;var instance = new twitter({&lt;br /&gt; consumer_key: &#39;XXXXX&#39;,&lt;br /&gt; consumer_secret: &#39;XXXXX&#39;,&lt;br /&gt; access_token_key: &#39;XXXXX&#39;,&lt;br /&gt; access_token_secret: &#39;XXXXX&#39;&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;// 自分のタイムラインの内容を取得&lt;br /&gt;instance.get(&#39;/statuses/home_timeline.json&#39;, {include_entities:true}, function(data) {&lt;br /&gt; console.log(data);&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;getメソッドでタイムラインを取得した後、コールバック関数内でログに取得内容を出力する。&lt;br&gt;取得件数は20件。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/567714972229030868/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/07/nodejstwitter-api.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/567714972229030868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/567714972229030868'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/07/nodejstwitter-api.html' title='Node.jsでTwitter APIを使用し、タイムラインを取得する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEjMQlG4g8ww-iknMSn_GxdN9f2xH0MIWb6AdYQdnPR6UgHp8uGPAPC99hMUJJktwA-UfebBCYhxJyn-HaivSP9UArQaSO0t7t3duUZymUE_4SKCLmJNVYxMaoGtdj3NxLs-5uRc4umY_-E/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-8051410841448301819</id><published>2014-07-12T15:19:00.000+09:00</published><updated>2014-07-13T15:29:39.188+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Twitter APIを使用するための各種キーの取得</title><content type='html'>&lt;p&gt;Twitter APIを使用するためには、下記のキーを取得する必要がある。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Consumer key&lt;/li&gt; &lt;li&gt;Consumer secret&lt;/li&gt; &lt;li&gt;Access token&lt;/li&gt; &lt;li&gt;Access token secret&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;これらのキーを取得する手順について記載する。&lt;/p&gt; &lt;p&gt;なお、この手順は記事を執筆した2014年7月13日現在のもの。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;準備&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Twitter APIを使用するための各種キーを取得するには、次の手順を実施する。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Twitter Developersアカウントの取得&lt;/li&gt; &lt;li&gt;アプリケーションの登録&lt;/li&gt; &lt;li&gt;アクセストークンの生成&lt;/li&gt; &lt;li&gt;各種キーの取得&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;１．Twitter Developersアカウントの取得&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Twitter APIを使用す るためには、通常のTwitterアカウントではなく、Twitter Developersアカウントが必要となる。&lt;br&gt;Twitter Developersアカウントを取得するためには、下記のサイトへアクセスする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://dev.twitter.com/&quot;&gt;Twitter Developers&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIyd6srUt3cfNVA_FrhjpHgJGPkOHu9ov8qKsr7MjtqrhkvxeX7n3KQnxQ_K_hQ7p-618Ks5OAdMsVRPuQ_XM0Yb3fYidJxn60uSjncPKw2gF9Bi_mmUQqvWjZ3UndxmAYnVNZhrC4Wi0/s1600-h/20140713141404%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20140713141404&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;20140713141404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1hGnt9kcjOIOw3OI3uXF3KboCEH_vSW7-Hh1XrI_4eJRMlQuNuuiRpXkkgc_MO8PJCtGOAC0Iy9T_Q9Ibza7a67XOf4uC0w071_07SlERLAE46JiZEPJSYZdFZJaCqXo_pF5qMH501I/?imgmax=800&quot; width=&quot;562&quot; height=&quot;382&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;画面右上の「Sign in」からログインする。 &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikr4msPQHlaoDROKsew3DLSgZ0qSyxiJ2GYAvgM9_7F-sMwImlnSNOwob-6nBHAsbk3wtSODD5mOROAnb5ZLMjSUwDeYyf6tx-mzvnmNDNfN8Bcxm_XQ1Z9-7VXgRxhzVqHe6TkoXBmVQ/s1600-h/20140713144512%25255B7%25255D.png&quot;&gt;&lt;img title=&quot;20140713144512&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;20140713144512&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhROWcL14fvvzyt4MvnUCp0f0n5nfmpzsbXSYhzXn-7i9Tpl60bh4u16FC9M67wU00q8ijYD2ghU-DUu8cM_L_s2q5abJMZF3BiG9W1wIVfHohlHZcqhSDkS61EfxYFaBHbRPh6xQwMT6A/?imgmax=800&quot; width=&quot;562&quot; height=&quot;264&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;自分のTwitterアカウントでログインする。ユーザ名とパスワードを入力し、「Log in」ボタンを押す。&lt;br&gt;Twitterアカウントを持っていなければ、小さい文字の「Sign up」からアカウントを生成し、このページでログインする。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;２．アプリケーションの登録&lt;/h2&gt; &lt;p&gt;ログイン後、画面右上のアカウントボタンから、「My Application」を押す。&lt;br&gt;アプリ画面に移動したら、「Create New App」ボタンを押す。&lt;br&gt;アプリケーションの登録画面が表示される。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPpnzZgg0OnPcqIzw9L-y0LizCt8BHC_CZZbHniYNNcHYEaBdeoaRpIN2Nv-HVHKaC32hll78ofo6N1JMZC-9Cu45aHa5UM9Q-jSz2rhfRaVvuddw8yZR-Y1jfwcaUEfKlj-uZekTqwVM/s1600-h/20140713143313%25255B5%25255D.png&quot;&gt;&lt;img title=&quot;20140713143313&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;20140713143313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKttL4NJJejmYTSb_4xPexF8RoiTlIrRqICBlaiXxWAWfAo5mUKTA4jRXRiKyDbYvUk_okBvGtkuQZkh1sPlr4CaRhuIexVdY1zyZp6wo7uxv6BuN0FAJ7Omz5ZUb1SVbSbGzwPoHXXUE/?imgmax=800&quot; width=&quot;562&quot; height=&quot;381&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;アプリケーション情報の入力を促されるため、上記キャプチャのように入力する。&lt;br&gt;入力した内容は、後ほど変更が可能であるため、内容は一時的なものでよい。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Name&lt;br&gt;Twitter APIを使用するアプリケーションの名前を入力する。&lt;br&gt;ユニークな名前を入力する必要があるため、上記キャプチャの「SampleTwitterAPI」は不可。&lt;/li&gt; &lt;li&gt;Description&lt;br&gt;アプリケーションの説明を入力する。(sample Applicationでよい)&lt;/li&gt; &lt;li&gt;Website&lt;br&gt;アプリケーションのURL、または、ダウンロードURLを入力する。ローカルのみで使用する場合は、「&lt;a href=&quot;http://127.0.0.1&quot;&gt;http://127.0.0.1&lt;/a&gt;」でよい。&lt;/li&gt; &lt;li&gt;Callback URL&lt;br&gt;アプリケーションでTwitterのユーザ認証が発生する場合のコールバックURLを入力する。&lt;br&gt;認証を行わない場合は入力不要。&lt;/li&gt; &lt;li&gt;Developer Rules of the Road&lt;br&gt;チェックボックスで同意すること。&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;入力後、「Create your Twitter application」ボタンを押す。&lt;br&gt;内容に問題がなければアプリケーションの登録に成功し、下記の画面が表示される。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsr4MJz1mf-e-PxN5rASsGxDtBA9_UQcNV-eYIPuVzCv5eJqLeYh4Q1YIDjqZnk2tYjkpqKLQ-3u4vrVzPEMqBb3saUFn4KfsZe1HWd4bqCjP35xCpHT8jQfQyod4tIVvYkwX9klKzVEo/s1600-h/20140713143228%25255B8%25255D.png&quot;&gt;&lt;img title=&quot;20140713143228&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;20140713143228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCjLDDmCugiOFiGcjOpATZ7QSHf0ifoYtsJVZYAg3Cm8bDK4WlD1CGE12Qoo3_F-NIzh44C5blyIvOycONHW2XePpJAO6GRKQLljtc2V4VMBm3lTChzKOM1vJk-ynbS89VoCPSHSxpAmE/?imgmax=800&quot; width=&quot;562&quot; height=&quot;288&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;３．アクセストークンの生成&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;アプリケーションを登録した時点では、「Consumer key」、「Consumer secret」は発行されているが、「Access token」、「Access token secret」は発行されていない。&lt;/p&gt; &lt;p&gt;登録したアプリケーションのページから、「API Keys」タブに移動し、画面下部の「Token action」の項目から「Generate my access token」ボタンを押す。&lt;br&gt;「Access token」と「Access token secret」が生成される。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;４．各種キーの取得&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;登録したアプリケーションのページの「API Keys」タブで、各種キーを取得できる。&lt;/p&gt; &lt;p&gt;「Consumer key」、「Consumer secret」はそれぞれ、&lt;br&gt;「API key」、「API secret」と表示されている。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/8051410841448301819/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/07/twitter-api.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/8051410841448301819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/8051410841448301819'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/07/twitter-api.html' title='Twitter APIを使用するための各種キーの取得'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEiW1hGnt9kcjOIOw3OI3uXF3KboCEH_vSW7-Hh1XrI_4eJRMlQuNuuiRpXkkgc_MO8PJCtGOAC0Iy9T_Q9Ibza7a67XOf4uC0w071_07SlERLAE46JiZEPJSYZdFZJaCqXo_pF5qMH501I/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-8826852818373255150</id><published>2014-05-24T01:58:00.001+09:00</published><updated>2014-05-24T02:06:39.887+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><category scheme="http://www.blogger.com/atom/ns#" term="Sails.js"/><title type='text'>Sails.jsでコントローラを作成する</title><content type='html'>&lt;p&gt;Sails.jsでコントローラを作成する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack １&lt;br&gt;・Node.js 0.10.28&lt;br&gt;・Sail.js 0.9.16&lt;/p&gt; &lt;p&gt;参考にしたのはこのサイト。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://sailsjs.org/#!documentation/controllers&quot;&gt;Sails.js | Realtime MVC Framework for Node.js&lt;/a&gt;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;コントローラの作成&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;コントローラはコマンドで生成する。&lt;br&gt;コマンドプロンプトを開き、Sails.jsアプリケーションのディレクトリで、下記のコマンドを実行する。&lt;/p&gt; &lt;p&gt;% sails generate controller Sample index create destroy&lt;/p&gt; &lt;p&gt;このコマンドは、「Sample」コントローラを作成し、「index」アクション、「update」アクション、「destroy」アクションを作成する、という意味。&lt;br&gt;コマンドの実行に成功すると、下記のファイルが作成される。&lt;/p&gt; &lt;p&gt;(アプリケーションホーム)/api/controllers/SampleController.js&lt;/p&gt; &lt;p&gt;作成されたコード。&lt;/p&gt; &lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:92dc5f7f-3155-4879-9469-ee2901ec069f&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:js&quot;&gt;/**&lt;br /&gt; * SampleController&lt;br /&gt; *&lt;br /&gt; * @module      :: Controller&lt;br /&gt; * @description :: A set of functions called `actions`.&lt;br /&gt; *&lt;br /&gt; *                 Actions contain code telling Sails how to respond to a certain type of request.&lt;br /&gt; *                 (i.e. do stuff, then send some JSON, show an HTML page, or redirect to another URL)&lt;br /&gt; *&lt;br /&gt; *                 You can configure the blueprint URLs which trigger these actions (`config/controllers.js`)&lt;br /&gt; *                 and/or override them with custom routes (`config/routes.js`)&lt;br /&gt; *&lt;br /&gt; *                 NOTE: The code you write here supports both HTTP and Socket.io automatically.&lt;br /&gt; *&lt;br /&gt; * @docs        :: http://sailsjs.org/#!documentation/controllers&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;module.exports = {&lt;br /&gt;    &lt;br /&gt;  &lt;br /&gt;  /**&lt;br /&gt;   * Action blueprints:&lt;br /&gt;   *    `/sample/index`&lt;br /&gt;   *    `/sample`&lt;br /&gt;   */&lt;br /&gt;   index: function (req, res) {&lt;br /&gt;    &lt;br /&gt;    // Send a JSON response&lt;br /&gt;    return res.json({&lt;br /&gt;      hello: &#39;world&#39;&lt;br /&gt;    });&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Action blueprints:&lt;br /&gt;   *    `/sample/create`&lt;br /&gt;   */&lt;br /&gt;   create: function (req, res) {&lt;br /&gt;    &lt;br /&gt;    // Send a JSON response&lt;br /&gt;    return res.json({&lt;br /&gt;      hello: &#39;world&#39;&lt;br /&gt;    });&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Action blueprints:&lt;br /&gt;   *    `/sample/destroy`&lt;br /&gt;   */&lt;br /&gt;   destroy: function (req, res) {&lt;br /&gt;    &lt;br /&gt;    // Send a JSON response&lt;br /&gt;    return res.json({&lt;br /&gt;      hello: &#39;world&#39;&lt;br /&gt;    });&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Overrides for the settings in `config/controllers.js`&lt;br /&gt;   * (specific to SampleController)&lt;br /&gt;   */&lt;br /&gt;  _config: {}&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sails.jsを実行すると、次のURLにアクセスが可能となる。&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;「index」アクション&lt;br&gt;&lt;a href=&quot;http://localhost:1337/Sample/index&quot;&gt;http://localhost:1337/Sample/index&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://localhost:1337/Sample/&quot;&gt;http://localhost:1337/Sample/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;「create」アクション&lt;br&gt;&lt;a href=&quot;http://localhost:1337/Sample/create&quot;&gt;http://localhost:1337/Sample/create&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;「destroy」&lt;br&gt;&lt;a href=&quot;http://localhost:1337/Sample/destroy&quot;&gt;http://localhost:1337/Sample/destroy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;「index」は省略可能なアクションであるため、URLが「Sample」まででも「index」アクションを実行する。&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/8826852818373255150/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/05/sailsjs_24.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/8826852818373255150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/8826852818373255150'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/05/sailsjs_24.html' title='Sails.jsでコントローラを作成する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-3743628801052383914</id><published>2014-05-21T01:50:00.001+09:00</published><updated>2014-05-21T02:22:32.563+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><category scheme="http://www.blogger.com/atom/ns#" term="Sails.js"/><title type='text'>Sails.jsでのログ出力</title><content type='html'>&lt;p&gt;Sails.jsでログをファイルに出力する方法を記載する。&lt;br&gt;Sails.jsのログでは、ログはコンソールに出力するだけで、ファイルには出力されない。&lt;br&gt;ファイルに出力するために、ここではlog4jsを使用する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack １&lt;br&gt;・Node.js 0.10.28&lt;br&gt;・Sail.js 0.9.16&lt;br&gt;・log4js 0.6.14&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;log4jsのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;log4jsは、npmでインストールする。コマンドプロンプトより、下記のコマンドを入力する。&lt;br&gt;コマンドを入力するディレクトリは、Sails.jsアプリケーションのプロジェクト直下とする。&lt;/p&gt; &lt;p&gt;　% npm install log4js&lt;/p&gt; &lt;p&gt;インストールに成功すると、下図のようになる。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixSvGbSGYeIa9IlWWYPfP60_RzdyMUSPKJslhWZoCR2SsHY7vnVc3CeHUE9-oInOnlmuobp4UqTSxc10DO7IBDVxOl9Aqnxn_XwjkOF8aaz1pQP1ONazy_Ia6i20ka-YUVO3et6XgacR4/s1600-h/img0012%25255B10%25255D.png&quot;&gt;&lt;img title=&quot;img0012&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;img0012&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy6TCjvtPmsDsMLTAJLcQQ9YJ5UN5wVMxrrBz7_hUQQehKl17GPCSUj1m9lHyYMPUPTvE5CW1tElAsYHpJmWahC6HZMzcAFzl6TYYA_f5OIaxP-HffC1wx1Bx9ImN9DxRQYfsd6dUrZq4/?imgmax=800&quot; width=&quot;452&quot; height=&quot;351&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;log4jsの設定&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;ログの出力ファイルパスなどを設定する。下記のファイルを作成し、ファイルにlog4jsの出力方法を設定する。&lt;/p&gt; &lt;p&gt;(プロジェクト直下)\config\log4js.js&lt;/p&gt; &lt;p&gt; &lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e70e6f40-87cf-45dd-8bea-a53ea37940b0&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:js&quot;&gt;var log4js = require(&#39;log4js&#39;);&lt;br /&gt;&lt;br /&gt;log4js.configure({&lt;br /&gt; appenders: [&lt;br /&gt;             {&lt;br /&gt;              &#39;type&#39;: &#39;file&#39;,     // 出力先&lt;br /&gt;              &#39;category&#39;: &#39;app&#39;,    // カテゴリ&lt;br /&gt;              &#39;filename&#39;: &#39;log/app.log&#39;,  // ファイルパス&lt;br /&gt;             }&lt;br /&gt; ]&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;ファイルパスはプロジェクト直下のディレクトリを起点として設定する。設定したパスのファイルを格納するディレクトリは自動で生成されないため、アプリケーション実行前にあらかじめ生成しておくこと。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;ログ出力メソッドの呼び出し&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;適当なコントローラを作成し、ログの出力メソッドを呼び出す。&lt;br&gt;本稿では「Sample」コントローラと、「index」アクションを作成した。&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c77c21b5-9516-458a-bceb-ce6a1b1bdd7c&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;brush:js&quot;&gt;/**&lt;br /&gt; * SampleController&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;var log4js = require(&#39;log4js&#39;);&lt;br /&gt;var logger = log4js.getLogger(&#39;app&#39;);&lt;br /&gt;&lt;br /&gt;module.exports = {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Action blueprints:&lt;br /&gt;   *    `/sample/index`&lt;br /&gt;   *    `/sample`&lt;br /&gt;   */&lt;br /&gt;   index: function (req, res) {&lt;br /&gt;&lt;br /&gt;    logger.debug(&quot;log debug&quot;);&lt;br /&gt;    logger.info(&quot;log info&quot;);&lt;br /&gt;    logger.error(&quot;log error&quot;);&lt;br /&gt;&lt;br /&gt;    // Send a JSON response&lt;br /&gt;    return res.json({&lt;br /&gt;      hello: &#39;world&#39;&lt;br /&gt;    });&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Overrides for the settings in `config/controllers.js`&lt;br /&gt;   * (specific to SampleController)&lt;br /&gt;   */&lt;br /&gt;  _config: {}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;5行目でlog4jsの読み込み、6行目でログ出力用のオブジェクトを取得する。&lt;br&gt;「index」アクションが実施されると、18行目から20行目でログを出力する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;ファイルには次のように出力される。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLL4rn6yMjYrh5IT5KbGPkzf_UF2Fe0QY5FtrswZJUNr2r8MxbBSoimn_IKzNDIjSPjIaJpIfG0xqkzeg1oomNToah3UdN5ZM1xJNcqRcQSX0VoQANTzOANnyQqFwOeS2I7PWrCKz6r_k/s1600-h/img0013%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0013&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;img0013&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2xFwUpdgqy6llWzkS_LM78juHcXAThyphenhyphenMENW-nmp31b053Iea2doZYaWSoxAcfX3YShbC6SfyV-ZErZM2yCnUJOEaO3hcEjVw89Puf4vPl6a8M_3MyHRSAcBsCGyDUCNlkW69_7Mqa7GU/?imgmax=800&quot; width=&quot;463&quot; height=&quot;260&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;調査中なこと&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Sails.jsが出力するログ(「sails.log.debug」メソッドなど)をファイルに出力する方法がわからない。。。&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/3743628801052383914/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/05/sailsjs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3743628801052383914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3743628801052383914'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/05/sailsjs.html' title='Sails.jsでのログ出力'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEgy6TCjvtPmsDsMLTAJLcQQ9YJ5UN5wVMxrrBz7_hUQQehKl17GPCSUj1m9lHyYMPUPTvE5CW1tElAsYHpJmWahC6HZMzcAFzl6TYYA_f5OIaxP-HffC1wx1Bx9ImN9DxRQYfsd6dUrZq4/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-3496181679297541966</id><published>2014-05-14T01:36:00.001+09:00</published><updated>2014-05-21T02:22:44.738+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><category scheme="http://www.blogger.com/atom/ns#" term="Sails.js"/><title type='text'>Node.jsのフレームワークSails.jsをEclipseで実行する</title><content type='html'>&lt;p&gt;Node.jsのフレームワークSails.jsを、Eclipseで実行する方法を記載する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack １&lt;br&gt;・Eclipse 4.3 Kepler Pleiades All in One&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;インストールするもの&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールするものは以下。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Node.js  &lt;li&gt;Sails.js  &lt;li&gt;Eclipse&lt;br&gt;Nodeclipseプラグイン&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Node.jsとEclipseについては、下記の記事にインストール方法を記載している。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2014/05/nodejswindowseclipse.html&quot;&gt;ちくわのあなから花が咲く。: Node.jsをWindowsにインストールし、Eclipseで実行する&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Sails.jsのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Sails.jsはNode.jsに付属している「npm」を使用してインストールする。コマンドプロンプトより、下記のコマンドを入力し、インストールする。Webサイトからインストーラをダウンロードする必要はない。&lt;br&gt;Sails.jsアプリケーションを実行するために、アプリケーションごとに作成したディレクトリでsailsコマンドを実行するため、npmコマンドの引数に「-g」を忘れないこと。&lt;/p&gt; &lt;p&gt;　% npm –g install sails&lt;/p&gt; &lt;p&gt;コマンドプロンプトでnpmを実行してもうまく動作しない場合、npmのパスが環境変数に登録されていない可能性がある。システムの環境変数「Path」にNode.jsのインストールパスが登録されているか確認すること。&lt;br&gt;Node.jsのインストールパスはデフォルトの場合、「C:\Program Files\nodejs\」となっている。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://sailsjs.org/&quot;&gt;Sails.js | Realtime MVC Framework for Node.js&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf6MNrCCaMf-_rIrXsTBLwz8bpFUmtbRLUNjoyeg2AdX53J4juwjUhhcdRaiAGagBX2k_aZSjWZxILZHXQszvxnI3TX7FYU6K5an9HWkSQl1SYKu627TELvPJw8aWJBwdGMyPeC3cSWJU/s1600-h/20140514002800%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20140514002800&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140514002800&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCgphdhWfkXYidPuL7M_N1QARLWrYeLadWl1WQ2t_42Mkp3A6duTk6hW3LTbvxp7_awCt9NMiK9Wmmf2ka6fCGKg6pyUX4vooXHmC9EXk50dAkofIA2ANjW27sGiUP5XjPt7ohgzNR4dc/?imgmax=800&quot; width=&quot;562&quot; height=&quot;353&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;プロジェクト作成&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Nodeclipseプラグインには、Sails.jsアプリケーションを作成する機能は存在しない(2014/05/14現在)。&lt;br&gt;そのため、次の手順でSails.jsプロジェクトを作成する。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;EclipseでNode.jsプロジェクトを作成  &lt;li&gt;sailsコマンドでSails.jsアプリケーションを作成  &lt;li&gt;２で作成したアプリケーションの中身を１で作成したプロジェクトにコピー&lt;/li&gt;&lt;/ol&gt; &lt;h5&gt;&amp;nbsp;&lt;/h5&gt; &lt;h3&gt;１．EclipseでNode.jsプロジェクトを作成&lt;/h3&gt; &lt;p&gt;EclipseでNode.js用のプロジェクトを作成する。&lt;br&gt;Eclipseのメニュー「ファイル」→「新規」→「プロジェクト」から新規プロジェクト画面を開く。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgil6uoGjdv_dE7HTdoFRN8utLRweokPwdscFi95DQ3nDQ7Xx_fV-tNRTWqVrLJxaaJrTapCvj3WmsFiNBkLXJR-VhyR0rKIW9v75_2R70R7tYwItYjsq7KY448sqifpHIydPXSV3JDw5s/s1600-h/img0006%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0006&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0006&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoLrciP8TxsiZB4X7VdeDigvvTLX3LzmV7FkBUuPpMjEjHpG99fT04UatC-jl5XD6RExvymz4twmlkT9xy_rMSYup4W4T0SElIrSYAurgjppfrvTtPKizTPC8sZRyXXlacaQ9ibDzOOBk/?imgmax=800&quot; width=&quot;563&quot; height=&quot;314&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;「Nodeclipse」の項目の中の「Node.js Project」を選択し、「次へ」ボタンを押して進む。&lt;/p&gt; &lt;p&gt;「New Node.js Project」画面では、プロジェクト名を入力する。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBALMXIB-9V8e_SKBlKvfP-Hgmjcfkta2cjIBLZx0Z3vUy3u-_ZG3lDnXY5WUPNts08cbd43NxyzyBFedgBGtdR_ZWUeZr3kvoGXUObHH2IFHp0SFiViPvbvgop9E8BrcYwsD1Th_nBsg/s1600-h/img0007%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0007&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0007&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVfyqQo9u1rqMP50qAKVg1MI2xReLRJL-Z7b5Pn2-rWAK3cMFtLgjAFSHyPvEH_8FCnyY_Sm5h6eGoaK9VTo-n18_M3PbhvDUIEZyljIOj5i_IjeI6Xquq7pxkfvcP9ov19FsqWexwwN4/?imgmax=800&quot; width=&quot;562&quot; height=&quot;330&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ここでは、「SampleSailsJS」とした。&lt;br&gt;「Template to use」の項目では、「none/empty」を選択する。&lt;br&gt;「完了」ボタンを押すと、プロジェクトの作成が完了する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;２．sailsコマンドでSails.jsアプリケーションを作成&lt;/h3&gt; &lt;p&gt;sailsコマンドでSails.jsアプリケーションを作成する。&lt;br&gt;コマンドプロンプトを開き、適当なディレクトリ(本稿では「C:\」)に移動する。&lt;br&gt;下記のコマンドを入力し、Sails.jsアプリケーションを作成する。「new」の後にはアプリケーション名を入力する。１で作成したプロジェクト名と同じ名前のアプリケーション名を入力すること。&lt;/p&gt; &lt;p&gt;　% sails new SampleSailsJS&lt;/p&gt; &lt;p&gt;コマンドを実行すると、下図のようになる。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibIqopJiY711V_MvVrB3y09Wci5B6JXPfKvH4JK4y0YhzfcPYP6fHX46MwQwJ9FTx80xRFkIU0tksunW6fxc2Z5dD71SyLVaFmHg_6En7P9nCepBh94azucxyX9h2a3xEs58kWmAlcc0s/s1600-h/img0008%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;img0008&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0008&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv7o_eY2drGiSxpxkUTdpD6t6l4wuWilKhMMAHOuFBY4zxYi0Oi6x8o4vPygC8yxxMkUZzPnpJcveUmR9xcVMnKfczpf5MZEvnGWzY3JBuuz1KAqfDex-eiB6zEeJJT8JE3F3HPnOj09k/?imgmax=800&quot; width=&quot;420&quot; height=&quot;325&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;h5&gt;&amp;nbsp;&lt;/h5&gt; &lt;h3&gt;３．２で作成したアプリケーションの中身を１で作成したプロジェクトにコピー&lt;/h3&gt; &lt;p&gt;sailsコマンドで作成されたフォルダの中には、Sails.jsアプリケーションが格納されている。これをEclipseで作成したプロジェクトにコピーする。&lt;br&gt;「README.md」が重複しているが、かまわずに上書きする。&lt;/p&gt; &lt;p&gt;コピー後、Eclipseのプロジェクト・エクスプローラで作成したプロジェクトを選択した後、キーボードの「F5」を押すと、プロジェクトの中身が更新され、下図のように表示される。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSqxsmdaAk2q82B-a-PTuBmuepVK_LYb6-0o4NZ6Xtzf9-U7dO01UTaTnNwSFn1X8_gOVALlOXTiVDSF34bFsZpNoITFGLHvARKFWl5Jm_C8VhqIDCxfxOWQCNsc1maUj0xRIJTlO4zRY/s1600-h/img0009%25255B2%25255D.png&quot;&gt;&lt;img title=&quot;img0009&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0009&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkqKYqySavgWPodFeP6yiTEMzqDriWe8aF59-SaNQmZhW9EWfLcGOAg52l9m9uHSqfoRLYSRjbdFrf1D7yVPzYArLaTDV9r1Q7WHkw0lWi2941e8gDYG9q9nDf2YGpbJOqUTJUWOc-w-U/?imgmax=800&quot; width=&quot;184&quot; height=&quot;244&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;これで、Eclipse上でSails.jsプロジェクトが作成された。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Sails.jsアプリケーションの実行&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;コマンド上でSails.jsアプリケーションを実行するためには、コマンドプロンプトで下記のコマンドを実行する。実行場所は、作成したSails.jsアプリケーションフォルダ。&lt;/p&gt; &lt;p&gt;　% sails lift&lt;/p&gt; &lt;p&gt;Eclipseでこのコマンドを実行するために、外部ツールを使用する。&lt;br&gt;Eclipseのメニュー「実行」→「外部ツール」→「外部ツールの構成」から外部ツール構成画面を開く。&lt;br&gt;この画面で、sailsコマンドを実行するための設定を行う。&lt;/p&gt; &lt;p&gt;まずは、左側のリストから「プログラム」を選択し、「新規」ボタンを押す。&lt;br&gt;新しいプログラム構成が作成されるので、下記のように設定する。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;名前：SailsExec  &lt;li&gt;ロケーション：C:\Users\{自分のユーザ}\AppData\Roaming\npm\sails.cmd  &lt;li&gt;作業ディレクトリー：${project_loc}  &lt;li&gt;引数：lift&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEytFTSzM5UgVjxBW0wq5YDWvK14mtEN-fvIzx0GM_2GKHoAyiyLR6uVYPgzIyNOXcFvr2SKS50uNWypFTrPP8XBCDi-M_g6jimQ8gwKardb26OPG-y3OXKfZcTMMhz1akPaaU4nqqS54/s1600-h/img0010%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0010&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0010&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4T36KJzV2RprjBJdsw2m3Rt24QtdTH-qR_QumYbBLpXi73JVj3-2NNc7ECN6nWyaPWeaS1rA_W_kmswn3TUAUA_5WMiui9jx80UegIUxekeigbslk9QBgGbRGXmRvAgflYTMJ6oETeE8/?imgmax=800&quot; width=&quot;564&quot; height=&quot;431&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;設定を入力したら、「閉じる」ボタンを押して画面を閉じる。(「実行」ボタンは押してはいけない)&lt;br&gt;閉じるときに設定を保存するか確認されるので、「はい」を押す。&lt;/p&gt; &lt;p&gt;Eclipseのプロジェクト・エクスプローラで作成したプロジェクトを選択し、外部ツールで作成した「SailsExec」を実行する。&lt;/p&gt; &lt;p&gt;Eclipseのコンソールが下図のようになれば、Sails.jsアプリケーションの実行に成功。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiI-HVGwkgGptwf4lt31NeE_hl26k3d-wSAC-YH9fjbGkfBXBP1FHfafcDx09-bfQANuZG09uysrd17jVe26xlb3bKb10EHMmJxAKF625RvBml_uRduCGiSGDlfvPeUp_2af5yMwysFKI/s1600-h/img0011%25255B7%25255D.png&quot;&gt;&lt;img title=&quot;img0011&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0011&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisui7q-jzjn0XIyhqHEcwV_u8odNra8ipLGrtcIb5WsX67D_8ojpQkdsdKuAKojcu2wP4s_W_IZw81QYMC8pIhByiUMsKcDvN6-w8aRdHQU5nSqYkP0X5iNuFTwKc2vPvXp4CDq27Pt7E/?imgmax=800&quot; width=&quot;562&quot; height=&quot;278&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ポートは1337とのこと。&lt;br&gt;ブラウザを開き、サーバにアクセスする。&lt;/p&gt; &lt;p&gt;　&lt;a href=&quot;http://localhost:1337/&quot;&gt;http://localhost:1337/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;下記のように表示されれば実行に成功。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrZl7zdSWMEqkBWw1XmEsGubZz-YhPdJmbdzMB3OIgrQdkLnARlMtmUFaCMxnSK_AC26zWjvxeTH2R5dDfJwWBRokpIAZ9bQWdmoYAsG7MMrzX2R-buagYMszDTIFMOt3cg9Rco59Chq8/s1600-h/20140514012307%25255B7%25255D.png&quot;&gt;&lt;img title=&quot;20140514012307&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140514012307&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1r3GDL1Nb2mN0NfjC2yiFguKPjYH6b17S00Yod8WG-aCMlEfuciON4XXVG4gbwXES0chJcEsqC2XJIHLOjbKYtzsP74BohYSGGkpuUKVyHowQQrCPBQQHLIRlfzuBOj05ITaMlr6dRhY/?imgmax=800&quot; width=&quot;562&quot; height=&quot;429&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/3496181679297541966/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/05/nodejssailsjseclipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3496181679297541966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3496181679297541966'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/05/nodejssailsjseclipse.html' title='Node.jsのフレームワークSails.jsをEclipseで実行する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEhCgphdhWfkXYidPuL7M_N1QARLWrYeLadWl1WQ2t_42Mkp3A6duTk6hW3LTbvxp7_awCt9NMiK9Wmmf2ka6fCGKg6pyUX4vooXHmC9EXk50dAkofIA2ANjW27sGiUP5XjPt7ohgzNR4dc/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-1836468518208705154</id><published>2014-05-11T22:22:00.001+09:00</published><updated>2014-05-14T00:23:15.705+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><title type='text'>Node.jsのフレームワークExpressをEclipseで実行する</title><content type='html'>&lt;p&gt;Node.jsのフレームワークExpressを、Eclipseで実行する方法を記載する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack １&lt;br&gt;・Eclipse 4.3 Kepler Pleiades All in One&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;インストールするもの&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールするものは以下。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Node.js  &lt;li&gt;Express  &lt;li&gt;Eclipse&lt;br&gt;Nodeclipseプラグイン&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Node.jsとEclipseについては、下記の記事にインストール方法を記載している。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2014/05/nodejswindowseclipse.html&quot;&gt;ちくわのあなから花が咲く。: Node.jsをWindowsにインストールし、Eclipseで実行する&lt;/a&gt;&lt;/p&gt; &lt;p&gt;また、Expressは、Nodeclipseプラグインのインストール時に合わせてインストールしている場合は、インストールの必要はない(と思う)。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Expressのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;ExpressはNode.jsに付属している「npm」を使用してインストールする。コマンドプロンプトより、下記のコマンドを入力し、インストールする。Webサイトからインストーラをダウンロードする必要はない。&lt;br&gt;ちなみに、「npm」とは「Node.js Package Manager」の略。&lt;/p&gt; &lt;p&gt;　% npm –g install express&lt;/p&gt; &lt;p&gt;コマンドプロンプトでnpmを実行してもうまく動作しない場合、npmのパスが環境変数に登録されていない可能性がある。システムの環境変数「Path」にNode.jsのインストールパスが登録されているか確認すること。&lt;br&gt;Node.jsのインストールパスはデフォルトの場合、「C:\Program Files\nodejs\」となっている。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://expressjs.com/&quot;&gt;Express - node.js web application framework&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvyxF12OkDbCYB1_mEa_F5LTe3rYE8MB0jT2JdOr6iSH9gZtJMNIrkYuGjKJwxPchfGR4rYM5ojaqraD9MW60gNWiTP4NEt5WzPtrPBNurB_oZSfWZsDSXAh2ZLzxhnIWKtjWIgmWpNdg/s1600-h/20140510144641_thumb%25255B2%25255D%25255B2%25255D.png&quot;&gt;&lt;img title=&quot;20140510144641_thumb[2]&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140510144641_thumb[2]&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKx11OumKZjcYIm9TM68OSs4HAzYRTyCFX6aLQaLGzaZYKmD59yz_FGqVJRluILvOexMrV83ZzhgR82gwWrsLBoyQauq5jCRoUDL_AG3UaLBquQjwRPHqKlPTX5czDfu-4F8WSFhn0__I/?imgmax=800&quot; width=&quot;567&quot; height=&quot;384&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Expressを実行&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;EclipseでExpress用のプロジェクトを作成する。&lt;br&gt;Eclipseのメニュー「ファイル」→「新規」→「プロジェクト」から新規プロジェクト画面を開く。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgusOnA6EF6dFrF3CpfDcw5Wzyk_-NzYT-e0stxhFa-Uz0aRroAIqvivsxcbZ1Sf-N9gvq-TW8e_GhhiJhqgVMXHQVjUoZ19muaJ_en8I88vhOXjdVtxtGN_G4Uvjs7ocurSiMGVRHQ7wk/s1600-h/img0004%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0004&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0004&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGF-ZnR_1al3zyTIi_EJEg1NoX46u5vR7InO_aOaWnlDp8ZcIml2lUgy_GiRVZjFa2mfJl9g0uBzi8ShBdAXOKP5opPWvyB4CfHGZ8IdFSKrug9scRC_ZmQPN-GBqFwy0io60WZeh_1tY/?imgmax=800&quot; width=&quot;563&quot; height=&quot;314&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;「Nodeclipse」の項目の中の「Node.js Express Project」を選択し、「次へ」ボタンを押して進む。&lt;/p&gt; &lt;p&gt;「New Express Project」画面では、プロジェクト名を入力する。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimYS7-IvGAwtP0n6KG07hjJuDhQ1saRrAgHMxunBjjuGz5scZSsAnJi818EJO9qThYBD2DQvE8w088EQV6YXmXrdMAaEzrU3Q00vW3837ujdmjct5il0-IqdNMqbKIvu9GmOFmGHYgkKE/s1600-h/img0005%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0005&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0005&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif5vGo5IPToULH-epY0KzLAQ0XdJDSe0a56p197jqEY3kz7j7GpBR6Yrk2pulGff_sQqEYqRdmUhlPHJYQjtlh_Xtrp_8776XJNRq4Iu13oC6W_xTzo7Fmp7rJaQbv39mtFP0y40HhhZA/?imgmax=800&quot; width=&quot;562&quot; height=&quot;336&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ここでは、「SampleExpress」とした。&lt;br&gt;「テンプレートエンジン」の項目では、「ejs」を、「Stylesheet Engine」の項目では「CSS」選択する。&lt;br&gt;「完了」ボタンを押すと、プロジェクトの作成が完了する。&lt;/p&gt; &lt;p&gt;自動生成されたファイルの「app.js」のに最後でWebサーバのlistenを実施している。ポートはexpressオブジェクトに設定された値となる。&lt;br&gt;自動生成されたファイルでは3000番となっている。&lt;/p&gt; &lt;p&gt;メニュー「実行」→「実行」→「Node Application」を実行すると、コンソールに「Express server listening on port 3000」と表示される。&lt;br&gt;これで、サーバが起動した。&lt;/p&gt; &lt;p&gt;ブラウザを開き、サーバにアクセスする。&lt;/p&gt; &lt;p&gt;　&lt;a href=&quot;http://localhost:3000/&quot;&gt;http://localhost:3000/&lt;/a&gt; &lt;/p&gt; &lt;p&gt;下記のように表示されれば実行に成功。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIJyJ96Pf7NVOpfEdgbXX5fjRZScYmGcwoE_hj-m9T_yIPz7fOvi3XVF0xrD8qGaXnuXMaoKpaL32bT4ow7XaJVMkZ_4yaTudq74k8TU2MJj0Gtr1pLH-6WLTHxEmF9suGxcSRNjwgcT8/s1600-h/20140511222104%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20140511222104&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140511222104&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDhBtgmjt0C93wC1IC1SU9Bz54t_54n5zJeOyXcYtth-UmF1kufHJXjVymvQpaR2_cfPmPurstbuyaEjtP56R0PyMGoyKbyvY7t8MmwpCYovDkc2k2icMQQGKxt3nRku_kv_6zPw73F-k/?imgmax=800&quot; width=&quot;562&quot; height=&quot;378&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/1836468518208705154/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/05/nodejsexpresseclipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/1836468518208705154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/1836468518208705154'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/05/nodejsexpresseclipse.html' title='Node.jsのフレームワークExpressをEclipseで実行する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEhKx11OumKZjcYIm9TM68OSs4HAzYRTyCFX6aLQaLGzaZYKmD59yz_FGqVJRluILvOexMrV83ZzhgR82gwWrsLBoyQauq5jCRoUDL_AG3UaLBquQjwRPHqKlPTX5czDfu-4F8WSFhn0__I/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-6774318236433070007</id><published>2014-05-10T15:28:00.000+09:00</published><updated>2015-01-04T23:53:21.099+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Node.js"/><title type='text'>Node.jsをWindowsにインストールし、Eclipseで実行する</title><content type='html'>&lt;p&gt;WindowsにNode.jsをインストールし、Eclipseで実行する方法を記載する。&lt;/p&gt; &lt;p&gt;動作環境&lt;br&gt;・Windows7 Ultimate Service Pack １&lt;br&gt;・Eclipse 4.3 Kepler Pleiades All in One&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a name=&quot;more&quot;&gt;&lt;/a&gt; &lt;h2&gt;&lt;u&gt;インストールするもの&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールするものは以下。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Node.js  &lt;li&gt;Eclipse&lt;br&gt;Nodeclipseプラグイン&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Node.jsのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Node.jsを公式サイトからダウンロードする。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;node.js&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEo8Jud9rtMOZVwtx8BCrzm8JI0eIgzFuwyswpGF6pB_6ztBh3zRQQ97mrPXQhpw_UQ1o0yBAl6quI0T7WDGauHf2z2potUYof2gys1KnKNJtAAUMv9361Ub9oGxn7WJ8IXNJxmyNmFck/s1600-h/20140510144810%25255B5%25255D.png&quot;&gt;&lt;img title=&quot;20140510144810&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140510144810&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkbsq41IrnblOzalMzDOOBxF7GWEV2xZtoDMAYnigQKVQxudc0NLUyt7qoyKdFqMonyUAx6OH7poR37qFEFNC5jmwFZFjgYQifbN0n-uIJSPEFTlt7AOFNEMsAWzJWxAyMwTZNjJT78dU/?imgmax=800&quot; width=&quot;565&quot; height=&quot;381&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;サイト中央の「INSTALL」から自環境に適したインストーラをダウンロードする。本稿執筆時、Node.jpの最新バージョンは「0.10.28」であった。&lt;/p&gt; &lt;p&gt;ダウンロードしたインストーラを起動し、インストールを実施する。ソフトウェアの使用許諾契約やインストール先選択の画面が表示されるが、画面の指示に従って先へ進んでいく。&lt;/p&gt; &lt;p&gt;「Completed the Node.js Setup Wizard」と記載された画面が表示されれば、インストールは完了。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Eclipseのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;Eclipseは公式サイトからダウンロードすると言語が英語なので、日本語化されたPleiadesからダウンロードする。&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://mergedoc.sourceforge.jp/&quot;&gt;Eclipse 日本語化 | MergeDoc Project&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEju2Ad4Qkhv2dc0-mFAVLHXgo-v__PFle33TJNmqqgny59turv3BSmtQsriyLT9Hxkcn1gSagp_a9GKr-aVYwNetRd0gSlFnqDbo-0ArgKZozi9L-OVIyQ1CvkwPSUoR820peBHaU5SgPw/s1600-h/20140511122458%25255B8%25255D.png&quot;&gt;&lt;img title=&quot;20140511122458&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140511122458&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8DCA6HjlqcHnnpfqAJGuyDEzkFLvlZcYPghEdx4D5FhsAZKx9nE5ef_alyBY8QK69szaEt4R1-nahHMVDH-BFXPHpSdY-4ViXznVzJDvMJyH1-LKeB1Mykl5-dYRBTs_nXECISsrnhdw/?imgmax=800&quot; width=&quot;565&quot; height=&quot;360&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ここでは、Eclipse 4.3 Kepler Pleiades All in Oneをダウンロードした。&lt;/p&gt; &lt;p&gt;ダウンロードしたファイルは圧縮ファイルなので解凍する。解凍後のフォルダを格納する場所はどこでもよい。解凍後、「pleiades\eclipse\eclipse.exe」を実行すると、Eclipseが起動する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Nodeclipseのインストール&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;EclipseでNode.jsを動作させるために、Nodeclipseプラグインをインストールする。&lt;/p&gt; &lt;p&gt;Eclipseのメニュー「ヘルプ」→「新規ソフトウェアのインストール」からソフトウェアのインストール画面を開く。&lt;/p&gt; &lt;p&gt;作業対象の欄に下記のURLを入力する。&lt;/p&gt; &lt;p&gt;　http://dl.bintray.com/nodeclipse/nodeclipse/&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbPXOGrHQXhHl2b1ioEkHaDP43oK0iAPpLHLnJy6EyYT5G6s_EHhejZ0w8wiuToxNUz8FV0rSdLiQvwHBjc9z63WHIkw50o-w9YpEjCZFpFP5l_SGbvvA-MWh8atjuNQFMXt0_2DaaxI/s1600-h/img0001%25255B6%25255D.png&quot;&gt;&lt;img title=&quot;img0001&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0001&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc1V56CoILXFW4OgmUK1Bt-iQNaVCbTCfKPzf-z80WwhoETtqIfl7SgvWWmQC3lQY8mIvI2crOEDQHeUsElSE0cI8_CGJhqkALT8ZSIC0JYDtBJsnWIqUY_EwaDTrW8CaZJWmkaAsRWMU/?imgmax=800&quot; width=&quot;562&quot; height=&quot;453&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;表示された項目全てをチェックし、「次へ」ボタンを押して進む。&lt;br&gt;インストール詳細、ライセンスのレビュー画面が表示されるので、指示に従ってインストールを実施する。&lt;br&gt;セキュリティ警告の画面では「OK」を押す。&lt;br&gt;インストール完了後、Eclipseを再起動すると、Nodeclipseを使用できる状態となる。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;Node.jsを実行&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;インストールが完了すると、Node.js用のプロジェクトを作成できるようになる。&lt;br&gt;Eclipseのメニュー「ファイル」→「新規」→「プロジェクト」から新規プロジェクト画面を開く。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5sZHhnk4MXDgPRzhC-rg3KfEDLGP7ZDaL5SmOwo-Yhpp8HeZCzx7kvN2_121aSdl_fnjzHrSKheR6SP9YOdPQJT2gnISOJuIrkrgSALaEX5CKG_pjW-KPJr6qxRitvk6Fr_zgdoTQWhc/s1600-h/img0002%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;img0002&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0002&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Pwb_LGtg3TfR-niJ5o83ULW4eDftqn_wopGijBqMRHvm_kbrhsS1hLGaEHqH7m_xPtI5wCcYa7GM9bsSupd93Ou-cFyVN3SNW3LCbUsWC6aTyB7z0FudFLKoBZbI3hYDszopX4xDJTA/?imgmax=800&quot; width=&quot;556&quot; height=&quot;326&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;「Nodeclipse」の項目の中の「Node.js Project」を選択し、「次へ」ボタンを押して進む。&lt;/p&gt; &lt;p&gt;「New Node.js Project」画面では、プロジェクト名を入力する。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB6DzcbovEIp7xTB484dX7etcU3-moAYjbg3799GVMgl9EyDtjJ2Poul7lRbsfacfvANgHoJm8EMEcQWf9Q9FZtFve6xdGMat7DQFPyhyrE6V7KoBHC3R5R4s_yA_qgYckaB8SaX6_Rao/s1600-h/img0003%25255B8%25255D.png&quot;&gt;&lt;img title=&quot;img0003&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;img0003&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIuht2yjeQ0mjEwcO02ahY4DRY6Y3P7F3e8MVrpK19VIPqnzWtTSNXhYOf1_Rosx776TC6vQp69SQXGvsu7KTOlUN8wf1qzUgL8uXq-W6SzRgCBpV7hGRVkual2W8xjSxNdn1BN2sqCTE/?imgmax=800&quot; width=&quot;561&quot; height=&quot;337&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ここでは、「SampleNodeJS」とした。&lt;br&gt;「Template to use」の項目では、「Hello World」を選択する。&lt;br&gt;「完了」ボタンを押すと、プロジェクトの作成が完了する。&lt;/p&gt; &lt;p&gt;自動生成されたファイルのうち、「hello-world.js」にWebサーバを起動するコードが書かれている。&lt;br&gt;localhostの1337ポートでサーバを起動し、「Hello World」と表示するようになっている。&lt;/p&gt; &lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6bb3080a-4ea4-4c43-a7e7-70ca88c4b122&quot; class=&quot;wlWriterSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre class=&quot;brush:js&quot; name=&quot;code&quot;&gt;var http = require(&#39;http&#39;);&lt;br&gt;http.createServer(function handler(req, res) {&lt;br&gt;    res.writeHead(200, {&#39;Content-Type&#39;: &#39;text/plain&#39;});&lt;br&gt;    res.end(&#39;Hello World\n&#39;);&lt;br&gt;}).listen(1337, &#39;127.0.0.1&#39;);&lt;br&gt;console.log(&#39;Server running at http://127.0.0.1:1337/&#39;);&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;実際に実行してみる。&lt;br&gt;メニュー「実行」→「実行」→「Node Application」を実行すると、コンソールに「Server running at http://127.0.0.1:1337/」と表示される。&lt;br&gt;これで、サーバが起動した。&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;ブラウザを開き、サーバにアクセスする。ソースコード通りだと、&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;　&lt;a href=&quot;http://127.0.0.1:1337/&quot;&gt;http://127.0.0.1:1337/&lt;/a&gt;&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;にアクセスすればよいが、&lt;/p&gt;　&lt;a href=&quot;http://localhost:1337/&quot;&gt;http://localhost:1337/&lt;/a&gt; &lt;br&gt;&lt;br /&gt;&lt;p&gt;でも同じ。&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAjnYcb8j_ieUZ0vUpAhAmetssfBQT_2M3Hf-PqcMcSHm0tf-ROeCLWIs-e58L84MjF0qCGWv-zqyLKI3LTWhtHmscp79zbAWNIf3mA-ND3_jLIHFRWXn3KfodoTvYhKsvMpKMfKp6ucA/s1600-h/20140511152622%25255B4%25255D.png&quot;&gt;&lt;img title=&quot;20140511152622&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;20140511152622&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpb28MNuwZgygCz5qNyBfB4UKbO_3pSKxdyYxrj49ShCuyksfiF7mSuRLblhBJxoZXg9mAHdEzUUIJalCbNP8v_Dlzi1APaOiUUJ5cRYDTcfFYHlSY90QZ9R-zDBs_cbsVNMlTnZ9pIwQ/?imgmax=800&quot; width=&quot;563&quot; height=&quot;146&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;ブラウザ上には、「Hello World」とだけ表示される。&lt;br&gt;Node.jsの実行に成功。&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/6774318236433070007/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/05/nodejswindowseclipse.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6774318236433070007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6774318236433070007'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/05/nodejswindowseclipse.html' title='Node.jsをWindowsにインストールし、Eclipseで実行する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEgkbsq41IrnblOzalMzDOOBxF7GWEV2xZtoDMAYnigQKVQxudc0NLUyt7qoyKdFqMonyUAx6OH7poR37qFEFNC5jmwFZFjgYQifbN0n-uIJSPEFTlt7AOFNEMsAWzJWxAyMwTZNjJT78dU/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-5896769001007232087</id><published>2014-02-09T22:09:00.001+09:00</published><updated>2014-02-11T14:01:41.536+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>CakePHPでマルチパートでないPost通信を受信する</title><content type='html'>&lt;p&gt;CakePHPでマルチパートでないHTTP-Postリクエストを受信する方法を記載する。&lt;/p&gt;動作環境&lt;br&gt;・Ubuntu 12.04.3 LTS&lt;br&gt;・CakePHP 2.4.4&lt;br&gt;・Apache 2.2.22  &lt;p&gt;Webで実装方法を検索してみたところ、ピュアPHPではすぐに見つかったのだが、CakePHPではなかなか見つけることができなかった。&lt;br&gt;Webで検索するキーワードが悪かったのかもしれない。&lt;/p&gt; &lt;p&gt;HTTPクライアントはAndroidでHttpURLConnectionを使用した。&lt;br&gt;サンプルコードはこちら。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2014/02/androidasynctaskloaderhttp-post.html&quot;&gt;androidからAsyncTaskLoaderでHTTP-Post通信をする&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;ピュアPHPの場合&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;ピュアPHPでPostリクエストのデータを取得する場合は、file_get_contentsメソッドを使用する。&lt;/p&gt; &lt;p&gt;引数に「php://input」を指定する。&lt;/p&gt; &lt;p&gt;リクエストデータは戻り値で取得できる。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;&amp;lt;?php&lt;br /&gt;// 受信データ格納&lt;br /&gt;$data =  file_get_contents(&quot;php://input&quot;);&lt;br /&gt;&lt;br /&gt;// レスポンス&lt;br /&gt;echo &quot;POST DATA RECEIVED. data[&quot;.$data.&quot;]&quot;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;CakePHPの場合&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;CakePHPでPOSTデータを取得する場合、&lt;/p&gt;&lt;br /&gt;&lt;p&gt;　CakeRequest::data[‘key’]&lt;/p&gt;&lt;br /&gt;&lt;p&gt;などでデータを取得するが、マルチパートでないPOSTデータの場合、取得できない。&lt;br&gt;上記の「key」を「php://input」としても取得できない。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;といっても、CakePHPのどこかで「php://input」からPOSTデータを取得している箇所があるはずなので、CakePHPのコードを「php://input」で検索してみる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;すると、CakeRequest::_readInputメソッドで「php://input」を使用していた。&lt;br&gt;_readInputメソッドはprotectedなので、さらに_readInputメソッドを使用している箇所を検索してみる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;_readInputメソッドを使用している箇所は2カ所あったが、CakeRequest::inputメソッドがpublicだったので、ここからPOSTデータを取得できそう。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;というわけで、CakeRequest::inputメソッドを使用する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;inputメソッドは引数にデコード用コールバックを指定できるが、省略可能引数となっているため、今回は省略する。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;リクエストデータは戻り値で取得できる。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;下記のサンプルでは、取得したリクエストデータを、そのままレスポンスデータとして送信している。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;&amp;lt;?php&lt;br /&gt;class PostSamplesController extends AppController {&lt;br /&gt;	public function index() {&lt;br /&gt;		if($this-&amp;gt;request-&amp;gt;is(&#39;post&#39;)) {	// Post通信&lt;br /&gt;			// 受信データ格納&lt;br /&gt;			$input_data = $this-&amp;gt;request-&amp;gt;input();&lt;br /&gt;			&lt;br /&gt;			// レスポンス&lt;br /&gt;			$this-&amp;gt;response-&amp;gt;body($input_data);&lt;br /&gt;			return $this-&amp;gt;response;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/5896769001007232087/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/02/cakephppost.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5896769001007232087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5896769001007232087'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/02/cakephppost.html' title='CakePHPでマルチパートでないPost通信を受信する'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-5838879197467537134</id><published>2014-02-08T18:12:00.000+09:00</published><updated>2014-05-11T22:29:21.720+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>androidからHttpClientでHTTP-Post通信をする</title><content type='html'>&lt;p&gt;androidでは、HTTP通信をするための方法として、下記のふたつがある。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;HttpURLConnection　（java.net）  &lt;li&gt;HttpClient　（org.apache.http）&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ここでは、HttpClientを使用する方法を紹介する。&lt;/p&gt; &lt;p&gt;HttpURLConnectionとHttpClientの違いについては、下記のサイトが参考になった。&lt;br&gt;&lt;a href=&quot;http://y-anz-m.blogspot.jp/2011/10/androidapache-http-client.html&quot;&gt;Y.A.M の 雑記帳: Android　Apache HTTP Client と HttpURLConnection どっちを使うべき？&lt;/a&gt;&lt;/p&gt; &lt;p&gt;HttpURLConnectionを使用する方法は下記を参照。&lt;br&gt;&lt;a href=&quot;http://tikuflower.blogspot.jp/2014/02/androidasynctaskloaderhttp-post.html&quot;&gt;androidからAsyncTaskLoaderでHTTP-Post通信をする&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Http通信処理を実現するためには、Androidアプリで下記の3つの部品を実装する。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;UI処理  &lt;li&gt;通信データ  &lt;li&gt;バックグラウンド処理&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Androidアプリのマニフェストファイルにインターネット接続のパーミッションを追加すること。&lt;/p&gt; &lt;p&gt;また、サーバ側でも何らかの応答を返す処理を実装する必要がある。&lt;/p&gt; &lt;h2&gt;&lt;u&gt;UI処理&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;アプリケーション実行時に呼び出されるアクティビティ。&lt;br&gt;ここで通信データを生成し、バックグラウンド処理に渡す。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.httppostsample2;&lt;br /&gt;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.support.v4.app.FragmentActivity;&lt;br /&gt;import android.support.v4.app.LoaderManager.LoaderCallbacks;&lt;br /&gt;import android.support.v4.content.Loader;&lt;br /&gt;&lt;br /&gt;public class MainActivity extends FragmentActivity implements LoaderCallbacks&lt;transdata&gt; {&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  setContentView(R.layout.activity_main);&lt;br /&gt;&lt;br /&gt;  // サーバにデータ送信(初期化)&lt;br /&gt;  TransData sendData = new TransData();&lt;br /&gt;  Bundle args = new Bundle();&lt;br /&gt;  sendData.data = &quot;test&quot;;&lt;br /&gt;  args.putSerializable(&quot;data&quot;, sendData);&lt;br /&gt;  getSupportLoaderManager().initLoader(0, args, this);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public Loader&lt;transdata&gt; onCreateLoader(int id, Bundle args) {&lt;br /&gt;  if( null != args ) {&lt;br /&gt;   TransData sendData = (TransData) args.getSerializable(&quot;data&quot;);&lt;br /&gt;&lt;br /&gt;   return new HttpAccesser(this, sendData);&lt;br /&gt;  }&lt;br /&gt;  return null;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onLoadFinished(Loader&lt;transdata&gt; loader, TransData recvData) {&lt;br /&gt;  // AsyncTaskLoaderの処理が終了したら呼び出される&lt;br /&gt;  if(null == recvData) {&lt;br /&gt;   return;&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onLoaderReset(Loader&lt;transdata&gt; arg0) {&lt;br /&gt;  // AsyncTaskLoaderが破棄されるときに呼び出される&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;通信データ&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;実際に使用する通信データはメッセージ種別など様々な情報が含まれていると思うが、ここでは簡略化して文字列のみを送受信することにする。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.httppostsample2;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;&lt;br /&gt;public class TransData implements Serializable {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt; public String data;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;バックグラウンド処理&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;ここでHTTP-Post通信を実行する。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.httppostsample2;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.apache.http.HttpEntity;&lt;br /&gt;import org.apache.http.HttpResponse;&lt;br /&gt;import org.apache.http.NameValuePair;&lt;br /&gt;import org.apache.http.client.entity.UrlEncodedFormEntity;&lt;br /&gt;import org.apache.http.client.methods.HttpPost;&lt;br /&gt;import org.apache.http.impl.client.DefaultHttpClient;&lt;br /&gt;import org.apache.http.message.BasicNameValuePair;&lt;br /&gt;import org.apache.http.util.EntityUtils;&lt;br /&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.support.v4.content.AsyncTaskLoader;&lt;br /&gt;&lt;br /&gt;public class HttpAccesser extends AsyncTaskLoader&lt;transdata&gt; {&lt;br /&gt; private final static String SERVER_URL = &quot;http://www.sample.com/index.php&quot;;&lt;br /&gt; private final static String ENCODE = &quot;UTF-8&quot;;&lt;br /&gt;&lt;br /&gt; private TransData mSendData = null;      // 送信データ&lt;br /&gt; private DefaultHttpClient mHttpClient = null;   // HTTPクライアント&lt;br /&gt; private HttpPost mPost = null;       // POST通信&lt;br /&gt;&lt;br /&gt; public HttpAccesser(Context context, TransData sendData) {&lt;br /&gt;  super(context);&lt;br /&gt;&lt;br /&gt;  this.mSendData = sendData;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public TransData loadInBackground() {&lt;br /&gt;  // ここに非同期処理で実施したい処理を記載する&lt;br /&gt;  TransData recvData = null;&lt;br /&gt;&lt;br /&gt;  recvData = send(mSendData);&lt;br /&gt;&lt;br /&gt;  return recvData;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onCanceled(Boolean data) {&lt;br /&gt;  // キャンセル処理&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected void onStartLoading() {&lt;br /&gt;  // 開始処理&lt;br /&gt;  forceLoad();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public TransData send(TransData sendData) {&lt;br /&gt;  boolean ret = false;&lt;br /&gt;  TransData recvData = null;&lt;br /&gt;  List&lt;namevaluepair&gt; params = new ArrayList&lt;namevaluepair&gt;();&lt;br /&gt;  HttpResponse response = null;&lt;br /&gt;  HttpEntity resEntity = null;&lt;br /&gt;  int resStatus = 0;&lt;br /&gt;&lt;br /&gt;  // 接続初期化&lt;br /&gt;  ret = initConnection();&lt;br /&gt;  if(false == ret) {&lt;br /&gt;   return null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;   // 送信データ生成&lt;br /&gt;   params.add(new BasicNameValuePair(&quot;data&quot;, sendData.data));&lt;br /&gt;   // UTF-8にエンコードする&lt;br /&gt;   mPost.setEntity(new UrlEncodedFormEntity(params, ENCODE));&lt;br /&gt;&lt;br /&gt;   // 送信&lt;br /&gt;   response = mHttpClient.execute(mPost);&lt;br /&gt;&lt;br /&gt;   // リクエスト結果を取得&lt;br /&gt;   resStatus = response.getStatusLine().getStatusCode();&lt;br /&gt;&lt;br /&gt;   if(200 == resStatus) {&lt;br /&gt;    // リクエスト成功&lt;br /&gt;    resEntity = response.getEntity();&lt;br /&gt;    recvData = new TransData();&lt;br /&gt;    recvData.data = EntityUtils.toString(resEntity, ENCODE);&lt;br /&gt;   }&lt;br /&gt;  } catch(Exception e) {&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;   recvData = null;&lt;br /&gt;  } finally {&lt;br /&gt;   try {&lt;br /&gt;    if(mHttpClient != null) {&lt;br /&gt;     mHttpClient.getConnectionManager().shutdown();&lt;br /&gt;    }&lt;br /&gt;   } catch(Exception e) {&lt;br /&gt;    recvData = null;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return recvData;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private boolean initConnection() {&lt;br /&gt;  mHttpClient = new DefaultHttpClient();&lt;br /&gt;  mPost = new HttpPost(SERVER_URL);&lt;br /&gt;&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;マニフェストファイルにパーミッション追加&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;下記のパーミッションを追加する。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&gt;&lt;/uses-permission&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/5838879197467537134/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/02/androidhttpclienthttp-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5838879197467537134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5838879197467537134'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/02/androidhttpclienthttp-post.html' title='androidからHttpClientでHTTP-Post通信をする'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-5000999664199228491</id><published>2014-02-04T01:19:00.001+09:00</published><updated>2014-02-09T00:11:20.050+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>androidからAsyncTaskLoaderでHTTP-Post通信をする</title><content type='html'>&lt;p&gt;Android 3.0からUIスレッドではインターネットへの接続ができなくなった。&lt;/p&gt; &lt;p&gt;そこで、AsyncTaskLoaderを使って、Android 4.0.3でHTTP-Post通信を実行してみる。&lt;br&gt;HTTP通信には、HttpURLConnectionクラスを使用する。&lt;/p&gt; &lt;p&gt;処理を実現するためには、Androidアプリで下記の3つの部品を実装する。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;UI処理  &lt;li&gt;通信データ  &lt;li&gt;バックグラウンド処理&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Androidアプリのマニフェストファイルにインターネット接続のパーミッションを追加すること。&lt;/p&gt; &lt;p&gt;また、サーバ側でも何らかの応答を返す処理を実装する必要がある。&lt;/p&gt; &lt;h2&gt;&lt;u&gt;UI処理&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;アプリケーション実行時に呼び出されるアクティビティ。&lt;br&gt;ここで通信データを生成し、バックグラウンド処理に渡す。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.httppostsample2;&lt;br /&gt;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.support.v4.app.FragmentActivity;&lt;br /&gt;import android.support.v4.app.LoaderManager.LoaderCallbacks;&lt;br /&gt;import android.support.v4.content.Loader;&lt;br /&gt;&lt;br /&gt;public class MainActivity extends FragmentActivity implements LoaderCallbacks&lt;transdata&gt; {&lt;br /&gt;&lt;br /&gt;	@Override&lt;br /&gt;	public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;		super.onCreate(savedInstanceState);&lt;br /&gt;		setContentView(R.layout.activity_main);&lt;br /&gt;&lt;br /&gt;		// サーバにデータ送信(初期化)&lt;br /&gt;		TransData sendData = new TransData();&lt;br /&gt;		Bundle args = new Bundle();&lt;br /&gt;		sendData.data = &quot;test&quot;;&lt;br /&gt;		args.putSerializable(&quot;data&quot;, sendData);&lt;br /&gt;		getSupportLoaderManager().initLoader(0, args, this);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public Loader&lt;transdata&gt; onCreateLoader(int id, Bundle args) {&lt;br /&gt;		if( null != args ) {&lt;br /&gt;			TransData sendData = (TransData) args.getSerializable(&quot;data&quot;);&lt;br /&gt;&lt;br /&gt;			return new HttpAccesser(this, sendData);&lt;br /&gt;		}&lt;br /&gt;		return null;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void onLoadFinished(Loader&lt;transdata&gt; loader, TransData recvData) {&lt;br /&gt;		// AsyncTaskLoaderの処理が終了したら呼び出される&lt;br /&gt;		if(null == recvData) {&lt;br /&gt;			return;&lt;br /&gt;		}&lt;br /&gt;		else {&lt;br /&gt;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void onLoaderReset(Loader&lt;transdata&gt; arg0) {&lt;br /&gt;		// AsyncTaskLoaderが破棄されるときに呼び出される&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;通信データ&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;実際に使用する通信データはメッセージ種別など様々な情報が含まれていると思うが、ここでは簡略化して文字列のみを送受信することにする。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.httppostsample2;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;&lt;br /&gt;public class TransData implements Serializable {&lt;br /&gt;	private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt;	public String data;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;バックグラウンド処理&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;ここでHTTP-Post通信を実行する。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;package net.kuttya.httppostsample2;&lt;br /&gt;&lt;br /&gt;import java.io.BufferedInputStream;&lt;br /&gt;import java.io.BufferedOutputStream;&lt;br /&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.io.OutputStream;&lt;br /&gt;import java.net.HttpURLConnection;&lt;br /&gt;import java.net.URL;&lt;br /&gt;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.support.v4.content.AsyncTaskLoader;&lt;br /&gt;&lt;br /&gt;public class HttpAccesser extends AsyncTaskLoader&lt;transdata&gt; {&lt;br /&gt;	private final static String SERVER_URL = &quot;http://www.sample.com/index.php&quot;;&lt;br /&gt;	private final static String ENCODE = &quot;UTF-8&quot;;&lt;br /&gt;&lt;br /&gt;	private TransData mSendData = null;						// 送信データ&lt;br /&gt;	private HttpURLConnection mHttpConnection = null;		// HTTP通信&lt;br /&gt;&lt;br /&gt;	public HttpAccesser(Context context, TransData sendData) {&lt;br /&gt;		super(context);&lt;br /&gt;&lt;br /&gt;		this.mSendData = sendData;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public TransData loadInBackground() {&lt;br /&gt;		// ここに非同期処理で実施したい処理を記載する&lt;br /&gt;		TransData recvData = null;&lt;br /&gt;&lt;br /&gt;		recvData = send(mSendData);&lt;br /&gt;&lt;br /&gt;		return recvData;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void onCanceled(Boolean data) {&lt;br /&gt;		// キャンセル処理&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	protected void onStartLoading() {&lt;br /&gt;		// 開始処理&lt;br /&gt;		forceLoad();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public TransData send(TransData sendData) {&lt;br /&gt;		OutputStream out = null;			// HTTPリクエスト送信用ストリーム&lt;br /&gt;		InputStream in = null;				// HTTPレスポンス取得用ストリーム&lt;br /&gt;		BufferedReader reader = null;		// レスポンスデータ出力用バッファ&lt;br /&gt;		int retByte = 0;&lt;br /&gt;		boolean ret = false;&lt;br /&gt;		byte[] sendMessage = null;&lt;br /&gt;		byte[] recvMessage = null;&lt;br /&gt;		TransData recvData = null;&lt;br /&gt;&lt;br /&gt;		// 接続初期化&lt;br /&gt;		ret = initConnection();&lt;br /&gt;		if(false == ret) {&lt;br /&gt;			return null;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		try {&lt;br /&gt;			// 送信データ生成&lt;br /&gt;			sendMessage = new byte[255];&lt;br /&gt;			System.arraycopy(mSendData.data.getBytes(), 0, sendMessage, 0, mSendData.data.length());&lt;br /&gt;&lt;br /&gt;			// 接続&lt;br /&gt;			mHttpConnection.connect();&lt;br /&gt;&lt;br /&gt;			// データを出力&lt;br /&gt;			out = new BufferedOutputStream(mHttpConnection.getOutputStream());&lt;br /&gt;			out.write(sendMessage);&lt;br /&gt;			out.flush();&lt;br /&gt;&lt;br /&gt;			// レスポンスを取得&lt;br /&gt;			in = new BufferedInputStream(mHttpConnection.getInputStream());&lt;br /&gt;			recvMessage = new byte[1024];&lt;br /&gt;			retByte = in.read(recvMessage);&lt;br /&gt;			if(0 &amp;gt; retByte) {&lt;br /&gt;				return null;&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			// 受信データ解析&lt;br /&gt;			recvData = new TransData();&lt;br /&gt;			ret = analyzeRecvData(recvMessage, recvData);&lt;br /&gt;			if(false == ret) {&lt;br /&gt;				return null;&lt;br /&gt;			}&lt;br /&gt;		} catch(Exception e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;			recvData = null;&lt;br /&gt;		} finally {&lt;br /&gt;			try {&lt;br /&gt;				if(reader != null) {&lt;br /&gt;					reader.close();&lt;br /&gt;				}&lt;br /&gt;				if(in != null) {&lt;br /&gt;					in.close();&lt;br /&gt;				}&lt;br /&gt;				if(out != null) {&lt;br /&gt;					out.close();&lt;br /&gt;				}&lt;br /&gt;				if(mHttpConnection != null) {&lt;br /&gt;					mHttpConnection.disconnect();&lt;br /&gt;				}&lt;br /&gt;			} catch(Exception e) {&lt;br /&gt;				recvData = null;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		return recvData;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private boolean initConnection() {&lt;br /&gt;		// URL指定&lt;br /&gt;		URL url;&lt;br /&gt;		try {&lt;br /&gt;			url = new URL(SERVER_URL);&lt;br /&gt;&lt;br /&gt;			// HttpURLConnectionインスタンス作成&lt;br /&gt;			mHttpConnection = (HttpURLConnection)url.openConnection();&lt;br /&gt;&lt;br /&gt;			// POST設定&lt;br /&gt;			mHttpConnection.setRequestMethod(&quot;POST&quot;);&lt;br /&gt;&lt;br /&gt;			// HTTPヘッダの「Content-Type」を「application/octet-stream」に設定&lt;br /&gt;			mHttpConnection.setRequestProperty(&quot;Content-Type&quot;,&quot;application/octet-stream&quot;);&lt;br /&gt;&lt;br /&gt;			// URL 接続を使用して入出力を行う&lt;br /&gt;			mHttpConnection.setDoInput(true);&lt;br /&gt;			mHttpConnection.setDoOutput(true);&lt;br /&gt;&lt;br /&gt;			// キャッシュは使用しない&lt;br /&gt;			mHttpConnection.setUseCaches(false);&lt;br /&gt;		} catch (Exception e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;			return false;&lt;br /&gt;		}&lt;br /&gt;		finally {&lt;br /&gt;			if(mHttpConnection != null) {&lt;br /&gt;				mHttpConnection.disconnect();&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		return true;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private boolean analyzeRecvData(byte[] recvMessage, TransData recvData) {&lt;br /&gt;		try {&lt;br /&gt;			if(null == recvData)&lt;br /&gt;			{&lt;br /&gt;				return false;&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			recvData.data = new String(recvMessage, ENCODE);&lt;br /&gt;		}&lt;br /&gt;		catch(Exception e) {&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;			return false;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		return true;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;マニフェストファイルにパーミッション追加&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;下記のパーミッションを追加する。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&gt;&lt;/uses-permission&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;サーバ処理&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;サーバ側はPHPで実装する。&lt;br&gt;HTTPリクエストを取得し、受信したデータを送り返す。&lt;/p&gt;&lt;pre class=&quot;brush:java&quot;&gt;&lt;pre class=&quot;brush:java&quot;&gt;&amp;lt;?php&lt;br /&gt;// 受信データ格納&lt;br /&gt;$data =  file_get_contents(&quot;php://input&quot;);&lt;br /&gt;&lt;br /&gt;echo &quot;POST DATA RECEIVED. data[&quot;.$data.&quot;]&quot;&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/5000999664199228491/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/02/androidasynctaskloaderhttp-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5000999664199228491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/5000999664199228491'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/02/androidasynctaskloaderhttp-post.html' title='androidからAsyncTaskLoaderでHTTP-Post通信をする'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-387421879447737119</id><published>2014-02-03T01:08:00.000+09:00</published><updated>2014-05-11T22:29:33.676+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>HTTP通信でNetworkOnMainThreadException発生</title><content type='html'>&lt;p&gt;昔作成したコードを動かしてみたら、NetworkOnMainThreadExceptionが発生した。&lt;br&gt;昔は問題なく動作していたにも関わらず、だ。&lt;/p&gt;
&lt;p&gt;原因は、Android 3.0からインターネット通信はUIスレッドでは行えなくなっている様子。&lt;/p&gt;
&lt;p&gt;AsyncTaskか、AsyncTaskLoaderを使用しなくてはならないらしい。&lt;br&gt;Android4.0以降であれば、AsyncTaskLoaderがよいと思われる。&lt;/p&gt;
&lt;p&gt;一時的に、下記のコードを埋め込んでおけば、例外を抑制できる。&lt;br&gt;埋め込む場所は、UIスレッドのonCreateメソッド開始直後、super.onCreateメソッド実行前。&lt;/p&gt;
&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:2717b8e5-e413-43b6-aad4-4d7120bbab55&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;DIV class=dp-highlighter&gt;
&lt;DIV class=bar&gt;
&lt;DIV class=tools&gt;&lt;A onclick=&quot;dp.sh.Toolbar.Command(&#39;ViewSource&#39;,this);return false;&quot; href=&quot;about:blank#&quot;&gt;view plain&lt;/A&gt;&lt;A onclick=&quot;dp.sh.Toolbar.Command(&#39;CopyToClipboard&#39;,this);return false;&quot; href=&quot;about:blank#&quot;&gt;copy to clipboard&lt;/A&gt;&lt;A onclick=&quot;dp.sh.Toolbar.Command(&#39;PrintSource&#39;,this);return false;&quot; href=&quot;about:blank#&quot;&gt;print&lt;/A&gt;&lt;A onclick=&quot;dp.sh.Toolbar.Command(&#39;About&#39;,this);return false;&quot; href=&quot;about:blank#&quot;&gt;?&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;OL class=dp-j&gt;
&lt;LI class=alt&gt;&lt;SPAN&gt;&lt;SPAN&gt;StrictMode.setThreadPolicy(&lt;/SPAN&gt;&lt;SPAN class=keyword&gt;new&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;StrictMode.ThreadPolicy.Builder().permitAll().build());&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;PRE class=java style=&quot;DISPLAY: none&quot; name=&quot;code&quot;&gt;StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());&lt;/PRE&gt;
&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/387421879447737119/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/02/httpnetworkonmainthreadexception.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/387421879447737119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/387421879447737119'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/02/httpnetworkonmainthreadexception.html' title='HTTP通信でNetworkOnMainThreadException発生'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-4071367644307250172</id><published>2014-02-02T12:21:00.001+09:00</published><updated>2014-02-02T12:25:09.335+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>CakePHPでMySQLデータベースのテーブルにアクセスする(scaffold)</title><content type='html'>&lt;p&gt;CakePHPでデータベースのテーブルにscaffoldでアクセスする。&lt;br&gt;読み方はスキャフォールド（でよいと思う）。&lt;/p&gt; &lt;p&gt;scaffoldを使用すれば、手っ取り早くテーブルにアクセスすることができる。&lt;br&gt;実際のアプリケーション運用で使用することはないが、開発者がアプリケーションの動作確認を目的にデータベースの操作を行う場合に有用といえる。&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;動作環境&lt;br&gt;・Ubuntu 12.04.3 LTS&lt;br&gt;・CakePHP 2.4.4&lt;br&gt;・MySQL 5.5.34&lt;br&gt;・Apache 2.2.22&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;命名規約&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;scaffoldを使用するためには、CakePHPの命名規約に従う必要がある。&lt;/p&gt; &lt;p&gt;下記は、商品の在庫情報を持つモデル「Stock」を作成する場合の、モデル、コントローラ、データベーステーブルの名前となる。&lt;/p&gt; &lt;p&gt;モデル：Stock&lt;br&gt;コントローラ：StocksController&lt;br&gt;データベースのテーブル：stocks&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;データベーステーブルの作成&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;CakePHPからアクセスするテーブルをデータベースに生成する。&lt;/p&gt; &lt;p&gt;CakePHPからではなく、MySQLのコマンドから下記のSQL文を実行し、テーブルを作成する。&lt;/p&gt; &lt;p&gt; &lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e8c19f1e-8093-447f-b1e7-7c0591d12dea&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;sql&quot;&gt;CREATE TABLE `stocks` (&lt;br /&gt;  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;  `name` varchar(255) NOT NULL,&lt;br /&gt;  `num` int(11) DEFAULT 0,&lt;br /&gt;  PRIMARY KEY (`id`)&lt;br /&gt;);&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;コントローラの作成&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;アクセスするコントローラを作成する。&lt;br&gt;コントローラの中身はscaffoldをpublic変数として持つだけでよい。あとはコントローラの実行時にCakePHPが動的にモデルを生成してくれる。&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e2ffc94e-2d6e-4bed-ac5b-c8da5fdfa256&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;&amp;lt;?php&lt;br /&gt;class StocksController extends AppController {&lt;br /&gt; public $scaffold;&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;u&gt;アクセス&lt;/u&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;生成したテーブルへアクセスするために、下記のURLにアクセスする。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;　&lt;a href=&quot;http://localhost/SampleApl/Stocks&quot;&gt;http://localhost/SampleApl/Stocks&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;アクセス結果は下記のようになる。&lt;br&gt;テーブルが空のため、データは何も表示されない。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiu6J5Uahsh3Caes5Epo416DpDqChqWkbbsU2ywlb5i7A3qUcTZU00FIxGGyWIHE2_TNk8n9nhIxizVdkd0N2_n_DfzzZmCG5NSdkN-py8by2kq3onZb1YNAIbSZngmJvU_jSvKD5D3MaM/s1600-h/CakePHP-%252520the%252520rapid%252520development%252520php%252520framework-%252520Scaffold%252520--%252520Index%252520--%252520Stocks%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;CakePHP- the rapid development php framework- Scaffold -- Index -- Stocks&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;CakePHP- the rapid development php framework- Scaffold -- Index -- Stocks&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfr5HL-9OhY5cQ2FjbGjacYm9hNu8D6i0VfxOVppXXa0chdCKvSGncsX_yvybR32TS9xswpDCfdddwOrOpDhv9tG3FurbkszADqCBF0qraVIw6nYZHEn0pM3Cjx7C2Sy1Dm90DaeT2JNw/?imgmax=800&quot; width=&quot;563&quot; height=&quot;398&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;画面左側の「Actions」メニューの「NewStock」ボタンからデータを挿入することができる。&lt;br&gt;また、挿入したデータの編集、削除も行うことができる。&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/4071367644307250172/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/02/cakephpmysqlscaffold.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/4071367644307250172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/4071367644307250172'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/02/cakephpmysqlscaffold.html' title='CakePHPでMySQLデータベースのテーブルにアクセスする(scaffold)'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEhfr5HL-9OhY5cQ2FjbGjacYm9hNu8D6i0VfxOVppXXa0chdCKvSGncsX_yvybR32TS9xswpDCfdddwOrOpDhv9tG3FurbkszADqCBF0qraVIw6nYZHEn0pM3Cjx7C2Sy1Dm90DaeT2JNw/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-3629202444327250669</id><published>2014-02-01T01:58:00.001+09:00</published><updated>2014-02-02T12:06:35.119+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>CakePHPでデータベースの接続設定</title><content type='html'>&lt;p&gt;CakePHPでデータベースへ接続する。database.phpを編集する。&lt;/p&gt; &lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;p&gt;動作環境&lt;br&gt;・Ubuntu 12.04.3 LTS&lt;br&gt;・CakePHP 2.4.4&lt;br&gt;・MySQL 5.5.34&lt;br&gt;・Apache 2.2.22&lt;/p&gt; &lt;p&gt;CakePHPをインストールしただけでは、データベースに接続できない。&lt;br&gt;インストール後、下記の図の黄色く示されている箇所にあるように、database.phpを用意する必要がある。&lt;br&gt;「Your database configuration file is NOT present. Rename APP/Config/dtabase.php.default to APP/Config/database.php」&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgezrBL3MAcjf5vW5EOORivzRjixgw-mizWMbPQvorsvllWVdVxj_-m_kemTRjUdsefxHfQbcvCpLzpofdKqmxwmbJIFOXK_hjRrb-hV7ibgLJfzBh1cyyxNLrdY6BzOYzOtiC6JoZlRIM/s1600-h/CakePHP-%252520the%252520rapid%252520development%252520php%252520framework-%252520Home%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;CakePHP- the rapid development php framework- Home&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px&quot; border=&quot;0&quot; alt=&quot;CakePHP- the rapid development php framework- Home&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhci7KXQgmxIi4aKQOnoGTtU2haKm4YJlEqVZ-qExrbaKDNPj3Mdqcm_VDxMuwd8g8yuUsWMMRRwOWtdiruXU81KbgSMBIlhXBUXePQ3ypf-jKBO30AAAFSKq0XVjJYV5mtgsCyIWitcB8/?imgmax=800&quot; width=&quot;559&quot; height=&quot;402&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;database.php作成&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;下記のファイルをコピーして、database.phpを作成する。&lt;/p&gt; &lt;p&gt;(CakePHPディレクトリ)/Config/database.php.default&lt;/p&gt; &lt;p&gt;　↓&lt;/p&gt; &lt;p&gt;(CakePHPディレクトリ)/Config/database.php&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;&lt;u&gt;データベース設定&lt;/u&gt;&lt;/h2&gt; &lt;p&gt;database.phpには、DATABASE_CONFIGクラスが定義されている。&lt;/p&gt; &lt;p&gt;そして、DATABASE_CONFIGクラスの中には、ふたつの連想配列が定義されている。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;$default  &lt;li&gt;$test&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;$defaultにはデフォルトで使用するデータベースの情報を設定する。&lt;br&gt;$testにはテスト時に使用するデータベースの情報を設定する。&lt;/p&gt; &lt;p&gt;ここでは、$defaultの項目を変更することにする。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;datasource&lt;/h3&gt; &lt;p&gt;接続するデータベースの種類を設定する。&lt;br&gt;使用するデータベースと、設定値は以下の通り。&lt;/p&gt; &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot; border=&quot;0&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;MySQL&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;Database/MySQL&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;SQLite&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;Database/Sqlite&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;PostgreSQL&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;Database/Postgres&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;SQL Server&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;Database/Sqlserver&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;persistent&lt;/h3&gt; &lt;p&gt;持続的接続を使用するかどうかを設定する。使用する場合は「true」を設定する。負荷が高くなるため、通常は「false」とする。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;host&lt;/h3&gt; &lt;p&gt;DBサーバの存在するホスト名、またはIPアドレスを設定する。CakePHPと同じサーバにDBをインストールしている場合は、「localhost」とする。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;login&lt;/h3&gt; &lt;p&gt;DBサーバにログイン可能なアカウント名を設定する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;password&lt;/h3&gt; &lt;p&gt;loginで設定したアカウントのパスワードを設定する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;database&lt;/h3&gt; &lt;p&gt;使用するデータベース名を設定する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;prefix&lt;/h3&gt; &lt;p&gt;使用するテーブルの頭につける文字列を設定する。必要がなければから文字列を設定する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;encoding&lt;/h3&gt; &lt;p&gt;文字エンコーディングを設定する。特に指定がなければ「utf-8」とする。&lt;br&gt;&lt;/p&gt; &lt;p&gt;これらの項目はすべてが必要なわけではない。データベースがMySQLの場合、最低限datasouce、host、login、password、databaseを設定する。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;設定後、Config/database.phpは下記のようになる。&lt;/p&gt;  &lt;div id=&quot;scid:812469c5-0cb0-4c63-8c15-c81123a09de7:db7430f5-6a8b-461e-a585-2d4e8ea561a4&quot; class=&quot;wlWriterEditableSmartContent&quot; style=&quot;float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px&quot;&gt;&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;class DATABASE_CONFIG {&lt;br /&gt;&lt;br /&gt;	public $default = array(&lt;br /&gt;		&#39;datasource&#39; =&amp;gt; &#39;Database/Mysql&#39;,&lt;br /&gt;		&#39;persistent&#39; =&amp;gt; false,&lt;br /&gt;		&#39;host&#39; =&amp;gt; &#39;localhost&#39;,&lt;br /&gt;		&#39;login&#39; =&amp;gt; &#39;XXXXX&#39;,&lt;br /&gt;		&#39;password&#39; =&amp;gt; &#39;XXXXX&#39;,&lt;br /&gt;		&#39;database&#39; =&amp;gt; &#39;Sample&#39;,&lt;br /&gt;		&#39;prefix&#39; =&amp;gt; &#39;&#39;,&lt;br /&gt;		&#39;encoding&#39; =&amp;gt; &#39;utf8&#39;,&lt;br /&gt;	);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;設定後、CakePHPへアクセスすると下記の図のようにデータベースに接続できるようになる。&lt;br&gt;「Your database configuration file is present.」&lt;br&gt;「CakePHP is able to connect to the database.」&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9TzCx3RHz4MLiVTcA8OOOklwibq1cdKAA_Zgv9nLBZIuvxoZeohiSq2ByihbnzjVyQsTuq_azGf_ZAeVSzRUth_5ieBv-zXINq2YIHAkO8DigAGcPDAJbltkFIwB9UDTZtkF-X4wsDDc/s1600-h/CakePHP-%252520the%252520rapid%252520development%252520php%252520framework-%252520Home2%25255B3%25255D.png&quot;&gt;&lt;img title=&quot;CakePHP- the rapid development php framework- Home2&quot; style=&quot;border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px&quot; border=&quot;0&quot; alt=&quot;CakePHP- the rapid development php framework- Home2&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjliyfumU7XnkRvBT0wG5sX0GNSaEGso-Ib_PkpHLsTO0kCJQzSS3I376xpsKio2rLIu7Q3naxac5cZI_Eqdcl2n61JnuiqDV5rlfUxaNkhgXDdfCy7tymBm6fpa-6fXTL_dzjMCe7Xy8A/?imgmax=800&quot; width=&quot;560&quot; height=&quot;402&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/3629202444327250669/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/02/cakephp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3629202444327250669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3629202444327250669'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/02/cakephp.html' title='CakePHPでデータベースの接続設定'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEhci7KXQgmxIi4aKQOnoGTtU2haKm4YJlEqVZ-qExrbaKDNPj3Mdqcm_VDxMuwd8g8yuUsWMMRRwOWtdiruXU81KbgSMBIlhXBUXePQ3ypf-jKBO30AAAFSKq0XVjJYV5mtgsCyIWitcB8/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-6605673559488804602</id><published>2014-01-26T23:16:00.001+09:00</published><updated>2014-01-30T02:26:25.726+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>CakePHPのディレクトリ構成</title><content type='html'>&lt;p&gt;CakePHPはフレームワークなので、ファイルの格納場所や変更に制限がある。&lt;/p&gt; &lt;p&gt;下記の図に大まかに整理した。&lt;br&gt;頻繁に使用するディレクトリには◎、書き換えてはいけないディレクトリには×をつけた。&lt;/p&gt; &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot; border=&quot;0&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;CakePHP&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　├　app&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;アプリケーションを格納&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Config&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;◎&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;設定ファイル&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Console&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;コンソール機能用のシェルなど&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Controller&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;◎&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;アプリの制御を司る部分&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Lib&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;自分で作成したライブラリ&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Locale&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;国際化のための辞書ファイル&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Model&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;◎&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;データベース処理&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Plugin&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;CakePHPを拡張するプラグイン&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Test&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;試験用の試験ケース&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　tmp&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;ログや一時ファイルが格納される&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　Vendor&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;外部のライブラリを格納&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　├　View&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;◎&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;表示用ファイル&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　└　webroot&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;画像などの静的なコンテンツ&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　├　lib&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　│　　└　Cake&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;×&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;CakePHPの核となる部分&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　├　plugins&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;　└　vendors　&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;外部ライブラリを格納&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;133&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;32&quot;&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;234&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/6605673559488804602/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/01/cakephp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6605673559488804602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/6605673559488804602'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/01/cakephp.html' title='CakePHPのディレクトリ構成'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-2919231313416315329</id><published>2014-01-20T00:01:00.000+09:00</published><updated>2014-01-23T01:19:48.408+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>CakePHPをUbuntuにインストールする</title><content type='html'>&lt;br /&gt;
UbuntuにCakePHPの実行環境を構築してみる。&lt;br /&gt;
作業環境は、Ubuntu 12.04.3 LTSで実施する。&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
&lt;u&gt;まずインストールするもの&lt;/u&gt;&lt;/h2&gt;
CakePHPをインストールする前に下記のものをインストールする必要がある。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;php5  &lt;/li&gt;
&lt;li&gt;apache2  &lt;/li&gt;
&lt;li&gt;mysql-server&lt;/li&gt;
&lt;/ul&gt;
インストールなど色々設定は必要だが、ここでは省略。&lt;br /&gt;
下記のサイトがWebサーバの構築に役立つので参考にしてほしい。&lt;br /&gt;
&lt;a href=&quot;http://www.server-world.info/query?os=Ubuntu_12.04&amp;amp;p=httpd&quot;&gt;Ubuntu 12.04 LTS - WEBサーバー - Apache2 インストール/設定 ： Server World&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;CakePHPをダウンロード&lt;/u&gt;&lt;/h2&gt;
CakePHPを公式サイトからダウンロードする。&lt;br /&gt;
&lt;a href=&quot;http://cakephp.org/&quot;&gt;CakePHP: the rapid development php framework. Pages&lt;/a&gt;&lt;br /&gt;
サイト上部の「Downloads」→「Releases」からGitHubへ移動し、バージョン2.4.4のファイル「cakephp-2.4.4.tar.gz」をダウンロードする。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;cakePHPをインストール&lt;/u&gt;&lt;/h2&gt;
ダウンロードしたファイルをホームディレクトリに格納する。&lt;br /&gt;
（以降、ホームディレクトリ「&lt;a href=&quot;http://localhost/&quot;&gt;http://localhost/&lt;/a&gt;」で表示されるファイルが格納される場所が「/var/www/」である前提）&lt;br /&gt;
解凍した状態だとディレクトリが「cakephp-2.4.4」なので、作成したいWebアプリの名称に変更する。&lt;br /&gt;
（以降、Webアプリ名称は「SampleApl」である前提）&lt;br /&gt;
　/var/www/SampleApl/&lt;br /&gt;
&lt;br /&gt;
CakePHP格納後、&lt;br /&gt;
　&lt;a href=&quot;http://localhost/SampleApl/&quot;&gt;http://localhost/SampleApl/&lt;/a&gt;&lt;br /&gt;
にアクセスすると、下記の図のように表示される。&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxvTKbadcXcuKsEI8ONxgfQg5nZy9wGkBLdNQAuEAHiLzCNa0D3FW0tQJzLjJi9leWD1HebWrdMYarZaWpEiSy6eco7DHSX8c56xyzMeMjJXYU7GD1FZ-z_bzbGwWvfALHO5XpTQHid0k/s1600-h/20130119_01%25255B8%25255D.png&quot;&gt;&lt;img alt=&quot;20130119_01&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1FQxRHgJKKVEVw5fKgbWQfsgpTCrJB59uZ4fTv_GRsQ0vrwgYxPZtUfpxm2Bs35xEHPBJD44kC7GyOiFUa8LDxnkefoFGY7oa3GbU9huyatTmKiDE-JvpqOTiEHvoILEwcZsJQ3l9p4A/?imgmax=800&quot; height=&quot;208&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;20130119_01&quot; width=&quot;549&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
これでCakePHPへのアクセスは成功。&lt;br /&gt;
色々WarningやらErrorやらが出ていたりグラフィカルでないのは、これから設定を変更して解消していく。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;u&gt;設定変更&lt;/u&gt;&lt;/h2&gt;
&lt;h3&gt;
mod-rewriteを有効化 &lt;/h3&gt;
mod-rewriteとは、アクセスするURLを正規表現で書き換えたりすることができるApacheのモジュール。リダイレクト処理を行ったり、動的ページを静的ページに見せたりできる。&lt;br /&gt;
CakePHPでは、mod-rewriteが有効出ないとCSSが機能せず、サイトデザインが崩れてしまう。&lt;br /&gt;
これを有効にするためには、まず、下記のコマンドを実行する。&lt;br /&gt;
　% a2enmod rewrite&lt;br /&gt;
さらに、「.htaccess」が有効になっていなければ、有効にするため、下記のファイルを編集する。&lt;br /&gt;
　/etc/apache2/sites-enabled/000-default&lt;br /&gt;
ファイル内のホームディレクトリを指すパスの設定を書き換える。&lt;br /&gt;
&amp;lt;Directory /var/www/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options FollowSymLinks ExecCGI&lt;br /&gt;
&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride All&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
そして、apacheを再起動する。&lt;br /&gt;
　% /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
tmpディレクトリのパーミッション変更&lt;/h3&gt;
CakePHPでは、セッションのキャッシュなどを保存するために、tmpディレクトリに書き込み、実行権限を与える。&lt;br /&gt;
　/var/www/SampleApl/app/tmp&lt;br /&gt;
上記のディレクトリに対し、書き込み、実行権限を与えるコマンドを実行する。&lt;br /&gt;
　% chmod -R 777 /var/www/SampleApl/app/tmp&lt;br /&gt;
&lt;br /&gt;
この時点で&lt;br /&gt;
　&lt;a href=&quot;http://localhost/SampleApl/&quot;&gt;http://localhost/SampleApl/&lt;/a&gt;&lt;br /&gt;
にアクセスすると、下記の図のように表示される。&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrGmjuB3FJodG1Ca5An6OhaKOhoYXQcTW8HXtZsa3gvDTqOcOcGK8x6knl0FNfRsjiHl7V9ve2BwOBBANYzGUMevXd-fij1iStpbNoPQ-cNEFLf15VFiguVcp-hBwMrpMvavu05PGJo-k/s1600-h/20130119_02%25255B3%25255D.png&quot;&gt;&lt;img alt=&quot;20130119_02&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEherL8mYAdbKNY6QebHesnk9xhdxqg_6uazink4FQwbczGBa4nPE-urVEAhxXFwIMTY2RpmPzMzfthmNEZu3yJeEwd6GjMMoFqhJH4_3ZeRzpp5fotIJMZvwu98HU0WokeuZTvz0xzWWes/?imgmax=800&quot; height=&quot;403&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;20130119_02&quot; width=&quot;561&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
まだエラーが存在している。（上記画像の赤い部分）&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
セキュリティ設定&lt;/h3&gt;
Security.saltとSecurity.cipherSeedのエラーは、ハッシュ化や暗号化の際に使用する文字列や数値がデフォルト値のままであるために発生している。&lt;br /&gt;
エラー内容に記されているファイルを変更する。&lt;br /&gt;
　/var/www/SampleApl/app/Config/core.php&lt;br /&gt;
225行目と230行目をそれぞれ適当な文字列、数値に置き換える。&lt;br /&gt;
/**&lt;br /&gt;
* A random string used in security hashing methods.&lt;br /&gt;
*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Configure::write(&#39;Security.salt&#39;, 40文字程度の文字列を設定する);&lt;br /&gt;
/**&lt;br /&gt;
* A random numeric string (digits only) used to encrypt/decrypt strings.&lt;br /&gt;
*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Configure::write(&#39;Security.cipherSeed&#39;, 30文字程度の数値を設定する);&lt;br /&gt;
&lt;br /&gt;
変更後、下記の図ようになる。&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheWfduN1hgAvtwHa7x1JUCkzLWEyR-SV51087S4XTyZgG0m5VccMizAU5KsntwiWDBu6Et3ps_5cq31Lrft2JypNWKKTyXW8yGb4AXFkcY9Qy6ABGxGAHP1uf6CEZPRmSBe-0fxbPOZM8/s1600-h/20130119_03%25255B4%25255D.png&quot;&gt;&lt;img alt=&quot;20130119_03&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE49okHz5B6mMJk2-a_nRmUGHTzxiKsAQRv2QUbffoDT3CbeM72R6tQ4S0SYtM4N22aa0yqGdPpJpRCtQJBMQdDS-k1MfbazGyrqR0mdwCmx6-v819_9bMhLBFf5g6AM08nVqtSYRZHh0/?imgmax=800&quot; height=&quot;409&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;20130119_03&quot; width=&quot;558&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これで、CakePHPのインストールが完了した。 &lt;br /&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;
&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; border=&quot;0&quot; src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; height=&quot;31&quot; width=&quot;88&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/2919231313416315329/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2014/01/cakephpubuntu.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/2919231313416315329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/2919231313416315329'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2014/01/cakephpubuntu.html' title='CakePHPをUbuntuにインストールする'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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/AVvXsEj1FQxRHgJKKVEVw5fKgbWQfsgpTCrJB59uZ4fTv_GRsQ0vrwgYxPZtUfpxm2Bs35xEHPBJD44kC7GyOiFUa8LDxnkefoFGY7oa3GbU9huyatTmKiDE-JvpqOTiEHvoILEwcZsJQ3l9p4A/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1199537066454887912.post-236938884197661356</id><published>2013-12-23T00:00:00.000+09:00</published><updated>2014-01-19T11:46:59.563+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>PHPのmysql関数が非推奨になっていた</title><content type='html'>しばらくぶりにPHPからMySQLにアクセスしようと、&lt;br /&gt;
Webでmysql_queryなどの使い方を調べていたら、&lt;br /&gt;
PHPのmysql関数がPHP5.5.0から非推奨になっていた。&lt;br /&gt;
&lt;a data-mce-href=&quot;http://www.php.net/manual/ja/intro.mysql.php&quot; data-mce-style=&quot;line-height: 1.5;&quot; href=&quot;http://www.php.net/manual/ja/intro.mysql.php&quot; style=&quot;line-height: 1.5;&quot;&gt;http://www.php.net/manual/ja/intro.mysql.php&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
mysql関数の代わりにどうやってMySQL接続するかだが、&lt;br /&gt;
PHP標準には接続方法が三種類あって、&lt;br /&gt;
mysql(これまで使用していたもの)、mysqli、PDOのいずれかを使用できるようだ。&lt;br /&gt;
&lt;a data-mce-href=&quot;http://www.php.net/manual/ja/mysqlinfo.api.choosing.php&quot; href=&quot;http://www.php.net/manual/ja/mysqlinfo.api.choosing.php&quot;&gt;PHP: どの API を使うか - Manual&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
mysql関数が非推奨になった(PHP5.5.0が公開された)のはだいぶ前のことなので、&lt;br /&gt;
mysqliとPDOのどちらかを使うのがよいだろう。&lt;br /&gt;
どちらがよいか検索してみると、比較しているサイトを見つけることができた。&lt;br /&gt;
mysql関数からの置き換えやすいのはmysqli、&lt;br /&gt;
DBの抽象化をしておく必要があるのならPDO、などなど。&lt;br /&gt;
&lt;br /&gt;
どちらを使うべきか、検討中。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/236938884197661356/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2013/12/ql.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/236938884197661356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/236938884197661356'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2013/12/ql.html' title='PHPのmysql関数が非推奨になっていた'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-3799100771206582761</id><published>2013-12-22T00:00:00.000+09:00</published><updated>2014-01-19T11:44:58.027+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="セキュリティ"/><title type='text'>ウェブカメラを通して見られている？</title><content type='html'>あるだろうなと思ってたが、やっぱりあった。&lt;br /&gt;
Webカメラを使ったマルウェア。&lt;br /&gt;
&lt;br /&gt;
&lt;a data-mce-href=&quot;http://www.symantec.com/connect/ja/blogs-323&quot; href=&quot;http://www.symantec.com/connect/ja/blogs-323&quot;&gt;クリープウェア: 誰かに見られているかもしれない | Symantec Connect コミュニティ&lt;/a&gt;&lt;br /&gt;
&lt;a data-mce-href=&quot;http://internet.watch.impress.co.jp/docs/news/20131216_627885.html&quot; href=&quot;http://internet.watch.impress.co.jp/docs/news/20131216_627885.html&quot;&gt;見られてるかも……PCのウェブカメラをシールでふさぐのは被害妄想ではない -INTERNET Watch&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
いまやマルウェアはハードディスク内の情報を盗むだけではなく、&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;カメラで撮影した画像や動画&lt;/li&gt;
&lt;li&gt;マイクで録音した音声&lt;/li&gt;
&lt;li&gt;キーボードから入力された文字列&lt;/li&gt;
&lt;/ul&gt;
など、PCに付属する入力装置から得られるものはなんでも盗むことができるとのこと。&lt;br /&gt;
&lt;br /&gt;
特に、スマートフォンにはいくつものセンサーが搭載されている。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;重力&lt;/li&gt;
&lt;li&gt;加速度&lt;/li&gt;
&lt;li&gt;位置情報&lt;/li&gt;
&lt;li&gt;方角&lt;/li&gt;
&lt;li&gt;近接&lt;/li&gt;
&lt;li&gt;輝度&lt;/li&gt;
&lt;li&gt;ジャイロ&lt;/li&gt;
&lt;li&gt;磁場&lt;/li&gt;
&lt;li&gt;温度&lt;/li&gt;
&lt;li&gt;気圧&lt;/li&gt;
&lt;/ul&gt;
スマートフォン向けのマルウェアだと、&lt;br /&gt;
これらを利用したものもあるのだろうか。きっとあるのだろう。&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/3799100771206582761/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2013/12/blog-post_22.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3799100771206582761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/3799100771206582761'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2013/12/blog-post_22.html' title='ウェブカメラを通して見られている？'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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-1199537066454887912.post-221991034703121350</id><published>2013-12-19T00:00:00.000+09:00</published><updated>2014-01-19T11:43:58.381+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Webサービス"/><title type='text'>世界の終わり　セカイカメラのサービス終了</title><content type='html'>セカイカメラサービス終了のお知らせ&lt;br /&gt;
&lt;a data-mce-href=&quot;http://sekaicamera.com/the_end_of_sekai&quot; href=&quot;http://sekaicamera.com/the_end_of_sekai&quot;&gt;http://sekaicamera.com/the_end_of_sekai&lt;/a&gt;&lt;br /&gt;
↑URLがナイス&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;ul&gt;
&lt;li&gt;位置情報型&lt;/li&gt;
&lt;/ul&gt;
利用者のいる緯度経度から付加情報を表示させる。&lt;br /&gt;
セカイカメラは位置情報型だろう。&lt;br /&gt;
観光事業では、観光名所にタグをつけ、旅行者向けの情報を出現させるといったことができる。&lt;br /&gt;
位置情報を使った道案内もできるだろう。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;マーカー型&lt;/li&gt;
&lt;/ul&gt;
QRコードなどのマーカーを読み取ることで付加情報を表示させる。&lt;br /&gt;
広告に載せてクーポンを提供することができたりする。&lt;br /&gt;
マーカーを床に置いて家具を配置してみると、購入後の雰囲気がわかるといったサービスが可能。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;マーカーレス型&lt;/li&gt;
&lt;/ul&gt;
こちらは付加情報を出現させるために、マーカーではなく、現実の物を使う手法。&lt;br /&gt;
木があったらクリスマスツリーにしてみるとか、&lt;br /&gt;
顔認識でその人の名前を表示させるとか。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;センサー型&lt;/li&gt;
&lt;/ul&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;div class=&quot;blogger-post-footer&quot;&gt;&lt;a href=&quot;http://it.blogmura.com/androidappli/&quot;&gt;&lt;img src=&quot;http://it.blogmura.com/androidappli/img/androidappli88_31.gif&quot; width=&quot;88&quot; height=&quot;31&quot; border=&quot;0&quot; alt=&quot;にほんブログ村 ＩＴ技術ブログ Androidアプリ開発へ&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tikuflower.blogspot.com/feeds/221991034703121350/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://tikuflower.blogspot.com/2013/12/httpsekaicamera.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/221991034703121350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1199537066454887912/posts/default/221991034703121350'/><link rel='alternate' type='text/html' href='http://tikuflower.blogspot.com/2013/12/httpsekaicamera.html' title='世界の終わり　セカイカメラのサービス終了'/><author><name>333</name><uri>http://www.blogger.com/profile/12996397695715438440</uri><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>