IDCフロンティアのクラウドを使ってみた(登録〜仮想マシン作成〜SSHログイン)


追記(2014/10/16 10:00):念のためですが追記です。私はヤフーの中の人ですが直接IDCフロンティアと関わっていないため、この記事はインターネット(Yahoo!検索)で確認できる情報を参照して書いてます。ですので、もし誤りなどがあればぜひご指摘ください。また、使ってみた感想や使いづらい点・分かりづらい点などを教えてもらえると嬉しいです。いただいたものは社内から必ず担当へ伝えます(お返事はできないかもです、すみません)。

AWSより安い500円/月で、ミニマム構成のクラウドが作れるというIDCFクラウドを利用してみた。
登録から仮想マシン作成までは比較的簡単にできたが、いざSSHでログインしようとすると少しつまずいた(Web画面でファイアウォールとポートフォワードの設定が必要だった)のでメモがわりに記事にしてみる。

日経でも記事になってた。

ヤフーのデータセンター子会社、IDCフロンティア(東京・新宿)は企業向けの低価格クラウドサービスを始める。米アマゾン・ドット・コムのクラウド「アマゾン・ウェブ・サービス(AWS)」より性能が高いうえ、価格を4分の1に抑えた。
CPU1コアとメモリー1ギガバイトからシステムを作れる。月額使用料は500円(税別)からで、使用状況で変動する。
ヤフー系、格安クラウド アマゾンの4分の1、高性能 :日本経済新聞

特徴としては以下のようだ。

  • 世界最速クラス、サーバーの並列作成時間は1台約2秒
  • 国内クラウド初採用、ioMemoryと40コアCPU/128GBメモリ搭載タイプの提供
  • 国内最安、月額500円の利用プランと従来比28~65%の大幅な料金引き下げ
  • 国内初、はてな社のクラウドパフォーマンス管理サービス「Mackerel」(マカレル)に対応

プレスリリース2014年 | IDCフロンティア、よりパワフルな新クラウドサービス「IDCFクラウド」を提供開始 | IDCフロンティア

アカウント登録

IDCFクラウドのアカウント登録が必要だが以下のビデオの通り進めて問題無く完了。スマートフォンなどでSMSまたは自動音声で認証が必要なので注意。

登録後、ログインするとユーザ情報登録と支払い方法の登録が画面に表示されるのでこれも入力。
クレジットカード、銀行振込、口座振替が利用できる。

新しいクラウドサービス「IDCFクラウド」リリース記念! IDCFクラウドの1万円分無料クーポンを、期間限定ですべてのお客さまにプレゼントいたします。
トピックス2014年 | 「IDCFクラウド」1万円分無料クーポンプレゼントキャンペーン!11月14日まで。 | IDCフロンティア

また、11/14まではキャンペーンとして1万円分のクーポンがあるので、上記のページ内に記載されているクーポンコードをアカウント情報のページから入力すれば適用される。有効期限が6ヶ月なので、ミニマムスペックの仮想マシンを3台構成(Web, DB*2)にしても500円/月×3台×6ヶ月=9,000円と使い切れないくらい。

仮想マシン作成

IDCFクラウドコンソール画面から、左上にある仮想マシン作成をクリックして作成していく。
上記ビデオのように画面内で選んでいく方式なのでこれも簡単に進むだろう。今回はビデオとは少し違い最小構成で行くことにし、仮想マシンタイプにlight.S1、OSイメージはCentOS 7.0 64-bit、ボリュームは変更せず初期値のルートディスクを15GBを選択。

SSH Key(SSH公開鍵)の設定

SSH Key(SSH公開鍵)はセキュリティを高めるためにも設定した方が良い。

自分の秘密鍵・公開鍵ペアがあれば、公開鍵を「アップロード」のところから入力する。
ちなみに、RSA(ssh-rsa)形式のみの対応なので注意。

SSH鍵ペアの作成

もし無ければ、上記のようにボタン一つで新規に秘密鍵と公開鍵のセットを作ってくれるので、(4)の秘密鍵を~/.ssh/id_rsa_idcfcloudなどに保存する。(パーミッションを400にするのを忘れないように。詳しくはWeb検索などで調べること)

