top-image

OLDER ARTICLES

EC-CUBEではカテゴリーのMETAタグは管理画面のSEO管理画面で一括で登録します。

なので各カテゴリーに違うMETAタグは登録できません。

最近はkeywordとdescriptionに関してはSEO対策として効果が無いと書いてあるサイトが多いですが、設定できる項目がある以上違う文章を載せたほうがいいと思います。

Googleなどの大手が『keywordとdescriptionの設定は必要ない』と正式に発表されれば設定する必要が無くなると思いますが、現在そのような発表は無いようです。

検索エンジンも日々変化しています、今はSEOに効果なくても1ヶ月後には効果が出る可能性もあります。
※必要ないと思う方は、設定する必要がありません。

データベースのdtb_category
カラム名:category_keyword データ型: text
カラム名:category_description データ型: text
を追加します。

data/smarty/templates/admin/products/category.tplに下記を追加します。

<table>          
   <th>ヘッダーh1テキスト</th>
   <td><span><!--{$arrErr.category_h1_txt}--></span>
   <input type="text" name="category_h1_txt" value="<!--{$arrForm.category_h1_txt|h}-->" size="65" /></td>
   <tr>
   <th>Keyword</th>
   <td><span><!--{$arrErr.category_keyword}--></span>
   <input type="text" name="category_keyword" value="<!--{$arrForm.category_keyword|h}-->" size="65" /></td>
   <tr>
   <th>Description</th>
   <td><span><!--{$arrErr.category_description}--></span>
   <input type="text" name="category_description" value="<!--{$arrForm.category_description|h}-->" size="65" /></td>
</table>

data/class_extends/products/LC_Products_List_Ex.phpに下記を追加する。

function lfGetCategoryId($category_id) {

        // 指定なしの場合、0 を返す
        if (empty($category_id)) return 0;

        // 正当性チェック
        if (!SC_Utils_Ex::sfIsInt($category_id)
            || SC_Utils_Ex::sfIsZeroFilling($category_id)
            || !SC_Helper_DB_Ex::sfIsRecord('dtb_category', 'category_id', (array)$category_id, 'del_flg = 0')
            ) {
            SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);
        }

        // 指定されたカテゴリIDを元に正しいカテゴリIDを取得する。
        $arrCategory_id = SC_Helper_DB_Ex::sfGetCategoryId('', $category_id);

        if (empty($arrCategory_id)) {
            SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);
        }
        $objQuery = new SC_Query();
        // 追加:カテゴリ説明
        $this->category_info = $objQuery->get("category_info", "dtb_category", "category_id = ?", $arrCategory_id);
        $objQuery = new SC_Query();
        $this->category_h1_txt = $objQuery->get("category_h1_txt", "dtb_category", "category_id = ?", $arrCategory_id);
        $objQuery = new SC_Query();         $this->category_keyword = $objQuery->get("category_keyword", "dtb_category", "category_id = ?", $arrCategory_id);         $objQuery = new SC_Query();         $this->category_description = $objQuery->get("category_description", "dtb_category", "category_id = ?", $arrCategory_id);
        return $arrCategory_id[0];
    }

