TECH
中津川 篤司

ついに公開されたAPIをNode.jsから利用する(イメージ取得)

CloudGarageのインスタンス操作などを自動化できるAPIがついに公開されました。これでインスタンスの立ち上げや停止を自動化できるようになります。 そこで今回はNode.jsを使ってAPI操作を行う方法を解説します。まずはインスタンスイメージの取得です。 必要なソフトウェア、ライブラリ 今回必要なソフトウェア、ライブラリは以下の通りです。 Node.js superagent プロジェクトのベースの作成する Node.jsのインストールが終わっていることとして、まずは適当なディレクトリを作成し、その中でNode.jsプロジェクトのベースを生成します。 npm init 続いて必要なライブラリである superagent をインストールします。 npm i superagent -S APIキーを取得する 続いてCloudGarageの管理画面にてAPIキーを取得します。管理画面の右上にあるメニューをクリックして、アカウント情報確認/変更を選択します。 一度パスワードを入力する必要があります。 そして一番下にあるAPI Key管理にてAPI Keyを発行します。私はすでに発行済みなので再発行になっていますが、最初はAPIキーがないはずです。Client ID(クライアントID)とClient Secret(クライアントシークレット)の二つで認証します。重要なキーなので漏洩したりしないよう注意してください。 トークンを取得する まずAPIを利用するためのトークンを取得する必要があります。コードは次のようになります。 POST /tokens リクエストして、その結果として得られるJSONの token.id の値がトークンになります。 const config = require('../config'); const request = require('superagent'); const baseUrl = 'https://api.cloudgarage.jp'; const getToken = async (config) => { const response = await request .post(`${baseUrl}/tokens`) .send({ client_id: config.clientId, client_secret: config.clientSecret }); // トークン文字列 return response.body.token.id; } 今後のリクエストはこのトークンを X-Auth-Token ヘッダーに適用すれば良いだけです。 イメージ一覧を取得する では今回はOSイメージの一覧を取得します。これは GET /images リクエストになります。 const getImages = async (token) => { const response = await request .get(`${baseUrl}/images`) .set('X-Auth-Token', token) .send() return response.body.images; } これでOSイメージの一覧が返ってきます。 実行例 例えば今回のコードを以下のように実行します。 (async (config) => { try { const token = await getToken(config); const images = await getImages(token); console.table(images); } catch (e) { console.error(e); } })(config); そうすると結果が以下のように返ってきます(一部抜粋)。 ┌─────────┬────────────┬─────────────────────────────────┬─────────────────┬──────────────┬─────────┬────────────┐ │ (index) │ size │ image_id │ image_name │ os_distribution │ os_version │ os_type │ image_type │ ├─────────┼────────────┼─────────────────────────────────┼─────────────────┼──────────────┼─────────┼────────────┤ │ 0 │ 1612185600 │ '38...aa' │ 'CentOS-6.10-32bit' │ 'CENT_OS' │ '6.10_32bit' │ 'Linux' │ 'OS' │ │ 1 │ 1029636096 │ 'b1...71' │ 'CentOS-6.10-64bit' │ 'CENT_OS' │ '6.10_64bit' │ 'Linux' │ 'OS' │ │ 30 │ 2964258816 │ '21...b9' │ 'minecraft20181111' │ │ │ │ 'PRIVATE' │ └─────────┴────────────┴───────────┴─────────────────────┴─────────────────┴──────────────┴─────────┴────────────┘ インスタンスを立ち上げる際にはこの中の image_id を使って行います。 まとめ Node.jsの場合、HTTPリクエスト用ライブラリのSuperagentとawait/asyncを組み合わせることでネットワークの非同期処理が簡単に書けます。APIリファレンスはCloudGarage API リファレンスにありますので、ご覧ください。

動画・自由研究
クラガレラボチーム

Web開発のためのクラウドサーバー選び

#CloudGarage Advent Calendar 2018 の17日目の記事です。 Web開発をするために必要なものといえば、プログラミングスキルやシステム構成の検討、コーディング運用などアプリケーション特有のものが多く挙がりますが、アプリケーションを載せるサーバーも必要となります。Web開発をする際には、アプリケーションのことだけを考えていれば良いと思われがちですが、サーバーの運用方針の影響を受けることが多々あります。 そこで今回は、Web開発をするためのクラウドサーバー選びについてご紹介していきます。まずは、サーバーの選択肢にどのようなものがあるか確認し、その上でどのようなクラウドサーバーを選択すればいいのか見ていきましょう。 Web開発のためのサーバーの選択肢 Web開発のためのサーバーは、技術が進化するにつれて選択肢が多くなっています。それぞれのサーバー環境を選んだ時、どのようなメリット・デメリットがあるのか確認していきましょう。 - ローカル環境 ここでのローカル環境とは、Windows10やWindows7がOSとしてインストールされているようなPCを指します。誰かのサービスを利用するのではなく、自分のPCにアプリケーションを構築していくため、もちろん申し込みなどの手続きは不要で、すぐにWeb開発を始めることができます。また、自分のPCであるため、Web開発に必要なモジュールやアプリケーションがあれば、すぐにインストールすることも可能です。 一方、PCのスペックには限度があり、大人数がアクセスするようなWebアプリケーションに耐えることができません。その場合には、スペックが高いサーバーへ移行する必要があり、その移行作業に時間を要することもあります。 - オンプレミス環境 オンプレミス環境とは、物理的なサーバー機器を使って構築する環境のことです。サーバー機器を利用するため、OSのインストールなどイチからセットアップする必要があり、インフラに関する知識が必要となります。さらに、サーバー機器を設置する場所にも考慮が必要で、地震や停電などに対応でき、冷却設備も整った専用の設置場所を用意する必要があります。 一方、スペックはローカル環境よりも優れているため、本番リリース後にスペック不足が大きな問題とならない限り、アプリケーションの移行作業は発生しません。また、ローカル環境と同様に、管理者権限も持っているため、社内のIT運用ルールにもよりますが、比較的容易にアプリケーションに必要な環境を整えることができるでしょう。 - レンタルサーバー ここからはクラウドで利用できるサーバーの紹介に入ります。レンタルサーバーは、ベンダー企業が保有しているサーバーの一部を利用者へ貸出するサービスです。サーバーの基本的な設定は、ベンダー企業が実施済みであるため、利用者が行う必要はありません。ただ、レンタルサーバーを利用するためには手続きが必要であり、サーバーの権限も絞られているため、自分でカスタマイズできる範囲が限られます。さらに、ベンダー企業ごとにサーバーの管理範囲が異なるため、Web開発をしていく中で、うまくいかない場合にはベンダー企業へ都度問い合わせが必要となります。 - クラウドサーバー こちらもベンダー企業へ利用開始の手続きが必要となりますが、レンタルサーバーよりも自由にサーバーの設定をすることができます。OSやCPUの数、メモリ容量やディスク容量など、開発するWebアプリケーションの規模に応じて、サーバーのスペックを調整することが可能です。また、管理者権限を取得できるサービスも多く、ある程度サーバーのカスタマイズが可能です。 クラウドサーバーの中には、OSをインストールした状態で利用開始するものもあり、その場合にはOSの各種設定など、インフラの基本的な設定を行う必要があります。 - SaaS環境 SaaS環境とは、サーバー機器だけではなく、WindowsなどOSレベルの管理もベンダー企業が実施するサービスです。利用者は、Web開発をすることだけに専念することができます。もちろんインフラに関する構築や運用は不要で、利用開始手続き後には、すぐにコードを打ち込み始めることができます。インフラの運用はベンダー企業が行うため、突発的なメンテナンスやトラブルに巻き込まれる可能性はあります。また、SaaS特有の使い方があるため、慣れるまでには多少時間が必要です。 サーバーを選ぶならやっぱりクラウド ここまでWeb開発のためのサーバーの選択肢を見てきましたが、構築・運用の容易さや利便性を踏まえると、クラウドサーバーを選択することの方がメリットが多いです。クラウドサーバーの中でも、下記の条件に当てはまるサービスを選ぶようにしていきましょう。 【1. 気兼ねなく作り直しが可能】 クラウドサーバーのメリットは、イチからサーバーを構築する必要が無いというところです。そのため、クラウドサーバーのバックアップを取得していれば、何かトラブルなどが発生したとしても、すぐにバックアップを取得した時点でサーバーを再構築することが可能です。自由にバックアップを取得し、リストアができるサービスは必須ですね。 【2. 検証/本番環境がすぐに作れる】 Web開発では開発した後に検証を行い、バグが見つかれば修正し、正常な動作が確認できた時点で本番リリースを行います。そこで重要となるのは検証するための環境です。本番リリース後も、設定変更が入る可能性は十分にあるため、検証環境と本番環境は分けて構築しておきたいところです。クラウドサーバーでは、環境を分けてサーバーを構築できるサービスを選びましょう。 【3. インフラ環境の設定をすぐに変更可能】 Web開発を進めていく上で、うまくパフォーマンスが出ない、すぐにCPUが100%に張り付いてしまうなど、サーバーリソースの問題が発生する可能性は多々あります。そんな時、クラウドサーバーの設定を変更するだけで、Webアプリケーションの再開発など必要なく、それらの問題に対処することができます。 まとめ 「クラウド」という概念が登場したおかげで、Web開発にとってもこれまで実現できなかったことが、比較的容易にできる時代となりました。クラウドのメリットをサービスに取り込んでいるクラウドサーバーを選び、Web開発にうまく活用していきましょう。

TECH
中津川 篤司

Linuxエディタチートシートまとめ

皆さん、エディタは何を使っていますか。エディタというと宗教戦争を起こしやすいので、気をつけないといけない話です。ローカルのパソコンではVS CodeやAtomなどが人気ですが、サーバにログインした際には別なエディタを使うのが一般的ではないでしょうか。個人的にはEmacs派なのですが、大抵のサーバ用Linuxではデフォルトではインストールされていません。そのためviやnanoを使う人も多いかと思います。 今回はそうした各種エディタのチートシートを紹介します。これを手元に置いておけば、不慣れなエディタであっても最低限戸惑わずに操作できるようになるでしょう。 vi viは高機能なエディタなので、コマンドもとても多いです。Webブラウザから使うのであればVim Cheat Sheet - 日本語を覚えておくといいでしょう。印刷しておく場合にはPDF版を手元においておくと便利です。 nano nanoはシンプルなエディタで、画面下にショートカットキーが表示されています。何よりCtrlキーを基本として入力するので、WindowsなどのGUIエディタ風に操作できるのが魅力です。Web版のチートシートはNano text editor command cheatsheet | Codexpediaに、PDF版はこちらにあります。 ed edはほとんどのLinuxディストリビューション、UNIXでインストールされています。キーバインドが若干特殊ですが、viに似ています(実際には逆で、edがviに影響を与えていますが)ので覚えやすいと思います。Web版のチートシート、PDF版のチートシートがそれぞれあります。 Emacs Emacsは逆にほとんどのディストリビューションでデフォルトインストールされていません。そのため、あえてEmacsをインストールしているということは敢えてチートシートを見ることはないと思いますが…とはいえ、キーバインドが多いので忘れてしまうこともあるでしょう。Web版もありますが、個人的にはSoftware Design社のPDF版がお勧めです。 エディタの使い方によって生産性であったり、開発効率は大幅に変わってきます。誤った操作であったり、操作方法を知らないためにいらいらすることもあるでしょう。チートシートを積極的に活用してスムーズにサーバ操作を行いましょう!

TECH
バナナ かじる

2018年振り返り_広告おじさんがバナナおじさんになるまで。

#CloudGarage Advent Calendar 2018 12/13更新です。 こたつとホットカーペットの隙間から出られません。どうも、バナナです。 2018年も残りわずか、「師走」と書いて師を走らせる12月、自分はこたつに還りつつ2018年を振り返ってみます。 広告おじさんから、ディレクションおじさんへ・・・ 2018年1月、Web広告担当として「昨日読んだマンガの感想を社内slackにアップする」業務に勤しんでいたところ、CloudGarageチームからお声がけをいただきました。会社的なほにゃららがあったため事実上NHN JAPANへの移籍となります。レアル・マドリードにでも所属しない限り移籍なんて経験すること無いと思ってたので、せっかくなので初めての移籍をキメることにしました。 ディレクションおじさんから、出張おじさんへ・・・ CloudGarageチームではWebディレクションを担当しました。社内調整がメイン業務ですが、Webディレクター関連のイベントに参加する機会もいただけました。北は北海道から南は山口県まで(あまり南行かなかった)、全国津々浦々を行脚し、大変貴重な体験をさせていただきました。。。 貴重なとんぺい焼き。。。 https://twitter.com/supo48000/status/1004662702059368448 貴重な海鮮丼。。。 (世界中の北海道出張を命じられた海鮮好きよ...聞こえますか...あなたの心に直接語りかけてます...新千歳空港内の「ふく亭」に行くのです...新鮮なウニイクラカニを味わいなさい...時間がなくてもすぐ行けます...""'お茶漬け"""もできます...むしゃしゃうめええええ... pic.twitter.com/xE5iwkKdCP— supo.from賛否両論 (@supo48000) 2018年10月14日 貴重なジンギスカン。。。 松尾...ありがとう...それ以外の言葉が見つからない...#mtddc pic.twitter.com/fPHi6MBFtF— supo.from賛否両論 (@supo48000) 2018年6月9日 とても貴重でした。うまぁ。 特にフロントエンドに携わる方々や、ディレクターの皆さんが集まるイベントに参加させていただき、いくつかセッションの機会もいただきました。WordBench山口、札幌ひよこ会のみなさま、楽しいお時間をありがとうございました。 北海道では↓のセッションをさせていただきました。飛行機の中でスライドつくってました(酔 この時は何も考えずつくってましたが、ここから私のバナナ街道は始まってたようです。。。(後述 出張おじさんから、バナナおじさんへ・・・ 出張おじさんを経て、ユーザーの皆様と接点を持つ機会をいただけるようになり、嬉しいことにイベントなどでお会いするたびに声をかけていただけるようになりました。社内でディレクションするか家でゲームするか、圧倒的ひきこもりインドア派の自分にとってはこの上ない喜びでした。ちょうど同タイミングでLIG様への掲載もあり、多くの方とお話ができるようになりました。 速くて安いって…最高やな!アメ横で、超高速で有名なサーバーを秒速でベロベロに酔ってPRした話。 イベントにお越しいただく皆様が、私の顔を見るなり「おっすバナナ。」「今日はNOバナナ?」などと声をかけてくれるようになったのもこの頃です。こちらの記事のせいおかげですね。ありがたいことです。 そして伝説へ・・・ 振り返ってみると色々と新しい経験ができた1年でした。あとメシばっかくってました。 チームに加入して右も左もわからない状態の自分から、皆さまのご厚意により「なんか知らん人が来た」から「人畜無害のおじさんが来た」を経て、「とりあえずあのバナナに聞いてみよう」にまで至れたので、自分としては有意義な一年になりました、感謝ですm(_ _)m CloudGarageチームは、これからも皆様との交流を大切にしていければと考えています。全国各地どこでもお伺いします、お気兼ねなくお声掛けください。沖縄まだ行ったことないです(緩募 来年もよろしくお願いいたします。

ついに公開されたAPIをNode.jsから利用する(イメージ取得)

TECH
中津川 篤司

CloudGarageのインスタンス操作などを自動化できるAPIがついに公開されました。これでインスタンスの立ち上げや停止を自動化できるようになります。 そこで今回はNode.jsを使ってAPI操作を行う方法を解説します。まずはインスタンスイメージの取得です。 必要なソフトウェア、ライブラリ 今回必要なソフトウェア、ライブラリは以下の通りです。 Node.js superagent プロジェクトのベースの作成する Node.jsのインストールが終わっていることとして、まずは適当なディレクトリを作成し、その中でNode.jsプロジェクトのベースを生成します。 npm init 続いて必要なライブラリである superagent をインストールします。 npm i superagent -S APIキーを取得する 続いてCloudGarageの管理画面にてAPIキーを取得します。管理画面の右上にあるメニューをクリックして、アカウント情報確認/変更を選択します。 一度パスワードを入力する必要があります。 そして一番下にあるAPI Key管理にてAPI Keyを発行します。私はすでに発行済みなので再発行になっていますが、最初はAPIキーがないはずです。Client ID(クライアントID)とClient Secret(クライアントシークレット)の二つで認証します。重要なキーなので漏洩したりしないよう注意してください。 トークンを取得する まずAPIを利用するためのトークンを取得する必要があります。コードは次のようになります。 POST /tokens リクエストして、その結果として得られるJSONの token.id の値がトークンになります。 const config = require('../config'); const request = require('superagent'); const baseUrl = 'https://api.cloudgarage.jp'; const getToken = async (config) => { const response = await request .post(`${baseUrl}/tokens`) .send({ client_id: config.clientId, client_secret: config.clientSecret }); // トークン文字列 return response.body.token.id; } 今後のリクエストはこのトークンを X-Auth-Token ヘッダーに適用すれば良いだけです。 イメージ一覧を取得する では今回はOSイメージの一覧を取得します。これは GET /images リクエストになります。 const getImages = async (token) => { const response = await request .get(`${baseUrl}/images`) .set('X-Auth-Token', token) .send() return response.body.images; } これでOSイメージの一覧が返ってきます。 実行例 例えば今回のコードを以下のように実行します。 (async (config) => { try { const token = await getToken(config); const images = await getImages(token); console.table(images); } catch (e) { console.error(e); } })(config); そうすると結果が以下のように返ってきます(一部抜粋)。 ┌─────────┬────────────┬─────────────────────────────────┬─────────────────┬──────────────┬─────────┬────────────┐ │ (index) │ size │ image_id │ image_name │ os_distribution │ os_version │ os_type │ image_type │ ├─────────┼────────────┼─────────────────────────────────┼─────────────────┼──────────────┼─────────┼────────────┤ │ 0 │ 1612185600 │ '38...aa' │ 'CentOS-6.10-32bit' │ 'CENT_OS' │ '6.10_32bit' │ 'Linux' │ 'OS' │ │ 1 │ 1029636096 │ 'b1...71' │ 'CentOS-6.10-64bit' │ 'CENT_OS' │ '6.10_64bit' │ 'Linux' │ 'OS' │ │ 30 │ 2964258816 │ '21...b9' │ 'minecraft20181111' │ │ │ │ 'PRIVATE' │ └─────────┴────────────┴───────────┴─────────────────────┴─────────────────┴──────────────┴─────────┴────────────┘ インスタンスを立ち上げる際にはこの中の image_id を使って行います。 まとめ Node.jsの場合、HTTPリクエスト用ライブラリのSuperagentとawait/asyncを組み合わせることでネットワークの非同期処理が簡単に書けます。APIリファレンスはCloudGarage API リファレンスにありますので、ご覧ください。

Web開発のためのクラウドサーバー選び

動画・自由研究
クラガレラボチーム

#CloudGarage Advent Calendar 2018 の17日目の記事です。 Web開発をするために必要なものといえば、プログラミングスキルやシステム構成の検討、コーディング運用などアプリケーション特有のものが多く挙がりますが、アプリケーションを載せるサーバーも必要となります。Web開発をする際には、アプリケーションのことだけを考えていれば良いと思われがちですが、サーバーの運用方針の影響を受けることが多々あります。 そこで今回は、Web開発をするためのクラウドサーバー選びについてご紹介していきます。まずは、サーバーの選択肢にどのようなものがあるか確認し、その上でどのようなクラウドサーバーを選択すればいいのか見ていきましょう。 Web開発のためのサーバーの選択肢 Web開発のためのサーバーは、技術が進化するにつれて選択肢が多くなっています。それぞれのサーバー環境を選んだ時、どのようなメリット・デメリットがあるのか確認していきましょう。 - ローカル環境 ここでのローカル環境とは、Windows10やWindows7がOSとしてインストールされているようなPCを指します。誰かのサービスを利用するのではなく、自分のPCにアプリケーションを構築していくため、もちろん申し込みなどの手続きは不要で、すぐにWeb開発を始めることができます。また、自分のPCであるため、Web開発に必要なモジュールやアプリケーションがあれば、すぐにインストールすることも可能です。 一方、PCのスペックには限度があり、大人数がアクセスするようなWebアプリケーションに耐えることができません。その場合には、スペックが高いサーバーへ移行する必要があり、その移行作業に時間を要することもあります。 - オンプレミス環境 オンプレミス環境とは、物理的なサーバー機器を使って構築する環境のことです。サーバー機器を利用するため、OSのインストールなどイチからセットアップする必要があり、インフラに関する知識が必要となります。さらに、サーバー機器を設置する場所にも考慮が必要で、地震や停電などに対応でき、冷却設備も整った専用の設置場所を用意する必要があります。 一方、スペックはローカル環境よりも優れているため、本番リリース後にスペック不足が大きな問題とならない限り、アプリケーションの移行作業は発生しません。また、ローカル環境と同様に、管理者権限も持っているため、社内のIT運用ルールにもよりますが、比較的容易にアプリケーションに必要な環境を整えることができるでしょう。 - レンタルサーバー ここからはクラウドで利用できるサーバーの紹介に入ります。レンタルサーバーは、ベンダー企業が保有しているサーバーの一部を利用者へ貸出するサービスです。サーバーの基本的な設定は、ベンダー企業が実施済みであるため、利用者が行う必要はありません。ただ、レンタルサーバーを利用するためには手続きが必要であり、サーバーの権限も絞られているため、自分でカスタマイズできる範囲が限られます。さらに、ベンダー企業ごとにサーバーの管理範囲が異なるため、Web開発をしていく中で、うまくいかない場合にはベンダー企業へ都度問い合わせが必要となります。 - クラウドサーバー こちらもベンダー企業へ利用開始の手続きが必要となりますが、レンタルサーバーよりも自由にサーバーの設定をすることができます。OSやCPUの数、メモリ容量やディスク容量など、開発するWebアプリケーションの規模に応じて、サーバーのスペックを調整することが可能です。また、管理者権限を取得できるサービスも多く、ある程度サーバーのカスタマイズが可能です。 クラウドサーバーの中には、OSをインストールした状態で利用開始するものもあり、その場合にはOSの各種設定など、インフラの基本的な設定を行う必要があります。 - SaaS環境 SaaS環境とは、サーバー機器だけではなく、WindowsなどOSレベルの管理もベンダー企業が実施するサービスです。利用者は、Web開発をすることだけに専念することができます。もちろんインフラに関する構築や運用は不要で、利用開始手続き後には、すぐにコードを打ち込み始めることができます。インフラの運用はベンダー企業が行うため、突発的なメンテナンスやトラブルに巻き込まれる可能性はあります。また、SaaS特有の使い方があるため、慣れるまでには多少時間が必要です。 サーバーを選ぶならやっぱりクラウド ここまでWeb開発のためのサーバーの選択肢を見てきましたが、構築・運用の容易さや利便性を踏まえると、クラウドサーバーを選択することの方がメリットが多いです。クラウドサーバーの中でも、下記の条件に当てはまるサービスを選ぶようにしていきましょう。 【1. 気兼ねなく作り直しが可能】 クラウドサーバーのメリットは、イチからサーバーを構築する必要が無いというところです。そのため、クラウドサーバーのバックアップを取得していれば、何かトラブルなどが発生したとしても、すぐにバックアップを取得した時点でサーバーを再構築することが可能です。自由にバックアップを取得し、リストアができるサービスは必須ですね。 【2. 検証/本番環境がすぐに作れる】 Web開発では開発した後に検証を行い、バグが見つかれば修正し、正常な動作が確認できた時点で本番リリースを行います。そこで重要となるのは検証するための環境です。本番リリース後も、設定変更が入る可能性は十分にあるため、検証環境と本番環境は分けて構築しておきたいところです。クラウドサーバーでは、環境を分けてサーバーを構築できるサービスを選びましょう。 【3. インフラ環境の設定をすぐに変更可能】 Web開発を進めていく上で、うまくパフォーマンスが出ない、すぐにCPUが100%に張り付いてしまうなど、サーバーリソースの問題が発生する可能性は多々あります。そんな時、クラウドサーバーの設定を変更するだけで、Webアプリケーションの再開発など必要なく、それらの問題に対処することができます。 まとめ 「クラウド」という概念が登場したおかげで、Web開発にとってもこれまで実現できなかったことが、比較的容易にできる時代となりました。クラウドのメリットをサービスに取り込んでいるクラウドサーバーを選び、Web開発にうまく活用していきましょう。

Linuxエディタチートシートまとめ

TECH
中津川 篤司

皆さん、エディタは何を使っていますか。エディタというと宗教戦争を起こしやすいので、気をつけないといけない話です。ローカルのパソコンではVS CodeやAtomなどが人気ですが、サーバにログインした際には別なエディタを使うのが一般的ではないでしょうか。個人的にはEmacs派なのですが、大抵のサーバ用Linuxではデフォルトではインストールされていません。そのためviやnanoを使う人も多いかと思います。 今回はそうした各種エディタのチートシートを紹介します。これを手元に置いておけば、不慣れなエディタであっても最低限戸惑わずに操作できるようになるでしょう。 vi viは高機能なエディタなので、コマンドもとても多いです。Webブラウザから使うのであればVim Cheat Sheet - 日本語を覚えておくといいでしょう。印刷しておく場合にはPDF版を手元においておくと便利です。 nano nanoはシンプルなエディタで、画面下にショートカットキーが表示されています。何よりCtrlキーを基本として入力するので、WindowsなどのGUIエディタ風に操作できるのが魅力です。Web版のチートシートはNano text editor command cheatsheet | Codexpediaに、PDF版はこちらにあります。 ed edはほとんどのLinuxディストリビューション、UNIXでインストールされています。キーバインドが若干特殊ですが、viに似ています(実際には逆で、edがviに影響を与えていますが)ので覚えやすいと思います。Web版のチートシート、PDF版のチートシートがそれぞれあります。 Emacs Emacsは逆にほとんどのディストリビューションでデフォルトインストールされていません。そのため、あえてEmacsをインストールしているということは敢えてチートシートを見ることはないと思いますが…とはいえ、キーバインドが多いので忘れてしまうこともあるでしょう。Web版もありますが、個人的にはSoftware Design社のPDF版がお勧めです。 エディタの使い方によって生産性であったり、開発効率は大幅に変わってきます。誤った操作であったり、操作方法を知らないためにいらいらすることもあるでしょう。チートシートを積極的に活用してスムーズにサーバ操作を行いましょう!

2018年振り返り_広告おじさんがバナナおじさんになるまで。

TECH
バナナ かじる

#CloudGarage Advent Calendar 2018 12/13更新です。 こたつとホットカーペットの隙間から出られません。どうも、バナナです。 2018年も残りわずか、「師走」と書いて師を走らせる12月、自分はこたつに還りつつ2018年を振り返ってみます。 広告おじさんから、ディレクションおじさんへ・・・ 2018年1月、Web広告担当として「昨日読んだマンガの感想を社内slackにアップする」業務に勤しんでいたところ、CloudGarageチームからお声がけをいただきました。会社的なほにゃららがあったため事実上NHN JAPANへの移籍となります。レアル・マドリードにでも所属しない限り移籍なんて経験すること無いと思ってたので、せっかくなので初めての移籍をキメることにしました。 ディレクションおじさんから、出張おじさんへ・・・ CloudGarageチームではWebディレクションを担当しました。社内調整がメイン業務ですが、Webディレクター関連のイベントに参加する機会もいただけました。北は北海道から南は山口県まで(あまり南行かなかった)、全国津々浦々を行脚し、大変貴重な体験をさせていただきました。。。 貴重なとんぺい焼き。。。 https://twitter.com/supo48000/status/1004662702059368448 貴重な海鮮丼。。。 (世界中の北海道出張を命じられた海鮮好きよ...聞こえますか...あなたの心に直接語りかけてます...新千歳空港内の「ふく亭」に行くのです...新鮮なウニイクラカニを味わいなさい...時間がなくてもすぐ行けます...""'お茶漬け"""もできます...むしゃしゃうめええええ... pic.twitter.com/xE5iwkKdCP— supo.from賛否両論 (@supo48000) 2018年10月14日 貴重なジンギスカン。。。 松尾...ありがとう...それ以外の言葉が見つからない...#mtddc pic.twitter.com/fPHi6MBFtF— supo.from賛否両論 (@supo48000) 2018年6月9日 とても貴重でした。うまぁ。 特にフロントエンドに携わる方々や、ディレクターの皆さんが集まるイベントに参加させていただき、いくつかセッションの機会もいただきました。WordBench山口、札幌ひよこ会のみなさま、楽しいお時間をありがとうございました。 北海道では↓のセッションをさせていただきました。飛行機の中でスライドつくってました(酔 この時は何も考えずつくってましたが、ここから私のバナナ街道は始まってたようです。。。(後述 出張おじさんから、バナナおじさんへ・・・ 出張おじさんを経て、ユーザーの皆様と接点を持つ機会をいただけるようになり、嬉しいことにイベントなどでお会いするたびに声をかけていただけるようになりました。社内でディレクションするか家でゲームするか、圧倒的ひきこもりインドア派の自分にとってはこの上ない喜びでした。ちょうど同タイミングでLIG様への掲載もあり、多くの方とお話ができるようになりました。 速くて安いって…最高やな!アメ横で、超高速で有名なサーバーを秒速でベロベロに酔ってPRした話。 イベントにお越しいただく皆様が、私の顔を見るなり「おっすバナナ。」「今日はNOバナナ?」などと声をかけてくれるようになったのもこの頃です。こちらの記事のせいおかげですね。ありがたいことです。 そして伝説へ・・・ 振り返ってみると色々と新しい経験ができた1年でした。あとメシばっかくってました。 チームに加入して右も左もわからない状態の自分から、皆さまのご厚意により「なんか知らん人が来た」から「人畜無害のおじさんが来た」を経て、「とりあえずあのバナナに聞いてみよう」にまで至れたので、自分としては有意義な一年になりました、感謝ですm(_ _)m CloudGarageチームは、これからも皆様との交流を大切にしていければと考えています。全国各地どこでもお伺いします、お気兼ねなくお声掛けください。沖縄まだ行ったことないです(緩募 来年もよろしくお願いいたします。

データベース別コマンドチートシート

TECH
中津川 篤司

WebアプリケーションやWebサービスを開発する際にデータベースは欠かせません。最近ではO/Rマッパーを使うことも増えているのでSQLを直接書く機会は失われているかも知れません。しかし、だからこそSQLを書かないといけない時に手が動かなくなってしまいます。 今回は有名な各種データベースに合わせて、そのチートシートを紹介します。チートシートをブックマークしておけば、いざという時にすぐにSQLやデータベース専用のコマンドを打てるでしょう。 MySQL LAMPスタックで一躍有名になったデータベースです。Oracleに買収された後、MariaDBなどの派生版も出ていますが、基本的なコマンドは変わりないようです。以下がMySQLのチートシートになります。 MySQL Cheat Sheet 日本語版であれば下記が便利です。 MySQLチートシート - Qiita PostgreSQL 堅牢で高機能なオープンソースデータベースとして知られるPostgreSQLです。PostGISのような位置情報系を扱う際にもよく利用されます。以下は英語版のチートシートです。 PostgreSQL Cheat Sheet - Download the Cheat Sheet in PDF Format 日本語版は同じくQiitaの下記が便利です。 PostgreSQLコマンドチートシート - Qiita Oracle 商用データベースとしては最も有名なOracleです。機能がかなり多いので、チートシートもボリュームがあります。下記は英語版です。日本語では良さそうなチートシートがなく、基本は書籍の購入になりそうです。 Oracle Database/SQL Cheatsheet - Wikibooks, open books for an open world SQL Server Microsoft社のデータベース、SQL Serverのチートシートです。画像のものもあるのですが、元サイトでは配布をやめてしまったのでPinterestにあるだけです。 PDF 変わったところではFORMAT関数のチートシートや文字列関数のチートシートもあります。 MongoDB NoSQL、ドキュメント型データベースです。位置情報の取り扱いが容易で、地図系サービスやアプリで利用が多い印象があります。以下は英語版のチートシートです。 MongoDBチートシート(PDF) 日本語版では以下が非常にまとまっています。 MongoDBチートシート - Qiita SQLite3 SQLite3は各プログラミング言語から使えて、あえて別途サーバを立てたりする必要がないファイルベースのデータベースです。英語版のチートシートは以下があります。 SQLite Cheat Sheet 日本語版は以下です。 SQLite3 チートシート - Qiita データベースが用いるSQLは標準SQL規格があり、方言は大幅に減っています(とはいえ、まだまだありますが)。O/Rマッパーはそうした方言を吸収してくれますが、直接SQLを書く場合にはそうはいきません。最適なSQLを書くため、データベースを管理する際にはそのデータベースに特化した書き方になるでしょう。不慣れなデータベースを扱う際には、ぜひチートシートを使ってみてください。

ユーザー利用率調査:OSシェア

動画・自由研究
セッションチーム

皆さん、こんにちは。 CloudGarageセッションチームより#CloudGarage Advent Calendar 2018 、10日目の記事を公開します。 昨日はyassan168さんより「CloudGarageを使ってお手軽にRedmineのModern UX化プロジェクト「Project Opal」を試してみる 」でした。こちらもぜひ。 今回は2017年7月よりサービスを開始してから1年半ほど経ちましたCloudGarageのユーザー利用率調査を報告したい思います。 第一弾となりますお題は「OSシェア」です。 (なお、集計は2018年10月までの累計となります。) CloudGarageで利用されているLinuxディストリビューションはCentOSが最も多く、これにUbuntu、Debianが続いています。 CentOS、Ubuntu、Debianのシェアの合算値は97%となっております。 また今回の集計は2018年11月6日に行いました「OSイメージ追加」以前のデータ集計のため、新たなイメージ追加によってシェアがどのように変遷していくかは楽しみなところです。   ※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。予めご了承ください。

Tripwireで改ざん検知(σ´∀`)σ  ※KUSANAGIコマンド編

動画・自由研究
テクニカルサポート

#CloudGarage Advent Calendar 2018 、8日目の記事です。 ———————————————————————————— ※この記事はプライム・ストラテジー株式会社運営「KUSANAGI MAGAZINE」へCloudGarageテクニカルサポートより寄稿しました内容を一部リライトして転載しております。 ———————————————————————————— CloudGarageテクニカルサポートの遠藤と申します。 よろしくお願いいたします。 2018.9月のKUSANAGI バージョンアップにて実装されたセキュリティ対策用アプリケーションに関する記事となります。 今回は『Open Source Tripwire (IDS)』について触れてみますが、詳細なIDSとは!の解説はしないので、ファイル更新があったら通知する仕組みとここではざっくりな表現とさせていただきます(*´¬`) 弊社サービスを利用のお客様で実際にあったものとしては脆弱性があるCMSやプラグインを利用していたため、その脆弱性経由で不正スクリプトが設置され、不特定多数にスパムメール送信が行われていました。 Tripwireを導入した場合、意図しないファイル(スクリプト)が設置されたことに早い段階で気づけるようになるかも。 1.KUSANAGIコマンドでTripwireを有効にする 上述のバージョン以降、 # kusanagi addon install tripwire と実行することでインストール可能です。 インストールの過程で何度もパスフレーズの設定(入力)を求められますが、運用時にも入力することが多々あるものなので、適当に入力して忘れてしまった、となりませんように。 # kusanagi addon install tripwire ---------------------------------------------- The Tripwire site and local passphrases are used to sign a variety of files, such as the configuration, policy, and database files. Passphrases should be at least 8 characters in length and contain both letters and numbers. See the Tripwire manual for more information. ---------------------------------------------- Creating key files... (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the site keyfile passphrase: Verify the site keyfile passphrase: Generating key (this may take several minutes)...Key generation complete. (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the local keyfile passphrase: ~~以下省略~~ 2.Tripwireの設定を調整する 設定ファイルは /etc/tripwire/以下に作成されます。 Tripwireの不正検知はファイルやディレクトリ情報を記録したデータベースを作り、そのデータベースと比較して更新や削除、追加が行われたらアラートを出すものです。 管理者はそのアラートを見て意図して設置されているファイルなのか、または消されてしまったファイルなのかなど判断する運用となります。 基となるデータベースはサンプルファイルとして用意されている /etc/tripwire/twpol.txt を基に編集すると良いでしょう。 twpol.txt の中身はディレクトリ毎にセクションを分け、細かい設定が可能になっています。 (特定のディレクトリやファイルは検知対象外とする、このディレクトリの検知は指定したメールアドレスにアラートを通知する、などもこのファイルで編集します) 169行目付近の記述を例にすると次のように記述されていますが、これは /(root)直下、/home以下、/etc以下に対しての設定です。 169 ( 170 rulename = "Invariant Directories", 171 severity = $(SIG_MED) 173 ) 174 { 175 / -> $(SEC_INVARIANT) (recurse = 0) ; 176 /home -> $(SEC_INVARIANT) (recurse = 0) ; 177 178 /etc -> $(SEC_INVARIANT) (recurse = 0) ; 179 180 } KUSANAGIの場合は/home/kusanagi/<<プロファイル名>>/ にプロファイル毎のディレクトリが作成されますが、 例えばこの領域へのファイル作成を検知させる場合、次のように記述を変更します(ついでにメール通知も有効にします)。 ※メール通知をするにはemailto = の形式で severity の下に書きます。severityの文末に ; も追加します。 ※ recurse = 0 のものは検知対象外です。 /home/kusanagi の行を追加し、その行を -1 とすることで /home/kusanagi以下は検知対象となります。 ( rulename = "Invariant Directories", severity = $(SIG_MED); emailto = *****@example.com ) { / -> $(SEC_INVARIANT) (recurse = 0) ; /home -> $(SEC_INVARIANT) (recurse = 0) ; /etc -> $(SEC_INVARIANT) (recurse = 0) ; /home/kusanagi -> $(SEC_INVARIANT) (recurse = -1) ; } 実際にこの設定で運用するとプロファイル以下のlogファイルの更新も検知しますので実用的ではないのですが、ここでは分かりやすい例としてこのディレクトリで設定しました。 ポリシーファイルの編集が終わったら暗号化をしておきましょう。 # twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt 3.データベースやポリシーファイルの作成・更新をする 調整したポリシーファイルに沿ってデータベースを作成するには次のコマンドで行います。 # /usr/sbin/tripwire --init また、検知後にデータベースを更新しないと毎回検知した時にレポート内容に同じ変化ファイル(ディレクトリ)情報が通知されるため、検知内容に問題が無かったり処置が終わったらデータベースを最新に更新するため、再度初期化するかレポートファイルを基にデータベースを更新してください。 ポリシーファイルを更新する場合は次のコマンドで行います。 # tripwire --Update-policy -Z Low /etc/tripwire/twpol.txt 4.ファイル検知動作チェック 設定した検知対象ディレクトリに適当なファイルを設置してみましょう。 # touch /home/kusanagi/<<プロファイル>>/testfile ファイルを設置したら検知するか次のコマンドでチェックさせます。 -Mはメール送信に利用します。 # tripwire -m c -c /etc/tripwire/tw.cfg -M なお、画面上のコマンド結果(レポート)とメールで通知されるレポート内容は異なります。 これは2.の設定でしたメール送信は特定ディレクトリに関する設定のため、 メールに記述される検知ファイルも設定したものに対しての通知となります。 次のような内容を含んだメールが届き、testfileがadd(追加)されたことのレポートとなっています。 ------------------------------------------------------------------------------- Rule Name: Invariant Directories (/home/kusanagi) Severity Level: 66 ------------------------------------------------------------------------------- ---------------------------------------- Added Objects: 1 ---------------------------------------- Added object name: /home/kusanagi/<<プロファイル>>/testfile   エンタープライズ版のTripwireではリアルタイム検知にも対応しているようですが、、、通常版はcronで定期的にチェックやデータベース更新を行うよう作りこむと実用的になります(ノω`*) 以上、テクニカルサポートからのブログ投稿でした。 最後までお読みいただき、ありがとうございました━━━━ヾ(´ー`)ノ゙━━━━!!

【動画】ディスク性能に関する検証結果

動画・自由研究
セッションチーム

------------------------------------------------------------------------------------ #CloudGarage Advent Calendar 2018 、7日目の記事です。 また、土日をはさんで次の月曜日も記事書きますね。Advent Calendarまだまだ募集中です! ちなみに昨日は最新機能について開発チームが自ら筆をとった「CloudGarage Public API の提供を開始しました!」の記事でした。こちらもぜひ。 ------------------------------------------------------------------------------------ 皆さんこんにちは、セッションチームです。 イベントでのブース出展などで来場者の皆様に分かりやすいサービス説明・訴求を行うため、最近では動画をよく活用しております。 ご存じの通りCloudGarageでは全てのインスタンスでSSDを採用しています。 くわえて「ローカルSSD」環境を採用することで一般的なクラウドサービス(IaaS)と比べて10倍以上高速なディスクアクセスが可能となっています。 2018/11月時点において当社エンジニアがディスク性能に関する検証を実施した結果、一般的なクラウドサービスと比べて読み込み平均速度12.4倍、書き込み平均速度7.6倍のディスク処理性能を示す結果が得られています。 その時の検証結果を動画にしましたのでご覧ください。 https://www.youtube.com/watch?v=H8PujEKcDz4 いかがでしょうか。CloudGarageのディスク性能の良さがお分かり頂けるかと思います。 少し試してみようかな、という方には今ならAmazonギフト券1,000円分がもらえるプレゼントキャンペーンを実施しておりますので、合わせてご活用頂くと大変お得です。こちらもぜひ。 今後ともCloudGarageをどうぞよろしくお願いします。

CloudGarage Public API の提供を開始しました!

CloudGarage
CloudGarage開発チーム

こんにちは。CloudGarage 開発チームです。 本記事はCloudGarage Advent Calendar 2018の6日目の記事です。 昨日はryosms さんの「DAPを利用してCockroachDBのクラスタを作ってみてる話」でした。 DAP のご利用ありがとうございます! DAP についての詳細はこちらをご覧ください(宣伝です)。 明日はCloudGarageセッションチームよりベンチマークテストの結果を掲載いたします。乞うご期待! 本日、ユーザーの皆様から熱くご要望をいただいていたPublic API の公開を開始しました! そこで、本記事では提供しているAPI の一つ、「インスタンス作成API」(以下、本API)について解説したいと思います。 本API を利用することでコントロールパネルを経由せずにインスタンスの作成が可能になります!便利!!! はじめに はじめに、Public API のご利用方法についてはFAQ を参照ください。 提供しているAPI の一覧はCloudGarage API リファレンスを参照ください。 本API について 本API のアクセスURI や指定できるパラメータについてはCloudGarage API リファレンスを参照ください。 CloudGarage API リファレンスにサラっと書いてありますが、 コントロールパネル経由でのインスタンス作成とは多少仕様が異なっている部分があります。 - 契約ID を指定しないでインスタンス作成が出来る この点が一番大きい違いではないでしょうか。 CloudGarage プランを契約しているユーザーさんは本API 呼び出し時に契約ID(contract_id)をリクエストに含める必要はありません。 contract_id を省略した場合、指定したspec のインスタンスが作成可能な契約を自動的に検出してインスタンス作成を行います。 CloudGarage プランを持っていない、あるいは、インスタンスが作成できるリソースの容量が残っていない場合は400 Bad Request を返却します。 BOX プラン、WPH プランの契約を利用したい場合はcontract_id の指定は必須です。 - BOX プラン、WPH プランの契約を利用した場合はスペックは自動で決定する BOX プラン、WPH プランの契約を使用する場合は自動的に商品に基づいたスペックの値を利用します。 そのため、本API 呼び出し時にスペック(spec)をリクエストに含める必要はありません。リクエストにspec オブジェクトを含めている場合は無視されます。 たとえば、本API 実行時に「BOX5/4GB プラン」の契約を利用した場合は「CPU 3 Core / Memory 4GB / Disk 150GB」のインスタンスが作成されます。 - WPH プラン、Welcart 専用プランの契約を利用した場合は専用のイメージを自動で使用する WPH プラン、Welcart 専用プランの契約を使用する場合は自動的に専用のイメージを利用します。 そのため、本API 呼び出し時にイメージのUUID(image_id)をリクエストに含める必要はありません。リクエストにimage_id を含めている場合は無視されます。 - ユーザがアップロードしたISO イメージではインスタンス作成は出来ない 本API で指定できるイメージはCloudGarage で提供しているイメージ、あるいは、インスタンスのバックアップイメージのみとなります。 VNC コンソールでのインストール作業が必要となる理由から、アップロードしたISO イメージはご利用いただけません。 ご不便をおかけしますが、ISO イメージを利用したインスタンス作成に限っては従来どおりコントロールパネル経由での操作をお願いいたします。 - その他 リクエストパラメータのcontract_id とspec オブジェクトの両方が指定されていない場合は400 Bad Request を返却します。 使ってみる では、実際に本API を利用してインスタンスの作成にチャレンジしたいと思います! まずはToken を発行します。 インスタンス作成に利用するイメージのUUID をhttps://api.cloudgarage.jp/images を呼び出して取得します。 今回はCentOS 7.5 64bit のイメージを利用します。 - CloudGarage プランを利用してインスタンスの作成を試す まずはシンプルにcontract_id を指定せずにスペックを指定してインスタンス作成を行ってみます。 本API が正常に完了すると作成したインスタンスのUUID がレスポンスとして返ってきます。 インスタンス情報も併せて確認してみると無事に作成が出来ました! 念のためコントロールパネルも確認すると、きちんとCloudGarage プランとしてインスタンスが作成されています。 - BOX プランを利用してインスタンスの作成を試す もう一つ、今度はBOX プランを利用してのインスタンス作成を行ってみます。 先ほど作成した一つ目のインスタンス作成時のリクエストとの違いは、spec オブジェクトを指定せずにcontract_id を指定しています。 コントロールパネルを確認すると、BOX プランの契約でインスタンスが作成されています。 インスタンスのスペックはプランのサイズに準拠しています。 - 接続許可設定を指定してインスタンスの作成を試す 最後に、接続許可設定も指定してインスタンスを作成してみたいと思います。 リクエスト用に以下の内容でjson ファイルを用意し、そのファイルを利用してインスタンス作成を行ってみます。 コントロールパネル経由でインスタンスの情報を確認すると、リクエストのports オブジェクトに指定した内容に基づいてインスタンスに接続許可設定がされています。 おわりに いかがでしたでしょうか? 本API を利用する事でこれまでよりも気軽にインスタンスを作成出来るようになったのでは無いでしょうか? 特に、一度に同じようなスペックのインスタンスを複数台調達したい!というシーンに遭遇した方にとっては「もっと早く提供してくれれば良かったのに・・・」と思われる機能かもしれません。 今後の展望として、Public API 経由でのスケールアップ・ダウンや、インスタンス設定の更新などの操作もできるように機能拡充をしていく予定です。 この機能をPublic API 化して欲しい!という要望がございましたら気軽に「#cloudgarage」タグを付けてツイートしていただいたり、公式Twitter アカウントまでご意見を頂戴できればと思います! また、Public API を利用していただいた感想もどしどしお待ちしております! 今後ともCloudGarage をよろしくお願い申し上げます。 CloudGarage 開発チームでした。

中小企業に適したクラウドサーバーとは?

動画・自由研究
クラガレラボチーム

もし「クラウドを使う」のは大企業だけとあなたが思い込んでいるのであれば、それは大きな間違いです。クラウドの恩恵を受けられるのは、大企業だけではなく、中小企業も同様です。かつ、中小企業だからこそ、クラウドを活用すべきとも言うことができます。 一方、クラウドベンダーも外資、国産問わず、多くの企業がクラウドサービスを展開し、クラウドサーバーの種類や料金体系も様々です。そのため、中小企業のIT担当の方がどれを選んでいいのかわからず、結局今のサーバーの使い方を変えることができないということもあるでしょう。 そこで今回は、「中小企業」にスポットを当てて、中小企業に適したクラウドサーバーを選ぶための基準や考え方をご紹介します。実際に中小企業のお客様と、クラウドサービスを利用した経験を踏まえて記事を書いておりますので、これからお伝えすることが現場に近い考えとなります。ぜひ参考にしてみてください。 中小企業と大企業のクラウドサーバーの使い方の違い 同じクラウドサーバーでも、中小企業と大企業ではクラウドサーバーを使う前提が大きく異なります。この違いを把握せず、中小企業が大企業の真似をしてしまうと、あまり効果的にクラウドサーバーを使うことができません。まずは、中小企業と大企業の間で、クラウドサーバーを使う上でどのような違いがあるのか把握しておきましょう。 - 社員数が違うため、クラウドサーバーの台数やクラウドサーバーのスペックが違う 大企業は所属している社員数が多く、様々な部署で会社は組織されています。そのため、全社員がアクセスするようなシステムでは、クラウドサーバーへ負荷も大きくなり、部署が多いため利用用途が幅広く、多くのシステムが構築・運用されます。数が多い大企業では、数百ものシステムを稼働させている会社もあります。 一方、中小企業は社員数が少なく、稼働しているシステムも数百に達することはほとんどありません。そのため、クラウドサーバーには必要以上のスペックを持たせる必要はありません。 - IT部門で稼働できる人的リソースが違う 大企業はIT部門に対して多くのお金をかけることが可能です。自分の会社の社員はもちろんのこと、パートナーとなるベンダー会社と契約し、様々な案件を前に進めることができます。それに対して中小企業は、本業にリソースを集中しなければならず、IT部門には必要最低限の担当者しか配置することができません。そのため、なるべく業務を省力化し、IT部門にかかる工数を削減していく必要があります。 中小企業に適しているクラウドサーバー 中小企業と大企業の違いを踏まえた上で、中小企業に適しているクラウドサーバーの選び方を紹介していきます。中小企業だからこそチェックしておきたいポイントをまとめました。 【1. スペックが低いクラウドサーバーを選ぶ】 人は不安を嫌うもので、何かあった時のために、念のためにといって、クラウドサーバーのスペックを高くしてしまいがちです。そうすると、実際の負荷はそれほど無いにも関わらず、利用料金だけ多く課金される結果となります。 このような状況を防ぐために、まずはスペックが低いクラウドサーバーから始めましょう。検証環境でテストを行い、クラウドサーバーのスペックが足りないと判断できれば、その時に増強すれば大丈夫です。このやり方ができるのも、クラウドサーバーならではのメリットですね。 【2. 運用業務を自動化できるクラウドサーバーを使う】 人的リソースが少ない中小企業では、なるべく省力化して運用にかける工数を少なくしたいところです。そこで、クラウドサーバーの監視機能やバックアップ機能など、クラウドサーバーの機能として利用できるものを選んでいきましょう。 クラウドサービスによっては、自分で監視システムを構築したり、バックアップの仕組みを構築したりしなければならないものがあります。そうなると、お金と運用に工数を使うことになるため、既に機能として利用できるものを選びましょう。 【3. クラウドサーバーと一緒に機能としてロードバランサーが使えるクラウドサーバーを選ぶ】 中小企業のシステムによくあるものが、サーバー1台のシングル構成で作られたシステムです。お金をなるべく抑えたいという気持ちはわかりますが、サーバーが壊れてしまえば、システムは一定期間使えなくなる状態に陥ります。 システム停止を防ぐためには、サーバーを2台以上準備して、冗長構成を取る方法があります。その際に必要となるものがロードバランサーです。ロードバランサーがあれば、アクセスをサーバーに割り振ってくれるので、1台が故障してもシステムを継続させることができます。 ただ、ロードバランサーを自分で準備するとなると、技術者やライセンスなど多くのお金と時間が必要となります。そこで効果的なものが、クラウドサーバーと一緒に利用できるクラウドのロードバランサーです。機能として提供されているため、画面上の簡単な設定で利用することができます。 【4. カスタマーサポートが充実しているクラウドサーバーを選ぶ】 クラウドサーバーは、自社の持ち物ではなく、サービスを提供する会社が保有しているサーバーを使うことになります。さらに、クラウドとして共有利用していることもあり、その中身がどういった仕組みになっているのかわかりません。 何か問題が発生した時に頼りになるのが、カスタマーサポートです。カスタマーサポートも企業によって、サービス提供レベルは異なります。窓口が空いている時間から、質問できる難易度、回数など様々です。サポート費用とサービス提供レベルのバランスを取りながら、自社に適した体制を取れるようにしましょう。 【5. サービスの料金体系がわかりやすいクラウドサーバーを選ぶ】 クラウドサーバーによって料金体系も様々です。1時間あたりいくらという従量課金制のものもあれば、1ヶ月いくらという定額制のものもあります。一番大切なことは、料金体系を把握してクラウドサーバーを利用できるかというところです。 サービスによっては、ネットワークのデータ量に応じて課金されるものもありますが、仕組みがわかっていないと、いつの間にか多額の料金が請求される事態にもなりかねません。 クラウドサーバーを利用するのであれば、使うサービスの料金体系を必ず理解しておきましょう。 まとめ 中小企業は大企業と比較して、ITシステム構築・運用にかけることができる人的リソースが圧倒的に異なります。そのため、クラウドサーバーを活用していかに自動化・省力化をして、工数を減らしていけるのかを考えなくてはなりません。 クラウドサーバーは何も考えずに利用してしまうと、思わぬ金額の課金が発生してしまいますが、目的を明確にしてスモールスタートを意識すれば、課金額を抑えつつ、ITシステムにかける人的リソースを少なくすることが可能となります。 今回ご紹介した中小企業に適したクラウドサーバーを選ぶ基準を参考にしながら、クラウドサービスを活用できる仕組みを作っていきましょう。

安全にサーバを運用するために。ポート番号を正しく開放しよう

TECH
中津川 篤司

サーバはポートを開放して外部からの接続を許可します。ポートを全く開放しなければ一番安全ですが、外部から接続できないのではサーバとしての役割が果たせないでしょう。 そこで必要なポートだけを許可して、安全に運用する必要があります。CloudGarageでは先日、接続許可設定を細かく設定できる機能を提供開始しました。今回はその使い方を解説します。 接続許可設定は3パターン 接続許可設定は大きく分けて3パターンの設定が用意されています。 かんたん設定 詳細設定 全開放 最後の全開放はすべてのポート番号への接続を許可するもので、OS側のファイアウォール設定で制御します。より玄人であったり、自動化を行っている方向けでしょう。かんたん設定はよく使われるポート番号に対する接続許可を設定できます。 SSH 22 HTTP 80 HTTPS 443 Tomcat 8080 Rails 3000 FTP 20/21/990 SMTP 25/465/587 POP 110/995 IMAP 143/993 MySQL 3306 PostgreSQL 5432 DNS 53 簡単設定はチェックするだけでポート番号を開放できる手軽さの一方、接続元が指定できません。そのため、インターネット公開が前提になるであろうSSH/HTTP/HTTPS/FTP/SMPT/POP/IMAP/DNSなどは良いのですが、データベースやTomcat/Railsなどがインターネットから接続されるのは好まれません。 そこで使いたいのが詳細設定です。 詳細設定の使い方 詳細設定では3つのパラメータで設定します。 プロトコル ポート 送信元IPアドレス プロトコルはTCP/UDP/ICMP/ANYがあります。多くの場合はTCPですが、これは接続を許可したいアプリケーションによって変わるでしょう。 ポート番号は数字や範囲で指定します。例えば 8080 または 8080-8081 といった具合です。 IPアドレスはアドレス範囲で指定します。123.123.123.0/24といった具合です。なお、接続を許可しない場合には 0.0.0.0 を指定すれば良いですが、これは元々設定しなければいいだけなので意味がありません。 注意点 詳細設定は許可する条件だけを設定します。拒否設定のDENYはありませんので注意してください。そのため、あるIPアドレスからのアクセスだけを拒否したい場合には、アプリケーション側の設定や、ファイアウォールで設定する必要があります。 HTTP/HTTPSを除けば、アクセス先のポート番号はデフォルトから変えておいた方が安全とされています。外部からハッキングする人たちはデフォルトのポート番号(または類似番号)へのアタックを自動で行っています。そうした悪意を持った人たちにサーバを乗っ取られたりしないよう、ポート番号と接続許可に関する設定を正しく行いましょう。

クラガレミートアップ vol.2 「IaaS」を開催しました

イベント・勉強会
中津川 篤司

CloudGarageを使っている方はもちろん、まだ知らない方たちも対象として新しいミートアップ「クラガレミートアップ」を立ち上げました。二回目となる今回はIaaSをテーマに、識者の方々に登壇いただきました。 クラガレミートアップとは? 一つのテーマを元に、そのテーマに沿ったソフトウェアやサービスを提供する方々に登壇いただいて、お話を伺う勉強会です。大抵の場合、一つのサービスについては知っていても、他のサービスを知らないことが多いのではないでしょうか。その結果、暗黙的にそのサービスを選択してしまったり、ごり押ししてしまいます。様々なサービスを知っておくことで、要件やニーズに合わせて最適なサービスを選択できるようになります。 https://twitter.com/goofmint/status/1064820196446064640 クラガレミートアップではそうした知見を蓄えられる場を目指しています。 登壇者 https://twitter.com/CloudGarage_PR/status/1064828335308496896 今回はIaaSがテーマなので、以下の方々に登壇いただきました。 Alibaba Cloud SBクラウドの大石さんです。Alibaba Cloudは中国ECの最大手アリババ社の提供するクラウドサービスで、200以上の機能を備えています。また、世界10カ所以上のリージョンを持ち、海外から中国展開を目指す上で外せないサービスとなっています。 CloudGarage 小柳津さんです。我らがCloudGarageは今回登壇いただいた各社サービスに比べると機能面はかなり少ない印象が否めません。しかし定額であるという訴求ポイントと、ユーザにとってとにかく使いやすいサービスであるという点を重視してサービス提供しています。 IDCフロンティア エバンジェリストの神谷さんです。IDCフロンティアは企業向けのクラウドサービスを提供し、ゲーム業界において強いサービスとなっています。リージョンは東京と関西に用意されており、ネットワークトラフィックの定額モデルも提供しています。 ニフクラ エバンジェリストの山本さんです。ニフクラは富士通の一ブランドになっていますが、元々法人向けに手厚いサービスを提供している印象があります。24時間の電話サポートであったり、オンプレからの移行サービスなどにもそのサポートの厚さがうかがえます。 さくらのクラウド エバンジェリストの前佛さんです。さくらのクラウドは7周年とのことで、歴史の長い国内クラウドベンダーとなっています。共有サーバからVPS、クラウドまでニーズに合わせてサービスを組み合わせられるのも魅力となっています。徹底して低価格であるという点も社長である田中氏のマインドが反映されています。 前半はパネリスト紹介から 前半は登壇者であるパネリストの方々に自己紹介とそれぞれのサービス紹介と行ってもらいました。価格帯であったり、対象が法人のみなのか、個人も対象としているのかなどによって手法が変わっているのが印象的でした。今回はそれぞれ異なるベンダーの方々に登壇してもらったと考えていたのですが、Alibaba CloudとIDCフロンティアはどちらもソフトバンク系と意外なつながりもありました。 後半はパネルディスカッション 休憩を挟んで後半はパネルディスカッションでした。あらかじめこちらで用意した質問事項を基本として、自社サービスの売りであったり、サーバレスアーキテクチャについてどう思うか、ハイブリッドクラウドについてなどをお聞きしました。日本のクラウド利用でよくある定額制、従量課金の問題についてはCloudGarageがそもそも定額制であること、さくらのクラウドは従量課金をベースとしつつ上限キャップをもうけていたり、IDCフロンティアはネットワークの上限制をつけている、ニフクラは定額制と従量課金の両モデルを備えている、Alibaba CloudはAWSのようにリザーブや年額モデルを用意しているなどそれぞれに特徴がありました。 https://twitter.com/t_furusato/status/1064845147098120192 サポート範囲についてはほぼ全サービスで同一であり、OSより低レイヤーまでとしているようです。ただし法人向けサービスを提供している場合、突っぱねる訳にもいかないのでサポートで一般論とした上での対応をしたり、そういったOSやアプリケーションレベルでのサポートを提供するパートナーを紹介するといった形をとるようです。 https://twitter.com/CloudGarage_PR/status/1064852422667857920 最後は会場からの質問にも答えてもらいつつ、閉幕となりました。 パネルディスカッション終了後は懇親会(新橋のHUB)を行って解散となりました。多くの方々に残っていただき、とても楽しい懇親会になったと思います。 クラガレミートアップは今後も定期的に開催していきます。テーマは毎回変えていきますので、興味があるテーマがあった際にはぜひご参加ください。以下のConnpassグループに参加してもらっていれば新しいイベント作成時に通知が飛びますのでぜひご登録ください! CloudGarageコミュニティ - connpass

オンプレミスからクラウドへ!移行のメリット・デメリット

動画・自由研究
クラガレラボチーム

現在、企業にとって不可欠となっているITの仕組み。昔は社員が1人1台PCを持つことさえ珍しかったものが、今やそれが当たり前となっただけではなく、何かしらのITシステムを導入していることも多くなってきました。10年経過すれば、その時に最新だった技術は陳腐化し、新しいIT技術が登場してきます。 クラウドも新しいIT技術の1つです。新しい技術に乗り換えるためには、古いものを新しいプラットフォームへ移行していく必要があります。そこで今回は、クラウドとその対極となる仕組みであるオンプレミスを比較し、クラウドへ移行するメリットやデメリットを考えてみたいと思います。 「流行っているから」という単純な考えで意思決定をするのではなく、メリットやデメリットを理解して意思決定の根拠を持ちましょう。そうすることにより何かに迷った時の判断基準となり、事業をスムーズに前に進めていくことにもつながっていきます。 オンプレミスとクラウドとは? クラウドという考えに触れていると、必ず登場してくる言葉があります。それが「オンプレミス」という言葉です。ここではオンプレミスについて詳しくご説明するとともに、クラウドといっても1つの意味ではなく、大きく2種類の意味「プライベートクラウド」と「パブリッククラウド」に分けることができるので、その2種類の意味も合わせてご説明していきます。 - オンプレミスとは? オンプレミスは、英語で書くと「on-premises」となりますが、言葉の意味はシステムを構築するためのサーバーなどの機器を、自社内で保有・運用することを言います。クラウドという概念が登場する前、ITシステムを構築するためには、自社内に場所を確保し、サーバーを設置するためのラックを組み立て、そのラックにサーバーやNW機器であるスイッチやルーターを設置する必要がありました。今でも、あなたの会社のどこかにサーバー機器などが設置されている場所があるかもしれません。 - プライベートクラウドとは? プライベートクラウドとは、自社内でサーバーを保有・運用しながら、1台のサーバーにVMWareなどの仮想化基盤を導入したインフラを構築することにより、1台のサーバーに複数のシステムを構築できる仕組みのことを言います。仮想化基盤を導入することにより、1台のサーバーに生まれるメモリやコアの余りを他のシステムに割り当てることができ、物理リソースを有効活用できるようになりました。 - パブリッククラウドとは? パブリッククラウドとは、ITベンダーが保有しているサーバーを借り、借りたサーバーの上に自社のシステムを構築していくことを言います。これまでサーバーを触るためには、サーバーが設置されている場所に赴くことが多かったのですが、パブリッククラウドではインターネットさえ繋がっていれば作業を完結させることができます。サーバーを構築する方法も簡単で、多くがインターネット上でサーバーのスペックなどのパラメーターを指定すれば、後はパブリッククラウド上で自動的にサーバーが出来上がる仕組みができています。 オンプレミスとクラウドのメリットとは? クラウドはオンプレミスよりも後から登場してきたIT技術になりますが、全てクラウドが優れているとは限りません。オンプレミスとクラウドはそれぞれ良い面を持っています。それぞれどのようなメリットがあるのか確認していきましょう。 - オンプレミスのメリット オンプレミスのメリットとして大きく2点を挙げて説明します。 【1. カスタマイズ性】 オンプレミスの形態では、サーバーなどの機器を自社で保有することになります。そのため、自分たちでサーバーをセットアップしていることもあり、管理者権限も取得していることになります。そのため、社内ルールなどの制約が無ければ、何かに縛られることなく、何でもできる環境が整っています。 ソフトウェアによっては細かくインフラ環境を整えることが求められることもあります。また、セキュリティ面を高めるためにログの保存期間を決めて運用することもあります。パブリッククラウドベンダーによっては、変えられない仕様として利用者はどうにもできないことがありますが、オンプレミスであれば自由に仕様や運用を決めることが可能となります。 【2. ITベンダーの影響を受けない】 パブリッククラウドは、基本的にベンダーのサーバー機器を借りてシステムを運用することになりますが、サーバーが100%稼働している保証はありません。パブリッククラウドは魔法を使っているわけではなく、裏ではパブリッククラウドベンダーの物理的なサーバーが稼働しており、そのサーバーが故障する可能性は十分にあります。そのため、突発的なメンテナンスの通知が利用者に入り、一時的にサーバーを停止する必要がある場合もありえます。 一方、オンプレミスであれば、サーバーの障害対応は自分たち自身が行いますが、メンテナンスのタイミングなどは自分たちでコントロールできます。大企業であればあるほど、メンテナンスのための社内調整は苦労するものです。社内調整を済ませた後にメンテナンスを実施するという手順を踏むことが可能となります。 - クラウドのメリット それでは、クラウド(主にパブリッククラウド)のメリットとして大きく2点を挙げて説明します。 【1. スピード性】 クラウドはサーバーが欲しいと要望が上がってから、サーバーを構築完了するまでの時間をかなり短くすることができ、ビジネスのスピードを飛躍的に向上することができます。これまでのオンプレミスでは、サーバーを購入する手続きから始まり、ラックへの設置、初期設定、ネットワーク設定などが終わってはじめて、サーバーの構築が完了します。サーバーの調達にも時間がかかるため、サーバー構築までに2,3ヶ月かかることは珍しくありません。一方、クラウドではサーバーの準備はすべて不要で、すぐにサーバーの構築に着手することができます。サーバーの要望を受けてから、その日中にサーバーを払い出すことも可能です。 【2. セキュリティの向上】 クラウドの利用を検討している方の中には、自社の情報が入っているシステムを他社の環境下に置くことに不安があるという声を聞くことがあります。ただ、多くの場合、クラウドを利用することによりセキュリティ面は向上します。クラウドベンダーは、サーバー群をデータセンターと呼ばれるセキュリティを確保した施設に設置・運用しています。データセンターは、入館する際に身分証明書の提示が求められたり、入口はセキュリティゲートが設置されていたり、中への持ち込みを制限していたりするなど、お客様のデータを扱っているため、セキュリティが強固になっています。ここまでのセキュリティを自社内で確保している企業はなかなかありません。 まとめ オンプレミスには、自社内にサーバーを保有しているからこそのメリットがあり、クラウドには他社のサーバーを利用しているからこそ得られるメリットがあります。企業が属している業種や事業の特性、システム要件、要求されるセキュリティ担保のレベルなど、様々な要素を総合的に見ながら、クラウドへ移行するか、オンプレミスのまま運用を続けるのか判断していきましょう。

サーバを安全に使い続けるために自動バックアップを設定しよう

TECH
中津川 篤司

サーバはまったく問題が発生しない訳ではありません。突然のハード障害があったり、データを間違って削除してしまうことだってあります。そのため、バックアップは定期的に取得しておく必要があります。 CloudGarageでは自動バックアップ機能によって、定期的にバックアップを保存できます。設定もとても簡単なので、ぜひ設定しておいてください。 インスタンス詳細より設定する インスタンスの詳細情報を確認する画面で、一番下に自動バックアップが用意されています。このブロックの右上にある鉛筆マーク(編集)をクリックします。 そして表示されたモーダルウィンドウで、自動バックアップを有効にします。自動バックアップは日次または週次、月次で指定できます。時間も指定できますので、夜中であったり日中など自由に指定してください。 後は指定した期間ごとに自動的にバックアップイメージが保存されます。 バックアップの個数には限度があります バックアップは登録ISOイメージと合わせて最大10個まで登録できます。保存数を越えると一番古いバックアップが自動で削除されますので注意してください。 バックアップイメージから復旧する バックアップから復旧する場合は、新しいインスタンスを作成します。そのため、CloudGarageプランなどでリソースに余裕がないと作成できませんので注意してください。 バックアップが必要になるのは大抵1〜2日前くらいだと思います。復旧時にインスタンスが必要になるので、アプリケーションデータやデータベースについては別途バックアップを用意しておく方が復旧は簡単かも知れません。ただしイメージファイルベースのバックアップがあれば、いざという時に必ず役立つはずです。 自動バックアップ機能

各種プログラミング言語のプレイグラウンド、Nodebookを試す

TECH
中津川 篤司

プログラミング言語をこれから覚えていきたいという人は多いでしょう。一つのプログラミング言語を習得したプログラマであっても、新しい言語を覚えたり、複数の言語を組み合わせたりする機会は少なくありません。しかし、各プログラミング言語の環境設定は面倒なものです。 そこで使ってみたいのがNodebookです。執筆現在(2018年11月)で18種類ものプログラミング言語に対応したプログラミング実行環境となっています。 今回はそんなNodebookのセットアップ法、試し方を紹介します。ローカルでも動かせますが、今回はCloudGarage上で実行します。 環境について 今回はUbuntu16.04を使っています。 Node.jsをセットアップする まずNode.jsをインストールします。aptでインストールされるものは古いので、Ubuntuに最新のNode.jsを難なくインストールする - Qiitaを参考に最新版をインストールします。 $ sudo apt-get install -y nodejs npm $ sudo npm install n -g $ sudo n stable $ sudo apt-get purge -y nodejs npm これで最新版のnode.jsがインストールされます。 $ node --version v11.0.0 Nodebookをインストールする Nodebookのインストールはnpmコマンドでできます。 $ sudo npm install nodebook -g Dockerをインストールする 実行環境として、各言語をセットアップする方法もありますがとても大変です。そこでDockerを使って安全に実行できるようにします。こちらはUbuntuにdockerをインストールする - Qiitaを参考にインストールします。 $ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh nginxをインストールする Nodebookは通常、ローカルでしか動かせないようになっています。そこでnginxをリバースプロキシとして利用します。 $ sudo apt-get install nginx -y 設定ファイルを編集する インストールされたら /etc/nginx/sites-enabled/default を編集します。変更点は以下になります。 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; proxy_pass http://127.0.0.1:8000/; } これで完了です。nginxを再起動します。 $ sudo service nginx restart Nodebookを起動する ではNodebookを起動します。 $ mkdir nodebooks $ sudo nbk --docker ./nodebooks/ これで http://127.0.0.1:8000/ で立ち上がります。 使ってみる http://(IPアドレス) にアクセスします。以下のような表示になればOKです。+Notebookをクリックするとプログラミング言語を選ぶメニューが出ます。 例えばRubyを選びました。 最初の実行時はDockerでRubyイメージをダウンロードするので若干時間がかかったり、すぐに実行されない可能性があります。実行されると右側に実行結果が表示されます。 Rubyだけでなく、Node.jsやPHP、Rust、Goなど様々な言語を試せます。 まとめ Dockerで実行されているのでプログラミング言語のセットアップは不要ですし、権限上も安全に実行できます。誰でも自由に実行できるのは若干怖いですが、コードのスニペットを試したり、プログラミング言語の学習として使ってみるのは面白そうです。 netgusto/nodebook: Nodebook - Multi-Lang Web REPL + CLI Code runner

ページトップへ