今回は、自分のGitHubアカウントの鍵情報(https://github.com/USERNAME.keys)からSSHキーを「アップロード」のところで入力した。

残りは、台数は1台、仮想マシン名は任意で構わないのでマシン名をTest01、グループをTestとした。プライベートIPアドレスは自動設定で問題無い。

確認画面から作成して完了。

SSHログインする前の設定

ここで引っかかったが、SSHでログインするためにファイアウォールとポートフォワードの設定が必要になる。
IDCFクラウドは文字通りクラウドサービスとして仮想的なデータセンターを構築でき、上記で作成した仮想マシンが所属するネットワークの仮想ルータが存在するため、SSHログインも仮想ルータを経由して仮想マシンにログインすることになるためだ。

具体的な設定方法は、クラウドコンソールのIPアドレス設定にアクセスすると、最初から無料で使えるグローバルIPアドレスが1つ登録されているので、これに対してファイアウォールとポートフォワードの設定をしていく。ちなみに下記画面に表示されているものが割り当てられたIPアドレスだ(下記画面では210.140.168.169)。

idcf_ipaddress

ポートフォワード設定

最初から無料で使えるIPアドレスは仮想ルータに割り当てられている。
この仮想ルータに特定のポート番号でアクセスしたとき、ルータ配下のネットワークに所属する仮想マシンへそのアクセスを中継(フォワーディング)することができる機能がポートフォワードだ。

コンソールのIPアドレス設定画面から、IPアドレス名をクリックすると基本設定画面が表示されるので、ポートフォワードをクリック。
idcf_ipaddress_setting

下記画像のようにSSHアクセスのための設定を行う。
コメントは分かりやすい名前を入力し、プライベートポートはセレクトボックスからSSHを選択、パブリックポートは他サービスと重複していないポート番号(自由に使用できるポート番号である49152番〜65535番が好ましい)を指定し、右側にある+ボタンをクリックすると設定が完了する。
idcf_ipaddress_portfoward

今回は例えば49222を指定してポートフォワードを設定した。
これで、仮想ルータの49222ポートへのアクセスが仮想マシンの22ポートへ転送されるようになる。

ファイアウォール設定

続いて、ファイアウォール設定画面から上記フォワード設定したポート番号(今回は49222)へのアクセスを許可するように設定する。

同じく、コンソールのIPアドレス基本設定画面からファイアウォールをクリック。
コメントは分かりやすい名前を入力し、ソースCIDRはAnyを指定、タイプはCustom TCPを指定する。ポートレンジには先ほどポートフォワード設定で決めたパブリックポート番号を入力し、右側の+ボタンをクリックすると設定完了だ。
idcf_ipaddress_firewall

今回は先ほどポートフォワードへ設定した49222へのアクセスを許可する設定にした。

SSHでログイン

ここまでの設定が完了すれば、作成した仮想マシンへSSHログインができる。SSH Keyの設定時に作成した(または既存の)秘密鍵ファイルが~/.ssh/id_rsa_idcfcloudだとすると以下のコマンドでssh接続できる。ちなみに、実際のIP_ADDRESSはIPアドレス設定画面で確認できる。

$ ssh -l root -p 49222 -i ~/.ssh/id_rsa_idcfcloud IP_ADDRESS
Last login: Thu Oct 16 05:52:11 2014 from ***********
    ________  ______   ______                 __  _
   /  _/ __ \/ ____/  / ____/________  ____  / /_(_)__  _____
   / // / / / /      / /_  / ___/ __ \/ __ \/ __/ / _ \/ ___/
 _/ // /_/ / /___   / __/ / /  / /_/ / / / / /_/ /  __/ /
/___/_____/\____/  /_/   /_/   \____/_/ /_/\__/_/\___/_/

[root@Test01 ~]#

ログインできた。OS情報を確認してみる。

[root@Test01 ~]# uname -a
Linux Test01.cs6cidcfcloud.internal 3.10.0-123.6.3.el7.x86_64 #1 SMP Wed Aug 6 21:12:36 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@Test01 ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

CPUやメモリ情報は下記のコマンドで見られる(結果は割愛)。

[root@Test01 ~]# cat /proc/cpuinfo
[root@Test01 ~]# cat /proc/meminfo

ログイン後は(先ほど設定した)クラウドのファイアウォールがあるがセキュリティ等の設定をしておく方が良いだろう。

スポンサード

東京メトロが公開予定のオープンデータAPIが楽しみなのでアイデア考えてみた

東京メトロが10周年を記念して、いろいろなAPIが公開されるようだ。

オープンデータ活用コンテスト(2014.9.12-2014.11.17)
オープンデータを活用し、東京メトロをご利用になるお客様の生活がより便利でより快適になるようなアプリを募集します。
東京メトロ10周年オープンデータ活用コンテスト

具体的な公開データ内容は未だ不明だが、東京メトロのプレスリリースに一部記載があった。

すでにホームページで公開している列車時刻表、駅別乗降人員、バリアフリー等の情報に加え、今回初めて東京メトロ全線の列車位置、遅延時間等に係る情報(方向、列車番号、列車種別(普通、急行、快速等)、始発駅・行先駅、車両の所属会社、在線位置(ホーム、駅間の2区分)、遅延時間(5分以上の遅延を「遅延」として表示))をオープンデータ化
東京メトロプレスリリース

また、INTERNET Watch記事でもう少し詳細に書かれていた。

列車の方向(どこ方面行きか)、列車番号、普通・特急・急行・快速・臨時といった列車種別(試運転・回送の非営業列車は非公開)、始発駅・行先駅、所属会社(どの鉄道事業者の車両か)、在線位置(ホーム・駅間の2区分)、遅延時間(5分以上の遅れを「遅延」として表示)といったデータが含まれ、1分ごとに配信される。
東京メトロ、列車の在線位置など全線オープンデータ化、車両の所属会社も -INTERNET Watch

まとめると、以下の情報が1分毎に取得できるようだ。

  • 列車時刻表
  • 駅別乗降人員
  • 駅毎のバリアフリー等の情報
  • 東京メトロ全線の列車位置
    • 方向(どこ方面行きか)
    • 列車番号
    • 列車種別(普通・特急・急行・快速・臨時等)
    • 始発駅・先行駅
    • 車両の所属会社
    • 在線位置(現在位置:ホームに停車中か線路を走行中かの2種)
    • 遅延時間(5分以上遅れがあれば遅延)

オープンデータ活用コンテストの応募対象は、Webアプリ、Androidアプリ、iOSアプリ、Windowsストアアプリで、グランプリ1点に100万円など豪華。しかし、なにより通常取得できない情報を利活用できるのが嬉しい。

(実行されない限り)アイデアに価値はない、という考え方に賛成なのでパッと思いついたアイデアを書き留めておくことにしよう。ちないに、すでにあるかどうかは調べていないので、ご存じのサービスがあればツッコミ歓迎。

  • 乗り過ごし防止アラーム
  • 乗り換え時の歩くスピード教えてくれる
  • 外国人観光客向けおすすめ観光ルート生成
  • トイレまでのダッシュシミュレーター(あと何分我慢すればいいのか)
  • 乗ってる電車内でつながるSNS
  • 乗車時間に最適な音楽プレイリスト作成・ニュース記事ピックアップ

挙げてみたが特に良いものがあるか自信も無いので、もし参考にされても連絡などは不要です。

スポンサード

名刺管理サービス「Eight」から連絡先情報をエクスポートする

名刺管理サービス「Eight」

はじめに

日々増え続ける名刺の管理には、もうずいぶん前からEightを利用している。
データも正確で検索もし易く相手も利用していれば名刺情報の更新が届くなど非常に便利に使っているが、唯一あったら良いなと思っているのがデータのエクスポート機能だ。

自分が退職するときにも、関わりのあった皆に退職報告をしようと名刺情報をダウンロードしようと思ったが見つからなかった。
登録した名刺情報をエクスポートしたいという要望は有るようだが、まだ機能は実装されていないようだ。

そこで、無ければ自分で何とかするということで、自分の管理している名刺情報をエクスポートするためのJavascriptを書いた。ログインしている画面 (Google Chrome) の Console から実行する簡易コードだ。

2014/03/23追記:Eightサービスがリニューアルして現在は動かなくなっています。対応したものを名刺情報をiPhone連絡先へインポートする方法(またはEightデータをvCard形式でエクスポートするブックマークレットを作りました) – noriaki blog はてな出張所としてエントリ書きました。こちらをご覧ください。

2014/03/23追記:また、コメント欄でMauriceさんからEight / 8card エクスポート Chromeエクステンションを作ったとご連絡いただきました。

ご注意点

  • あくまでも自分の管理している名刺情報(名前、会社、電話番号、メールアドレス)が取得できるだけ
  • 使い方をよく読み、Javascriptコードの内容が理解できる方のみ実行することをオススメする
  • 動作は無保証であり何らかの問題が起こっても責任は取れない
  • Eightサービス側の仕様変更等により使えなくなることもある
  • 利用規約はざっと読んで問題無いと思われるがEightサービスから怒られたら謝る

使い方

  1. EightへGoogle Chromeを使ってログイン
  2. Ctrl + Shift + JなどでConsole画面を開く
  3. 下記のJavascriptコード1を実行する
  4. 100件ずつ名刺情報を取得するので全件取得完了したらJavascriptコード2を実行する
  5. 結果として表示された部分をコピーしてExcel等にペーストする

Javascriptコード1

var res = [];
function recursive_get_data(res, page) {
    $.ajax({
        type: "GET",
        url: request_url({ page: page }),
        dataType: "json",
        success: function(data) {
            var data_array = data.result;
            $.each(data_array, function(i,obj) {
                $.each(obj, function(month,cards) {
                    if(cards.length === 0) { return }
                    $.each(cards, function(j, card) {
                        var person = card.person;
                        var info = person.personal_cards[0].eight_card || person.personal_cards[0].friend_card;
                        var r = [person.id];
                        r.push(info.front_company_name === "" ? info.back_company_name : info.front_company_name);
                        r.push(info.front_full_name === "" ? info.back_full_name : info.front_full_name);
                        r.push(info.front_full_name_reading === "" ? info.back_full_name_reading : info.front_full_name_reading);
                        r.push(info.front_tel1 === "" ? info.back_tel1 : info.front_tel1);
                        r.push(info.front_email === "" ? info.back_email : info.front_email);
                        r.push(month);
                        res.push(r);
                    });
                });
            });
            console.log(data.context, page);
            if(page < data.context.total_pages) {
                recursive_get_data(res, page + 1);
            }
        }
    });
}
recursive_get_data(res, 1);

function request_url(option) {
    return "https://8card.net/people/display_personal_cards.json?0.13670155755244195&_method=get&sort=5&transcribing=0&per_page=100&web=1&use_paginate=1&tags=&index=&keyword=&page=" + option.page;
}

Javascriptコード2

console.log($.map(res, function(array, i) { return array.join("\t"); }).join("\n"));

最後に

Eightさん、いつもありがたく使わせてもらってます。有料機能でも良いのでエクスポート機能を早く提供してください。

スポンサード

URLを入力にしてWebページのタイトルを抽出するYahoo! Pipesを作った

Extract Page Title by Yahoo! Pipes

これはなに?

以下の抽出アルゴリズムを使って、URLを入力するとWebページのタイトルを抽出して返すYahoo! Pipesを作った。

上記のアルゴリズムを平行して実行し、結果は1つのJSONデータにまとめて返すようになっている。
このとき名寄せはしていないので、レスポンス内に複数のタイトル候補が現れることがある。
どのサービスのものを選択するかはユーザ側で自由に決めてもらえれば。

サンプルリクエスト

http://pipes.yahoo.com/pipes/pipe.run?_id=0dcfb1733702abccc3f281395835a0e0&_render=json&url=http%3A%2F%2Fwww.google.co.jp%2F

レスポンスの内容などはサンプルを叩いてみて適当に推測してちょうだい。

※このPipesは有用だと思いますが、動作の正確性や完全性、可用性をはじめレスポンス内容については無保証です

※また、予告無く変更される可能性があるため、サービスに組み込む場合にはオリジナルをcloneして利用することを推奨します

Facebookの写真へタグ付けされたときに事前にOKするか確認する方法

Preview Tagged Post

Facebookでは写真や投稿に対して友達をタグ付けできる機能がある。
タグ付けによって、自分のアップロードした写真に写っている人や一緒にいる人を知らせることができる。もちろん、自分が友達をタグ付けできるということは、友達も自分をタグ付けできると言うことになる。

ただ、いろいろな理由で自分がタグ付けされては困る場面もあるかもしれない。
初期設定では自分がタグ付けされたときにそのままウォールやタイムラインに公開されてしまうため、その困った場面を防ぐことはできない。

このエントリではFacebookの設定を変更することで、自分が友達の写真や投稿にタグ付けされたときに、タグ付けされたことを自分が「承認」するまで公開されないようにする方法を紹介する。

Facebookのプライバシー設定からタグ付け掲載の事前確認をする設定手順

Facebookホーム画面右上にある設定のうち「プライバシー設定」を開く

まず、Facebookホーム画面右上にある設定のうち「プライバシー設定」を開く。

設定項目のうち「タイムラインとタグ付け」の設定編集を開く

次に設定項目のうち「タイムラインとタグ付け」の設定編集を開く。

「あなたがタグ付けされたコンテンツをタイムラインに掲載するかどうかを確認する」をクリック

「あなたがタグ付けされたコンテンツをタイムラインに掲載するかどうかを確認する」をクリック。

プルダウンから「オン」を選択して「戻る」→「完了」とする

表示された画面で、プルダウンから「オン」を選択して「戻る」→「完了」とすれば設定完了になる。

設定後、友達の投稿に自分がタグ付けされたら

上記の設定後は、自分がタグ付けされたらFacebookロゴ横の「お知らせ(notifications)」欄に通知が来るので、確認して「承認」すれば公開され、しなければ自分がタグ付けされたことは公開されないようになる。
(タグ付けそのものが消えるわけではなく、「タグ付けされたこと」がウォールやタイムラインに表示されない)

ちょっとタグ付けされると困る場面があるかも、という人は設定を見直してみると良いかもしれない。