data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Category_Ex.phpに下記を追加する。

    function doPreEdit(&$objFormParam) {
        $category_id = $objFormParam->getValue('category_id');

        $objQuery =& SC_Query_Ex::getSingletonInstance();

        // 編集対象のカテゴリ名をDBより取得する
        $where = "category_id = ?";
        // $category_name = $objQuery->get("category_name", "dtb_category", $where, array($category_id));
            $col = "category_name, category_info, info_flg, category_h1_txt, category_keyword, category_description, level";
            $arrRet = $objQuery->select($col, "dtb_category", $where, array($_POST['category_id']));

        // 入力ボックスへカテゴリ名を保持する.
        // $this->arrForm['category_name'] = $category_name;
            $this->arrForm['category_name'] = $arrRet[0]['category_name'];
            $this->arrForm['category_info'] = $arrRet[0]['category_info'];
            $this->arrForm['info_flg'] = $arrRet[0]['info_flg'];
            $this->arrForm['category_h1_txt'] = $arrRet[0]['category_h1_txt'];
            $this->arrForm['category_keyword'] = $arrRet[0]['category_keyword'];
            $this->arrForm['category_description'] = $arrRet[0]['category_description'];
            $this->arrForm['level'] = $arrRet[0]['level'];

        // カテゴリIDを保持する.
        $this->arrForm['category_id']   = $category_id;
    }

    /**
     * カテゴリの編集を実行する.
     *
     * 下記の場合は, 編集を実行せず、エラーメッセージを表示する
     *
     * - カテゴリ名がすでに使用されている場合
     *
     * @param SC_FormParam $objFormParam
     * @return void
     */
    function doEdit(&$objFormParam) {
        // 入力項目チェック
        $arrErr = $objFormParam->checkError();
        if (count($arrErr) > 0) {
            $this->arrErr = $arrErr;
            $this->arrForm['category_id']   = $objFormParam->getValue('category_id');
            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            $this->arrForm['category_info'] = $objFormParam->getValue('category_info');
            $this->arrForm['category_h1_txt'] = $objFormParam->getValue('category_h1_txt');
            $this->arrForm['category_keyword'] = $objFormParam->getValue('category_keyword');
            $this->arrForm['category_description'] = $objFormParam->getValue('category_description');
            $this->arrForm['info_flg'] = $objFormParam->getValue('info_flg');
            return;
        }

        // 重複チェック
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $where = "parent_category_id = ? AND category_id <> ? AND category_name = ?";
        $count = $objQuery->count("dtb_category",
                                  $where,
                                  array($objFormParam->getValue('parent_category_id'),
                                        $objFormParam->getValue('category_id'),
                                        $objFormParam->getValue('category_name')));
        if ($count > 0) {
            $this->arrErr['category_name']  = "※ 既に同じ内容の登録が存在します。<br/>";
            $this->arrForm['category_id']   = $objFormParam->getValue('category_id');
            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            return;
        }

        // カテゴリ更新
        $arrCategory = array();
        $arrCategory['category_name'] = $objFormParam->getValue('category_name');
        $arrCategory['category_info'] = $objFormParam->getValue('category_info');
        $arrCategory['info_flg'] = $objFormParam->getValue('info_flg');
        $arrCategory['category_h1_txt'] = $objFormParam->getValue('category_h1_txt');
        $arrCategory['category_keyword'] = $objFormParam->getValue('category_keyword');
        $arrCategory['category_description'] = $objFormParam->getValue('category_description');
        $arrCategory['update_date']   = 'NOW()';
        $this->updateCategory($objFormParam->getValue('category_id'), $arrCategory);
    }

    /**
     * カテゴリの登録を実行する.
     *
     * 下記の場合は, 登録を実行せず、エラーメッセージを表示する
     *
     * - カテゴリ登録数の上限を超える場合
     * - 階層登録数の上限を超える場合
     * - カテゴリ名がすでに使用されている場合
     *
     * @param SC_FormParam $objFormParam
     * @return void
     */
    function doRegister(&$objFormParam) {
        // 入力項目チェック
        $arrErr = $objFormParam->checkError();
        if (count($arrErr) > 0) {
            $this->arrErr = $arrErr;
            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            $this->arrForm['category_info'] = $objFormParam->getValue('category_info');
            $this->arrForm['info_flg'] = $objFormParam->getValue('info_flg');
            $this->arrForm['category_h1_txt'] = $objFormParam->getValue('category_h1_txt');
            $this->arrForm['category_keyword'] = $objFormParam->getValue('category_keyword');
            $this->arrForm['category_description'] = $objFormParam->getValue('category_description');
            return;
        }

        // 登録数上限チェック
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $where = "del_flg = 0";
        $count = $objQuery->count("dtb_category", $where);
        if ($count >= CATEGORY_MAX) {
            $this->arrErr['category_name']  = "※ カテゴリの登録最大数を超えました。<br/>";
            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            return;
        }

        // 階層上限チェック
        if ($this->isOverLevel($objFormParam->getValue('parent_category_id'))) {
            $this->arrErr['category_name']  = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>";
            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            return;
        }

        // 重複チェック
        $where = "parent_category_id = ? AND category_name = ?";
        $count = $objQuery->count("dtb_category",
                                  $where,
                                  array($objFormParam->getValue('parent_category_id'),
                                        $objFormParam->getValue('category_name')));
        if ($count > 0) {
            $this->arrErr['category_name']  = "※ 既に同じ内容の登録が存在します。<br/>";
            $this->arrForm['category_name'] = $objFormParam->getValue('category_name');
            return;
        }

        // カテゴリ登録
        $this->registerCategory($objFormParam->getValue('parent_category_id'),
                                $objFormParam->getValue('category_name'),
                                $objFormParam->getValue('category_info'),
                                $objFormParam->getValue('info_flg'),
                                $objFormParam->getValue('category_h1_txt'),
                                $objFormParam->getValue('category_keyword'),
                                $objFormParam->getValue('category_description'),
                                $_SESSION['member_id']);
    }

    /**
     * カテゴリの表示順序を上へ移動する.
     *
     * @param SC_FormParam $objFormParam
     * @return void
     */
    function doUp(&$objFormParam) {
        $category_id = $objFormParam->getValue('category_id');

        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objQuery->begin();
        $up_id = $this->lfGetUpRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);
        if ($up_id != "") {
            // 上のグループのrankから減算する数
            $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);
                // 自分のグループのrankに加算する数
                $up_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id);
                if ($my_count > 0 && $up_count > 0) {
                    // 自分のグループに加算
                    $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id, $up_count);
                    // 上のグループから減算
                    $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id, $my_count);
                }
        }
        $objQuery->commit();
    }

    /**
     * カテゴリの表示順序を下へ移動する.
     *
     * @param SC_FormParam $objFormParam
     * @return void
     */
    function doDown(&$objFormParam) {
        $category_id = $objFormParam->getValue('category_id');

        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objQuery->begin();
        $down_id = $this->lfGetDownRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);
        if ($down_id != "") {
            // 下のグループのrankに加算する数
            $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id);
            // 自分のグループのrankから減算する数
            $down_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id);
            if ($my_count > 0 && $down_count > 0) {
                // 自分のグループから減算
                $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id, $my_count);
                // 下のグループに加算
                $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $category_id, $down_count);
            }
        }
        $objQuery->commit();
    }

    /**
     * パラメータの初期化を行う
     *
     * @param SC_FormParam $objFormParam
     * @return void
     */
    function initParam(&$objFormParam) {
        $objFormParam->addParam("親カテゴリID", "parent_category_id", null, null, array());
        $objFormParam->addParam("カテゴリID", "category_id", null, null, array());
        $objFormParam->addParam("カテゴリ名", "category_name", STEXT_LEN, 'KVa', array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
        $objFormParam->addParam("カテゴリ説明", "category_info", LLTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
        $objFormParam->addParam("親カテゴリコピーフラグ", "info_flg", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
        $objFormParam->addParam("カテゴリh1テキスト", "category_h1_txt", LLTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
        $objFormParam->addParam("Keywrodテキスト", "category_keyword", LLTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
        $objFormParam->addParam("Descriptionテキスト", "category_description", LLTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
    }

    /**
     * 親カテゴリIDでカテゴリを検索する.
     *
     * - 表示順の降順でソートする
     * - 有効なカテゴリを返す(del_flag = 0)
     *
     * @param SC_Query $objQuery
     * @param int $parent_category_id 親カテゴリID
     * @return array カテゴリの配列
     */
    function findCategoiesByParentCategoryId($parent_category_id) {
        if (!$parent_category_id) {
            $parent_category_id = 0;
        }
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $col   = "category_id, category_name, level, rank";
        $where = "del_flg = 0 AND parent_category_id = ?";
        $objQuery->setOption("ORDER BY rank DESC");
        return $objQuery->select($col, "dtb_category", $where, array($parent_category_id));
    }

    /**
     * カテゴリを更新する
     *
     * @param integer $category_id 更新対象のカテゴリID
     * @param array 更新する カラム名 => 値 の連想配列
     * @return void
     */
    function updateCategory($category_id, $arrCategory) {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objQuery->begin();
        $where = "category_id = ?";

        //追記:親の設定を引き継ぐ時
        if($arrCategory['info_flg']) {
            $parent_category_id = $objQuery->get("parent_category_id", "dtb_category", $where, array($category_id));
            $arrCategory['category_info'] = $this->lfGetParentInfo($objQuery, $parent_category_id);
        }

        $objQuery->update("dtb_category", $arrCategory, $where, array($category_id));
        $objQuery->commit();
    }

    /**
     * カテゴリを登録する
     *
     * @param integer 親カテゴリID
     * @param string カテゴリ名
     * @param integer 作成者のID
     * @return void
     */
    function registerCategory($parent_category_id, $category_name, $category_info, $info_flg, $category_h1_txt, $category_keyword, $category_description, $creator_id) {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objQuery->begin();

        $rank = null;
        if ($parent_category_id == 0) {
            // ROOT階層で最大のランクを取得する。
            $where = "parent_category_id = ?";
            $rank = $objQuery->max('rank', "dtb_category", $where, array($parent_category_id)) + 1;
        } else {
            // 親のランクを自分のランクとする。
            $where = "category_id = ?";
            $rank = $objQuery->get('rank', "dtb_category", $where, array($parent_category_id));
            // 追加レコードのランク以上のレコードを一つあげる。
            $sqlup = "UPDATE dtb_category SET rank = (rank + 1) WHERE rank >= ?";
            $objQuery->exec($sqlup, array($rank));
        }

        $where = "category_id = ?";
        // 自分のレベルを取得する(親のレベル + 1)
        $level = $objQuery->get('level', "dtb_category", $where, array($parent_category_id)) + 1;

        $arrCategory = array();
        $arrCategory['category_name'] = $category_name;
        $arrCategory['parent_category_id'] = $parent_category_id;
        $arrCategory['create_date'] = "Now()";
        $arrCategory['update_date'] = "Now()";
        $arrCategory['creator_id']  = $creator_id;
        $arrCategory['rank']        = $rank;
        $arrCategory['level']       = $level;
        $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id');
        $arrCategory['category_info'] = $category_info;
        $arrCategory['info_flg'] = $info_flg;
        $arrCategory['category_h1_txt'] = $category_h1_txt;
        $arrCategory['category_keyword'] = $category_keyword;
        $arrCategory['category_description'] = $category_description;

        //追記:親の設定を引き継ぐ時
        if($arrCategory['info_flg']) {
            $arrCategory['category_info'] = $this->lfGetParentInfo($objQuery, $parent_category_id);
        }

        $objQuery->insert("dtb_category", $arrCategory);

        $objQuery->commit();    // トランザクションの終了
    }

    /**
     * カテゴリの階層が上限を超えているかを判定する
     *
     * @param integer 親カテゴリID
     * @param 超えている場合 true
     */
    function isOverLevel($parent_category_id) {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $level = $objQuery->get('level', "dtb_category", "category_id = ?", array($parent_category_id));
        return $level >= LEVEL_MAX;
    }

    /**
    * デストラクタ.
    *
    * @return void
    */
    function destroy() {
    parent::destroy();
    }

    // 追記:親のcategory_infoを取得する
    function lfGetParentInfo($objQuery, $pid) {
        $where = "category_id = ?";
        $parent_info = $objQuery->get("category_info", "dtb_category", $where, array($pid));
        return $parent_info;
    }

data/Smarty/templates/default/site_frame.tplの該当部分を変更します。

<!--{if $category_description|strlen >= 1}-->
    <meta name="description" content="<!--{$category_description|h}-->" />
<!--{elseif $arrPageLayout.description|strlen >= 1}-->
    <meta name="description" content="<!--{$arrPageLayout.description|h}-->" />
<!--{/if}-->
<!--{if $category_keyword|strlen >= 1}-->
    <meta name="keywords" content="<!--{$category_keyword|h}-->" />
<!--{elseif $arrPageLayout.keyword|strlen >= 1}-->
    <meta name="keywords" content="<!--{$arrPageLayout.keyword|h}-->" />
<!--{/if}-->

これによりカテゴリー毎にKeywordとDescriptionが設定表示できるようになります。

設定していないカテゴリーは管理画面のSSEO管理画面で登録したkeywordとDescriptionが表示されます。

EC-CUBEでの商品詳細ページのメタタグは一括設定で各ページに個別設定ができません。

DBを追加し商品登録ページに新しく設定できる欄を追加してもいいのですが、せっかく流用できる情報が商品登録ページにあるのでそれを使いたいと思います。

検索ワードをMeta Keywordに設定し、一覧メインコメントにMeta Descriptionが設定されるようになります。

data/class/pages/products/LC_Page_Products_Detail.phpのfunction action()の最後に追加します。

263行あたりに以下の太字を追加します。

        //関連商品情報表示
        $this->arrRecommend = $this->lfPreGetRecommendProducts($product_id);

        // ログイン判定
        if ($objCustomer->isLoginSuccess() === true) {
            //お気に入りボタン表示
            $this->tpl_login = true;
            $this->is_favorite = SC_Helper_DB_Ex::sfDataExists('dtb_customer_favorite_products', 'customer_id = ? AND product_id = ?', array($objCustomer->getValue('customer_id'), $product_id));
        }

        //詳細ページのKeywordを検索ワードに変更
        $this->arrPageLayout['keyword'] = $this->arrPageLayout['keyword']. $this->arrProduct['comment3'];
        //詳細ページのDescriptionを一覧コメントに変更
        $this->arrPageLayout['description'] = $this->arrPageLayout['description']. $this->arrProduct['main_list_comment'];

これにより詳細ページのメタタグは各ページ違うのになります。

後は、各商品登録時にSEOを意識したキーワードや文章を各検索ワードや一覧メインコメントに設定します。

本格的にスマートフォンを使いだして数ヶ月経ちます。

現在使っているのはL-04Cという機種で、ネットで5000~7000円で販売していたものです。

スペックは現行機種に比べ随分低いのですが、キーボードが使いやすくかなり私としては神機として使用しています。

様々なアプリをインストールしてはアンイントールしたりと随分様々なアプリを使用して、最近は使うアプリも定着して使っていても不満が無いほどアプリの完成度も上がってきました。

そこで、現在使用しているスマートフォンをリストアしてスッキリさせたいのでリスト化しました。

CMS

  • facebookFacebook
    Facebookは云わずと知れた世界最大のCMSサイトです。このFacebookアプリは運営会社が開発したシンプルかつ使いやすいアプリです。Facebookをやられてる方は必ずと言っていいほど入れるアプリだと思います。
  • googleGoogle+
    Google+はFacebookに対抗するべくGoogle社が去年から始めたCMSです。後発であるからこそ使い勝手や機能は網羅していて今からのCMSですが、ユーザーが増えればFacebookの脅威になるのは間違いありません。まだGoogle+を始めてない方はアプリを入れて始めてはいかかですか?
  • mixiMixi
    日本最大のCMSですが、最近はあまり盛り上がってないようです。私も同級生とのやり取り以外にはほとんど使用していませんが、やっぱりないと困るアプリです。
  • SeesmicSeesmic
    FacebookやTwitter、Googleバズを1個のアプリで管理できます。チョットしたチェックや投稿はこれ1つで賄います。私はマルチアカウントに対応しているので、Twitterはこれをメインで使っています。
  • SoundCloudSoundCloud
    音楽を共有するのに非常に便利なツールで、作成した音楽の発表の場や友達との音源のやり取りなどに使用しています。アップした音楽は様々なユーザーからコメントを貰ったりと活発です。
  • WordpressWordPress
    Wordpressを使用している方なら必須のアプリです。新規投稿から写真やビデオの投稿やコメントの確認など必要な事は一通りできます。

カメラ

  • FxCameraFxCamera
    色々な種類のエフェクト付き写真が撮影できるアプリです。
  • LentoLento
    トイカメラの決定版アプリです。変わった構図で写真を撮るとおしゃれに見える不思議なアプリです。
  • PhotoFuniaPhotoFunia
    無料で非常に多くのエフェクトや写真加工をオンライン上で簡単に加工してくれるアプリです。使い方は直感的で簡単ですが、オンライン上で加工するので少し時間がかかります。
  • Adobe Photoshop ExpressPhotoshopExpress
    パソコン業界ではAdobe社のPhotoshopといえば泣く子も黙る最強のアプリです。パソコン版は高額アプリですが、Android版では無料で簡単な写真加工ができるアプリになっています。
  • PRO Paint Camera 日本語PRO Paint Camera 日本語
    こちらも様々なフィルターやエフェクト加工ができるカメラアプリです。
  • QRコードスキャナーQRコードスキャナー
    ネットや名刺、フライヤーやポスターなどに記載されているQRコードを読み込むためのアプリです。この他にもCDや書籍などのバーコードを読み取り、価格やレビューを調べたりなど多機能なアプリです。
  • ウバ 無音 カメラ Freeウバ無音カメラ Free
    無音で撮影できるアプリです。子供の寝顔を撮るのに重宝しています。

音楽プレーヤー

  • doubleTwistdoubleTwist
    ニューズウィークの2011年トップ10AndroidアプリランキングでNo.1となった音楽プレーヤーです。PC/Macから専用アプリを使い同期が可能です。専用アプリはiTunesにそっくりで難しくありません。
  • MixZing Media PlayerMixZing Media Player
    無料でありながら、あらゆる必要な機能が入ってる最強の音楽プレーヤーだと思います。使い勝手も良く操作しやすいので基本はこればかり使っています。

ビデオプレーヤー

  • RockPlayer LiteRockPlayer
    YoutubeからダウンロードしたMp4やパソコンから転送したDivX(AVIファイル)などあらゆる動画ファイルに対応したビデオプレーヤーです。ただ、私の機種ではCPUが遅いのでビットレートの大きいサイズのビデオは再生できません。

インターネットラジオ

  • TuneIn RadioTuneIn Radio
    世界中のラジオを聴くことができるアプリです。日本のラジオにも対応しています。私はメキシコのラジオが聞きたくて使っています。

ブラウザ

  • Opera MiniOpera Mini
    Opera Mini はサーバーサイドでウェブページを圧縮し、データ転送量を通常のブラウザの 10 分の 1 まで減らすらしいです。安定して使い勝手がいいので標準のブラウザとして使っています。

メールアプリ(メーラー)

  • GmailGmail
    云わずと知れたGoogleが提供しているGmail専用アプリです。
  • spモードメールSPモードメール
    ドコモのSPモードメールを使用するためのアプリです。他のキャリアをお使いの方には必要ありません。
  • K-9-Data-KillerK-9 Mail
    アイコンのデザインが非常にダサいのですが、非常に使えるメーラーです。Hotmailや独自ドメインメールを登録して使用しています。

ツール

  • SimejiSimeji
    無料で非常に使い勝手のいい日本語IMEです。最近ではGoogle 日本語入力も公開されましたが、私の機種では画面の解像度が低くキーボードを使うときにも画面にソフトウェアキーボードが表示されると非常に見にくく使い勝手が悪いので、キーボードを使用しているときは画面のキーボードが非表示されるSimejiばかり使っています。
  • Apk-ManagerApk manager
    インターネット上にはAndroidマーケットで公開されていないアプリ(APKファイル)やバックアップしていたアプリ(APKファイル)を簡単にインストールするためのアプリです。SDカード上に入っているAPKファイルを自動で認識してくれて一覧で表示してくれます。私は使いませんが、現在インストールしているアプリのアンストールもできます。
  • DropboxDropbox
    以前紹介したDropboxのAndroid版です。インターネット上で写真や音楽ファイルなどを管理・共有できるので非常に重宝しています。カメラアプリの設定で保存データをSDカードのDropbox→Photoに変更すれば自動でパソコンと連携が取れて便利です。
  • ESファイルエクスプローラーESファイルエクスプローラー
    SDカード内のファイル管理からLANファイルやFTPなどの機能も備えてファイルの管理に使えるアプリです。root化していれば他にも色々できることが増えるようです。
  • GO-ランチャー-EXGoランチャーEX
    今まで様々なランチャーを使ってきたのですが、機能の豊富さとプラグインの多さはNo.1です。多機能な分少々重たいですが、標準でできることも多くGoランチャーEXを入れて3つほど専用アプリを消しました。
  • Goランチャーのツール類
    Goランチャーには豊富なプラグインやテーマが公開されています。無料なものから有料なものまで様々ですが、Androidマーケットとは別に専用のGo Storeというマーケットもあるので非常に探しやすいです。
  • Google ReaderGoogle Reader
    Googleリーダーに登録しているRSSを見るためのアプリです。他にも色々なアプリがありますが、シンプルで使い勝手がいいのでこれに落ち着いています。
  • Google Sky MapGoogle Skyマップ
    星空を見るためのアプリです。1番星の名前を調べたりや自分の星座がどれかを探したりかなり面白いアプリです。実用的に作られていて操作性も簡単で誰でも使えるお勧めのアプリです。
  • My docomo checkerMy docomo checker
    My docomoの料金情報を簡単に確認できるアプリです。他のキャリアの方は必要ないアプリです。
  • ShazamShazam
    レストランに食べに行った時にかかっていた曲や、あの曲ってなんだったかな~と鼻歌で検索かけたりできるアプリです。TuneIn Radioをかけながら流れている音楽を検索もできます。海外のローカル音楽には弱いです。日常的に使うアプリじゃないですが、非常に簡単に検索ができて面白いです。
  • SkyDrive BrowserSkyDrive Browser
    25GBも無料で使えるSkyDriveを使うための専用アプリです。Dropboxと同じようなものですが、25GBと容量が全く違いますw使い勝手はDropboxの方が手軽で簡単ですが、大きい動画ファイルや音楽ファイルはこちらにアップして使っています。
  • SkypeSkype
    世界中どこでもSkype同士の電話は無料で使用できるアプリです。PCだろうがiPhoneだろうがSkypeがインストールされていれば誰でも無料で電話ができます。機種によってはビデオ電話も無料できます。私は激安でメキシコの固定電話に電話するために使っています。
  • SoundHound
    Shazamと同じように曲の検索をしてくれるアプリですが、海外のローカル音楽にもしっかり検索ができこちらをメインで使っています。
  • StopWatch & TimerStopWatch & Timer
    ストップウォッチとタイマー機能が付いたアプリです。使い方はシンプルでトランポリンをしている時に使用しています。普通はカップラーメンを作る時に使うのかな?
  • ジョルテジョルテ
    システム手帳アプリです。多機能でウィジェットを使用していますが、管理が簡単で手軽に使えるのが魅力です。
  • ババァババァ
    バッテリー残量をバーで表示してくれるアプリです。邪魔にならないので重宝しています。
  • 計るだけダイエット計るだけダイエット
    ためしてガッテンから生まれたアプリです。ダイエットを始める方にお勧めのアプリです。

ゲーム

  • Angry-BirdsAngry Birds
    云わずと知れた世界一のゲームユーザーを誇るゲームです。スマートフォンに変えたら必ず入れるゲームの一つだと思います。色々なバージョンが出てて長くできるゲームです。
  • Reversi FreeReversi Free
    誰でも一度はやったことのあるゲームだと思います。チョットした脳トレですね。
  • Super Stickman GolfSuper Stickman
    簡単なゴルフゲームです。シンプルな操作で気軽に遊べます。
  • SwitchSwitch
    スピード感抜群のレースゲームです。
  • Unblock Me FREEUnblock Me Free
    複数のブロックを動かし一つのブロックを出口に通す脳トレゲームです。面が多いので長く楽しめます。
  • ブレインプラスブレインプラス
    光った順番を覚える脳トレゲームです。
  • 将皇将皇
    じっくり暇つぶしをするときに便利な将棋ゲームです。

楽器

  • Chord!-FreeChord!
    ギターのコードを調べるためのアプリです。有料版はスケールや逆引きができて便利なのでよくつかわれる方はそちらがお勧めです。
  • Tuner---gStrings-FreegStrings
    ギターなどの楽器をのチューニングするためのアプリです。シンプルで使い勝手がいいです。

勉強

  • 1分間英会話3601分英会話(無料版)
    チョットした英会話を覚えたいときに便利なアプリです。
  • ギターのレッスンの動画を学ぶGuitar Lesson Videos
    このアプリはエレキギターのレッスンがメインで動画紹介されていますが、アコースティック用のアプリもあります。
  • スペイン語動詞活用 Liteスペイン語動詞活用 Lite
    スペイン語の動詞活用を参照できるアプリです。無料版でも様々な動詞の活用がチェックできるので便利です。
  • 最小英和辞典最少英和辞典
    46,000以上の英単語が入った英和辞典です。日本語から検索する機能もあり十分使えるアプリです。

料理(レシピ)

要ルート化アプリ(有料も含む)

  • AutostartsAutostarts(有料¥99)
    必要のないアプリをKill(起動しないようにする)為のアプリです。
  • DroidWallDroidwall
    Android版のファイアーウォールです。Wi-fiと3Gを個別にアプリで通信の許可・拒否を設定できるアプリです。
  • tanium BackupTitanium Backup
    最強のバックアップツールアプリです。アプリのバックアップだけでなく設定やキャッシュまでバックアップするのでリストアが非常に簡単です。

アンインストールしたアプリ(覚えているだけ)

  • SugarSyncSugarSync
    最近入れたアプリですが、無料で使えるストレージも5GBあり十分でしたが使い勝手でDropboxに勝てませんでした。
  • ZDboxZDbox
    システムツールアプリで非常に使い勝手がいいアプリでしたが、GoランチャーEXだけで同じことができるようになったので必要が無くなりました。
  • SiMi Folder WidgetSiMi Folder Widget
    アプリやショートカットをフォルダーにまとめてホーム画面に張り付けてスッキリさせることができますが、これもGoランチャーEXだけで同じ事ができるので必要が無くなりました。

以前インターネットを使った同時レコーディングができるアプリケーションがありベータ版に応募したのですが、当選しなかったので公式版ができるまで待っていたのですが、何の情報も回ってきません。

しかも、1年ほど前だったかアプリ名が忘れてわからなくなり、ググッたのですが結局わからず他で見つけたアプリです。

2005年頃に話題になったみたいで、以前は日本支社もあったようですが現在は日本語での情報はほとんどありません。

ただ、本家のホームページ(Digital Musician.net)は健在で現在でも運営しているようです。

アプリ名はDigital Musician Containerといい略してDMCと呼ばれています。同じ同期機能を持ったアプリでDMPがありますが、これは使っているDAWでVSTiとして使用します。

このDMCの特徴としては

  • 総合的なオーディオ変換機能を備えたマルチトラックレコーダー
  • Rewireの完全サポート
  • P2P技術を利用し、リアルタイムで最大3人までの同時接続
  • VSTプラグインのサポート
  • デスクトップ上でお使いのシーケンサー(DAW)間において、ドラックアンドドロップによって、オーディオファイルを扱うことができる
  • DMNサーバーを介し、プロジェクトの自動的なデータ同期が可能
  • ウェブカメラを利用したビデオチャット機能
  • ASIO / Core Audioのサポート

と一通り必要な機能が備わっています。

しかも無料で同期機能が使えるので使わない手はありません。

最近は周りの音楽仲間も家でレコーディングできる環境が整い、プリプロやセッションに関しては1箇所に集まってする必要がありません。

お互い時間の都合がつく時間にパソコンの前にいればいいので移動時間の削減にもつながります。

使い方はいたって簡単で、本家のホームページ(Digital Musician.net)で新規登録をしてプログラムをダウンロードします。

ダウンロードできるプログラムは2種類あり、DMCとDMPです。

DMCは完全独立アプリケーションで単体でも動作します。

DMPは使っているCubaseやSonarなどのVSTプラグイン対応のDAWでVSTプラグインとして動作するアプリケーションです。

最大の特徴はデータの軽いMP3でプレビュー同期を行い、最終ではロスレスのWavで同期が行えるのでストレスなくやり取りができるはずです。

ただ、それでもそれなりの回線スピードが必要だと思います。

実際試していないのでどの程度使えるか分からないので時間を見つけてレビューも書きたいと思います。

どの様なアプリか動画をいくつかアップするので興味がある方はチェックしてみてください。

以前見つけた動画ですが、8ヶ月ほど前に見つけた動画ですが、あれから新しいデジカメやスマートフォンが出ましたが、やはりこれに勝るものはありません。

最初に見つけたのが下の動画ですが、1眼レフのようなセンサーをつけたスマートフォンと思いましたが、なんと!そのレンズが取れてワイヤレスに撮影が可能な事が新しく、見たときに『いいアイデアだけど、商品化できる?』と正直思いました。

気になったので調べてみると実際に試作機を作って同じ動作するじゃない!!

正直びっくりしたのですが、同時に発売はいつか?とウキウキしましたw

本体側は着信画面を見る限りiPhone?ぽかったのですが、公式サイトを見てみるとディスプレイが1920x 1080 pixels、CPUがCortex-A15 ARM Multi-Core CPU、メモリが16GB embedded + microSDHCとiPhoneとは違いますね。

ただ、CPUがCortex-A15を使っていることから独自スマートフォンなのでしょうが、802.11n ・ GPS ・ Bluetooth 2.0 ・ WirelessHDとスマートフォントしてはキチンと搭載されるべき機能が備わっています。ただ、ここでもWirelessHDと現在のスマートフォンでも搭載してない機能を搭載しているようです。このシステムを使ってレンズとシームレスに同期するようになってるのですかね。

しかし特筆すべき点はキヤノン EOS 5D Mark IIと同じ36 x 24mm Full Frame CMOSという大型CMOSを搭載し、6496 x 4872 pixels (31.6 MP)、写真撮影はjpgとRAW、動画撮影は1920 x 1080 24p, 30p, 60iのMOV, H.264, AVCHD formatsに対応している点です。

動画などはかなり高画質な撮影が可能だと予想できます。(バッテリーは鬼減りしそうだけどw)

当然レンズは交換できNikon F mount, Canon EF mount, Micro Four Thirds and Leica M mountに対応しているので、現在持っているレンズを使った撮影ができます。ただ、35mmフルフレームCOMSを生かせるように対応のレンズが一番発揮される事は間違いありません。

ここまで来ると並の一眼レフでも太刀打ちできません。

ただ、これだけのスペックにかなりの薄さなのでバッテリーの持ちが心配です。使い方によって随分バッテリーの減りが変わるとは思いますが、スマートフォンとして使うのであれば通信やGPSなどの消費電力も馬鹿になりません。そのあたりも非常に気になるところです。

これだけのスペックと機能を搭載したカメラを販売するとなるといくらになるのでしょうか?

無理だとは思いますが、10万円位で販売されれば爆発的なヒット商品になると思いますが、皆さんはどう思われますか?

公式サイトに掲載されていない搭載OSは?発売時期は?価格は?など様々なことを想像するのですが、最悪商品化されないのでは!と正直思います。

こんな魅力的な商品は是非商品化してもらいたいですね。

今日もチェックしたのですが、発売のアナウンスはされていませんw

Page 2 of 97:« 1 2 3 4 5 »Last »
bottom-img