OmniAICreator/Qiita-1.07M huggingface dataset:
ワンボタンキーボードをつくってみた 2020/03/28

##前説
出歩きにくい今日このごろなので、なんとなく買っていたDigisparkもどきを使ってワンボタンキーボードを作ってみた。たくさんの作成事例があるし、プログラムは環境設定したらサンプルがあるので、作ったときの画像を貼り付けて暇人の印としよう。

##つぎのねた
**[いつでもピンポンバスボタン](https://www.amazon.co.jp/%E3%83%88%E3%82%A4%E3%82%B3%E3%83%BC-Toyco-%E3%81%84%E3%81%A4%E3%81%A7%E3%82%82%E3%83%94%E3%83%B3%E3%83%9D%E3%83%B3-%E3%83%90%E3%82%B9%E3%83%9C%E3%82%BF%E3%83%B3/dp/B07TFDKLGK/ref=pd_bxgy_2/358-7860747-1426357?_encoding=UTF8&pd_rd_i=B07TFDKLGK&pd_rd_r=368758d3-9c00-4478-a509-fb518fd44bc3&pd_rd_w=flAkg&pd_rd_wg=Mtomj&pf_rd_p=63d0fe32-ccc0-4f51-a060-39d142be22ea&pf_rd_r=B81Z645R72J5KWKYRVE1&psc=1&refRID=B81Z645R72J5KWKYRVE1)**に組み込んでみたい。

##写真
材料一式
・無印良品の小さいケース
・余っていたキースイッチとキーキャップ
・たぶん100均のUSBケーブル
・パクリDigispark
![IMG20200328174402.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/e9624ede-c18a-8883-d275-c316ecd3493a.jpeg)

キースイッチとUSBをさせるように現物合わせで穴あけ
![IMG20200328190819.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/b637bcc6-9730-a52f-ab58-c76d70401917.jpeg)

キースイッチとパクリくんを接続
![IMG20200328192540.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/27533a10-eaaa-71db-b24f-5080cd7b9f8d.jpeg)

プログラムはサンプルのを使って、一発で入力したい文を登録して完成
![IMG20200328214822.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/3764b86b-53b7-96dc-5941-493b8e478814.jpeg)
Dartにはdata classはない

# 環境

訳あって最新版を使っていません(macをCatalinaにアップデートできない==Xcodeの最新版を入れられないので)。
従って、バージョン違いによる不動作などあるかも知れません。お気づきの点があったら是非コメント下さい。

```console
$ flutter --version
Flutter 1.12.13+hotfix.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 27321ebbad (4 months ago) • 2019-12-10 18:15:01 -0800
Engine • revision 2994f7e1e6
Tools • Dart 2.7.0
```

# 要点
Dartには、Kotlinで便利な`data class`がありません。
その結果何が起こるかというと、`operator==`や`hashCode`、`toString`などを全部自分で書かないと行けないと言うことです。Java時代のあの苦労よもう一度、というわけです。

それを知らないでKotlinのノリでUnitTest書いていたら全然パスしなくてググりました(汗)

下記のパッケージを使うという手もあるようですが、ちょっと多機能すぎる気がして、私は使うのを見送りました。

- [built_value | Dart Package](https://pub.dev/packages/built_value)
- [data_classes | Dart Package](https://pub.dev/packages/data_classes)

ちなみに、公式に議論はされているようです。
https://github.com/dart-lang/language/issues/314


以下テンプレ作ったので良ければ使って下さい。

```Dart
class ClassA{
  double valueA;
  String valueB;
  Map<String, String> map;

  @override
  bool operator ==(Object other) {
    return other is ClassA &&
        valueA == other.valueA &&
        valueB == other.valueB &&  // 文字列も`==`での比較でOK
        mapEquals(map, other.map); // Deep比較してくれる。ListにはlistEqualsがある
  }

  @override
  int get hashCode => valueA.hashCode ^ valueB.hashCode ^ map.hashCode;

  @override
  String toString() {
    return "$valueA, $valueB, $map";
  }
}
```



# 参考

## Stringのoperator`==`をテストした時のコード

```Dart
import 'package:flutter_test/flutter_test.dart';
import 'package:matcher/matcher.dart';

void main() {
 group("Stringのテスト", () {
    test('operator ==:a,b==null', () {
      String a;
      String b;
      expect(a==b, isTrue);
    });
    test('operator ==:a,b have same String', () {
      String a="abs";
      String b="abs";
      expect(a==b, isTrue);
    });
    test('operator ==:a,b are same Instance', () {
      String a="abs";
      String b=a;
      expect(a==b, isTrue);
    });
    test('operator ==:a==null', () {
      String a;
      String b="abs";
      expect(a==b, isFalse);
    });
    test('operator ==:a==null', () {
      String a="abs";
      String b;
      expect(a==b, isFalse);
    });
    test('operator ==:a,b have NOT same String', () {
      String a="abs";
      String b="abc";
      expect(a==b, isFalse);
    });
  });
}
```

[Matcherライブラリ](https://pub.dev/packages/matcher)は`pubspec.yaml`に以下のように追記します。

```pubspec.yaml
dev_dependencies:
  flutter_test:
    sdk: flutter

  # matcher
  matcher: ^0.12.6
```

## 参考サイト
Dart で簡単に data class を作りたい
https://hisaichi5518.hatenablog.jp/entry/2019/12/02/205539
#Stripe API で web hook request の送信先エンドポイントURLを コンソール から curl で設定・変更する例

- we_xxxxx は Stripe の Web Hook Request の id
- sk_yyyyy は Stripe API 用 の SECRET ( Web hook request の Secret ではない )

```
curl https://api.stripe.com/v1/webhook_endpoints/we_xxxxx -u sk_yyyyy: -d url="https://example.com"

{
  "id": "we_xxxxx",
  "object": "webhook_endpoint",
  "api_version": "2019-08-14",
  "application": null,
  "created": 1577258466,
  "enabled_events": [
    "checkout.session.completed"
  ],
  "livemode": false,
  "metadata": {
  },
  "status": "enabled",
  "url": "https://example.com"
}
```

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/3051








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
React触って１年たったが学び直した

Reactをおおよそ一年くらい触って複雑なUI組む時にjQueryで書くより楽だな。。みたいな感覚は理解できたし開発はできているものの例えばRailsで開発してる時に比べて

<b>「こんな書き方あったのか。。」</b>とか、

<b>「ReactのコアAPIでこんな機能あったの。。」</b>とか

<b>「ここまでがReactの機能でここまでがNextでここまでがreact-domなのか。。」</b>

とかの「あっ、知らなかった。。」って場面が多いとは感じていた。

調べるコストもかかってるし雰囲気でやっちゃってる部分も多かったので公式のドキュメント、チュートリアル、オンライン講座、技術ブログ等で教材を漁って学び直したのでやったことを書いてみる。

## reactjs.org
reactで調べるとトップに出てくるサイト。以前もここでチュートリアルやったけど曖昧だった部分（hooksとかrefとか）を読み直した。


https://ja.reactjs.org/docs/hello-world.html

## Next.jsのチュートリアル


https://nextjs.org/learn/basics/getting-started


NextがReactから追加でどの程度拡張されてるか曖昧だったのでチュートリアルやってみた。英語だがそんなに迷うところはない。

問題を解くたびにポイントが加算されたりなかなか凝ったサイトだった。ルーティングとかパフォーマンス最適化とかいちいちライブラリインストールしたり設定ファイル書き直さなくてもよくやっぱり楽なんだなと再確認。

## Udemy

オンライン講座でReactの講座検索してもろもろやってみた。なんかこの辺りアフリエイトっぽくなってるけどそうではない。

###「フロントエンドエンジニアのためのReact・Redux実践入門」

https://www.udemy.com/course/react-application-development/learn/
とりあえずReact、Reduxを学び直すため、これを受講

### 「React Hooks 入門 - Hooksと Redux を組み合わせて最新のフロントエンド状態管理手法を習得しよう！」

今までクラスコンポーネントの開発ばかりなので最近話題のHooksを学ぶために受講した。これからはこれがスタンダードになるらしいのでキャッチアップしていかないと。

https://www.udemy.com/course/react-hooks-101/learn/

### フロントエンドエンジニアのためのGraphQL with React 入門
別にGraphQLは仕事で使ってないんだけど興味がてら受講した。慣れたらJSONのAPIそのまま扱うよりも快適なんだろうなと。

https://www.udemy.com/course/graphql-with-react/

### モジュールバンドラー webpack を1日で習得！フルスクラッチでインストールからカスタマイズまでの手順を理解…モジュールバンドラー webpack を1日で習得！フルスクラッチでインストールからカスタマイズまでの手順を理解する

webpackがjsやcssをまとめてパフォーマンスを改善してくれるもの。。とは知ってはいたものの設定ファイルの内容とかloader、pluginとか詳しいことは知らなかったので受講した。今まで曖昧だった部分を補強してくれて良い感じ。

https://www.udemy.com/course/webpack-crash-course/

### 「React Testing with Jest and Enzyme」
テストに関しては日本語でまとまった教材がなかったので英語で受講した。JestとEnzymeを使ったReactのテスト。
フロントエンドのテストは書き方だけではなくケースの作成とか考え方も曖昧なので引き続き学びたい。

https://www.udemy.com/course/react-testing-with-jest-and-enzyme/

### Qiita
QiitaでReactのタグをフォローした。

### Podcast
React PodcastというReactのPodcastがあったので通勤時に聞いてみた。英語なので100%はわからないけど歩きながら情報収集できるのでもう少し粘って聞いてみようと思う。

## 書籍

教材としては書籍もいいものがないか調べたけど気のせいかVueに比べて充実していない気がした。Vueはなぜか日本人のコミュニティ強めって聞いたけどなんかそういうのあるんだろうか。

## これから
引き続き情報収集しつつ何かアプリ作ったりとかReact関連のOSSのGithubを読んでいく予定
インストールするgemのリモートリポジトリを追加する

#環境

Ubuntu 16.04.5 LTS
Windows10
Vagrant

#手順

gemをインストールする時、**gem install**でインストールするが、どこからインストールしているのだろうか？ダウンロード元のリモートリポジトリを確認するコマンドがあります。

```cmd
$gem sources -l
https://rubygems.org/
```

では、**rubygems** にないgemをインストールしたい場合はどうすればいいのだろうか？
インストールしたいgemが、GitHubにある場合、リモートリポジトリのリストにGitHubを追加します。

```cmd
$gem sources -a http://gems.github.com/
```

```cmd
$gem sources -l
https://rubygems.org/
http://gems.github.com/
```

これで、インストールしたいgemが、rubygemsになかった場合は、githubを検索して、ダウンロードしてくれるようになります。
YoutubeのチャンネルIDから動画ID一覧を取得するGASプログラム

YoutubeのチャンネルIDから動画IDの一覧を取得するPGMです。

GASURL:https://drive.google.com/open?id=1nlEKezfkIqISCqhN1zim1zCJO-fHgztvsYU31eZJ9tk

GASPGM: https://github.com/NanjoMiyako/SampleGasScripts1/blob/main/ChannelMovieGet.txt

参考にしたページ
<a href="https://mamewaza.com/support/blog/get-youtube-videoid-list.html">
Youtube API V3でユーザーがアップロードした動画リストを取得する方法 [無料ホームページ作成クラウドサービス　まめわざ]
</a>
Swift MkMapViewで地図アプリ作成してみた（17）- バックグラウンド・スリープ中でも位置情報を受信する

#記事一覧
[Swift MkMapViewで地図アプリ作成してみた（記事一覧）](https://qiita.com/rain_00_00_09/items/3151b3faf2303fe78312)

#バックグラウンド・スリープ中でも位置情報を受信する
###CLLocationManagerのプロパティを設定する
allowsBackgroundLocationUpdatesプロパティをtrueにすれば、
バックグラウンドでGPSを受信することができる。

```swift:プロパティを設定する
locManager = CLLocationManager()
locManager.allowsBackgroundLocationUpdates = true
```

###バックグラウンドにした時のデバイスの画面
正しく受信できれば、左上に位置情報を受信しているアイコンが表示される。
<img width="266" alt="スクリーンショット 2020-03-29 9.31.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/64c6f5f7-328b-1460-b31e-973feb88b8fa.png">

###位置情報を受信する関数
バックグラウンド・スリープ中も、下記の関数で位置情報を受信することができる。
位置情報の取得方法は、[（02）- 現在位置を取得する](https://qiita.com/yuta-sasaki/items/18496f0f9aa1e89350e0)を参照してください。

```swift:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]) {
    let lonStr = (locations.last?.coordinate.longitude.description)!
    let latStr = (locations.last?.coordinate.latitude.description)!
}
```

#参考文書
[Apple Documentation > allowsbackgroundlocationupdates](https://developer.apple.com/documentation/corelocation/cllocationmanager/1620568-allowsbackgroundlocationupdates)
クライアントサイド系を歴史も踏まえて振り返る

## 概要
* クライアントサイド系の技術を改めて背景・歴史振り返る
    * クロスプラットフォーム系とJSフレームワーク系を中心に記載
    * 気になっている技術はFlutter/Electron
        * Angular/Vueは引き続きウォッチ

## 背景や歴史
スマホが出てくる前はマルチブラウザ対応が種だったが、Android/iOSも含めてクロスプラットフォームでの開発が必須な時代で、その状況に準じた製品が様々出てきている。

JQueryみたいなプリミティブなものは2010年前後に主流だった記憶があるが、その後AngularJSなどのデータバインティングとか少しずつ大きめの機能を持つようなJSフレームワークが出てきたように感じる。

※なお、RIA（Rich Internet Application）と言う言葉で総称され、Apach FlexやJavaFXやSilverlightなど様々なクライアントサイド技術の流行もあった。

## クロスプラットフォームフレームワーク
[こちらの記事](https://qiita.com/nskydiving/items/c13c949cc17c6f980a67)を参考にさせていただきました。個人的にはElectronも気になっている。

* Flutter
* React Native
* Xamarin
* Unity

## JSフレームワーク
* 2014年頃の御三家イメージ
    * Angular
    * Backbone
    * Knockout
* 2020年における御三家イメージ[※参考：比較ページ](https://qiita.com/gumiTECH/items/13eb7da8224bf93c67b5)
    * Aunglar
    * Vue
    * React

※[JSフレームワーク事情2020年始め](https://note.com/erukiti/n/na654ad7bd9bb)や[The State of JavaScript 2019](https://2019.stateofjs.com/overview/)を参考

### 長期政権のAngular
クライアントサイドといえば最大3年もあれば、次の技術になっているのが通例なイメージがある一方で、Angularは2012/6に[AngularJS](https://ja.wikipedia.org/wiki/AngularJS) v1.0.0がリリース。その後2016/9に1系から2系になったかと思えば、リリースサイクルが変わり、2020/2にバージョン9が出ている。

### 多大な貢献のJQuery
併せてJQueryも以前は随分お世話になった。個人的には最近は触っていないが、利用しているプロジェクトもまだまだあるのではないかなと想像。

## AltJS
もう最近はこの言い方をしないのかもしれないけれど、コンパイルするとJavaScriptが出力される言語。言わずもがなTypeScriptが前提となるケースが多い。例えば、AngularもTypeScriptが推奨となっている。CoffeScriptなども流行した。

AltJSはJavaScriptの人気を示していると感じる。少しずれるがJVM言語系のScalaやGroovyも同様にJavaの人気を示しているなと。

## サーバーサイドJavaScript
今回主としては取り上げないが、node.jsなどのサーバサイドJavaScriptも流行しており、JavaScriptの人気を改めて示している。

## まとめ
現時点では以下の形でまとめられることが多いように感じるけれど、時代背景に応じて数年後にはまた違った形になっていくかもしれない。例えば、今流行しているAIとかその辺の技術につられて何か出てくるとか。

* クロスプラットフォーム
* JSフレームワーク
* AltJS
* サーバーサイドJavaScript
u-boot settings for Raspberry Pi 3 B



Basically, we have to follow only https://elinux.org/RPi_U-Boot

#Make u-boot on Ubuntu 18.04

Create u-boot.bin from source code.

```
git clone git://git.denx.de/u-boot.git
cd u-boot
sudo apt install gcc-arm-linux-gnueabi
sudo apt install gcc-aarch64-linux-gnu
export CROSS_COMPILE=aarch64-linux-gnu-
make rpi_3_defconfig
make -j1 -s
sudo cp u-boot.bin /media/user/boot/kernel8.img
```  

  
Copy u-boot image to SD micro card.
Copy u-boot image to boot partition as kernel8.img.
SD card is already installed raspbian.

```
sudo cp u-boot.bin /media/user/boot/kernel8.img
```

#Connect Rapsberry Pi 3 and PC
Raspberry Pi 3 B pin assign is as following
* PIN 6 GND
* PIN 8 TX
* PIN10 TX

![IMG_20200328_130103.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504139/77ad4111-2f79-2f11-6ec2-5bb6df76fdf4.jpeg)
We should confirm boot raspbian and enable GPIO.

Serial Setting on PC
* Boolate: 115200
* data: 8bit
* parity: None
* Stop: 1bit
* Flow control: Nonee


After Raspberry Pi boot, We can find u-boot pronto on serial port.
ActiveRecord のコールバックを特定のコントローラーの処理のときのみ実行する

## はじめに

ActiveRecord のコールバックを、特定のモデルの状態というよりは、特定のコントローラーの処理の場合のみ実行したい場合について考えたので、簡単にやり方をまとめます。


## tl;dr

方針としては、コントローラーにモデルのインスタンス変数でフラグを付けてあげて、そのフラグが立っている場合のみ実行するという形にしました。

## 例

今回は `Post` モデルの `status` を `create` 時にのみ `created` とつけることを考えます。

## やり方

### モデルにattr_accessor と after_save の設定

まず、`Post` モデルにステータス更新用の `update_status` メソッドを定義します。

また、インスタンス変数のフラグを立てるメソッド`create_executed!` メソッドとフラグ判定メソッド `create_executed?` メソッドも作っておきます。

そして、`after_save` コールバックで、`create_executed?` が `true` のときだけ `update_status` メソッドを実行する形にしました。

```ruby
class Post < ApplicationRecord
  after_save :update_status, if: :create_executed?
  
  def create_executed!
    @create_executed = true
  end
  
  def create_executed?
    @create_executed == true
  end
  
  def update_status
    update_columns(status: 'created') 
  end 
end
```

### コントローラーに設定

コントローラー側では、`create` メソッドのときに、フラグを立てるメソッドを実行すればOKです。
これにより、`create` メソッドの場合のみ、`after_save` のコールバックを呼ぶことができます。

```ruby
class PostsController < ApplicationController
  # 中略
  
  def create
    @post = Post.new(post_params)
    @post.create_executed!
    if @post.save 
      redirect_to posts_path
    else
      render :new
    end
  end

  # 中略
end
```

## おわりに

`after_save` コールバックには、`validates` メソッドの`on:` のようなコンテキストが使えなかったのでどうしようか悩んでいたのですが、一旦この形でできました。

他にいい方法ご存知でしたら教えて下さい！

## 参考

* [Rails - 特定の条件でモデルのコールバックをスキップ - Kei178's blog](https://kei178.me/programming/1416/)
【Day38】積み上げ日記

##予定
■ポートフォリオ作成
■hover　復習
■レスポンシブ対応
■ハンバーガーメニュー

##完了
■ポートフォリオの作成
■hover　復習
■レスポンシブ対応
■ハンバーガーメニュー

##学習時間
２h

##学習ポイント
■hover　復習

Span { 
	cursor: pointer;
}
Span : hover {
	opacity: .5 ;
}

→spanタグで囲う。透明度指定はopacity

■ハンバーガーメニューの作成にはJSが必要
→JSの学習に本格的に取り組む

##計画通り進んだか？
進んだ。今までできていないところを復習する意味合いで、再度学習する時間を取っているが、そこまで多くの時間を取る必要はないと思っている。まだやらなくていいことをやっている気がする。明日は予定をエクセルかマインドマップに書き出す。
3.3 ロードバランサーを利用するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
ロードバランサーには、ローカル・ロード・バランサー、専用ロードバランサー(NetScaler)、LVS(Linux Virtual Server) の3つの方法があります。 それぞれの利用方法をご紹介します。
 

ロードバランサーを設定するには
ロードバランサーを使いたいときはポータル上から注文して設定できますが、ローカル・ロードバランサーと専用ロードバランサーでは方法が異なります。

ローカル・ロードバランサーは、Array NetworksのロードバランサーをIPアドレス単位で使うことができ、共用か専用かを選ぶことができます。 専用ロードバランサーのCitrix NetScalerでは、VLAN 単位で使うことができ、プライベート・ネットワーク内にバランシングをしたり、メンテナンス・ページの表示など高度な設定を行えます。

具体的な注文方法と初期設定の方法は、次のページでご説明します。
 

3.3.1 ローカル・ロードバランサーを使うには？
3.3.2 専用ロードバランサー(Citrix NetScaler)を使うには？
 

LVSを設定するには
LVSはLinuxのOS標準機能として組み込まれているため、お金をかけずとも、すぐに利用できるロードバランサーです。 ログを取ることもできるので、アクセス状況の確認や調査にもお勧めです。

LVSを使うには、OSが提供されているパッケージを使ったセットアップが簡単です。 CentOSやRed Hat系であれば yum install ipvsadm、Debian/Ubuntu系であれば、apt-get install ipvsadm を実行します。 あとはコマンドecho "1" >/proc/sys/net/ipv4/ip_forwardを実行するだけで、すぐに利用できます。

LVSの設定はipvsadmコマンドを使って行います。 以下の例の192.168.XX.XXのアドレスを、パブリックIPアドレスに置き換えることで、インターネット側からのリクエストをロードバランスでき、プライベートIPアドレスに置き換えることで、プライベート・ネットワーク上のサーバーへロードバランスができます。 設定内容は、2台のサーバーに対してポート80番へのアクセスをラウンド・ロビン方式で振り分けています。
 
```
# ipvasdm -A -t 192.168.10.10:80 -s rr
# ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.21 -g
# ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.22 -g
```

LVSの分散方式には、ダイレクト・ルーティング（DR）、NAT、トンネル（TUN）の3種類の方式があり、ネットワーク構成やサーバーの設定が変わってきます。 LVSの具体的な設定方法は、本家のKeepalivedのサイトがおすすめです。 それ以外にRed Hat社の設定ガイドに日本語での説明が参考になります。 3.4.2 キープアライブを用いたLVSのHA構成では、ダイレクト・ルーティング（DR）方式を利用して、プライベート・ネットワーク内で負荷分散する方法をご紹介します。
 

 Keepalived.org - Documentation http://www.keepalived.org/documentation.html
 Redhat Linuxマニュアル 第2章 LVS の初期設定 https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtual_Server_Administration/ch-initial-setup-VSA.html
 Redhat Linuxマニュアル 第3章 LVSのセットアップ https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtual_Server_Administration/ch-lvs-setup-VSA.html#s1-lvs-nat-network-VSA
3.2 サーバーのクローンを作るには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
可用性を高めるには、同じ構成のサーバーを複数を同時に稼働させて並列分散クラスタを作るか、または、データを共有してアクティブ・スタンバイのクラスタを作ることが殆どです。この場合に、サーバーのソフトや設定が同じクローンを複数準備する必要があります。 SoftLayerの機能を活用して、クローンを作る最も簡単な方法をご紹介します。
 

一般的なサーバーの増設方法について
SoftLayerでは、以下に挙げた3つの中で最も効率が良い方法に類似した、事前に取得したイメージを元に仮想サーバーや物理サーバーをオーダーすることができます。 この場合のIPアドレスやホスト名の設定は、クラウドの管理システムが自動的に設定します。

個々にインストールを実施
構築手順書が存在していたとしても、インストールや設定を繰り返し実施することは、品質の低下や技術者が拘束されコストがかかる課題があります。

Chef や Puppet などのサーバー設定ツールを使ってインストールを実施
サーバーの自動設定ツールを使ってサーバーを構築することは理想的です。 しかし、自動設定ツールが使える技術者の育成やレシピ開発などに時間とコストが必要です。

バックアップとリストアでサーバーをクローニング
サーバーのバックアップを取得し、新規サーバーへリストアすることで、大部分のインストール作業を省略してサーバーを複製することができます。
 

仮想サーバーのクローニングの流れ
次の図のように、仮想サーバーからイメージ・テンプレートを作成し、イメージ・テンプレートから、新しいサーバーを注文することで、サーバーの複製を行います。
この具体的な方法は1.5.1 仮想サーバーのシステム・バックアップを取るには？と1.5.2 仮想サーバーのシステム・リストア方法は？で解説されています。

物理サーバーのクローニングの流れ
物理サーバーの場合は、フレックス・イメージを利用して同様にクローンの物理サーバーを作ることができます。 フレックス・イメージが適用できるOSには制限があり、http://knowledgelayer.softlayer.com/procedure/create-flex-image に明記されています。

この具体的な方法は1.5.3 物理サーバーのシステム・バックアップを取るには？と1.5.4 物理サーバーのシステム・リストア方法は？で解説されています。
3.1 サーバーの可用性を高めるには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
ロードバランサー配下に複数のサーバーをたてることで実現できる可用性の向上方法と、Heartbeatなどを使ったアクティブ・スタンバイ構成で二重化する方法があります。 ここでは可用性を確保するための準備や構成の概要をご紹介します。
 

イメージ・テンプレートで簡単にサーバーを複製
可用性を高めるには事前準備としてサーバーを複数台用意しますが、OSのイメージ・テンプレート機能を使えば、サーバーの複製が簡単に行えますので便利です。 詳しい手順は、3.2 サーバーのクローンを作るには？を参照してください。
 

ウェブ・サーバーの可用性を高めるには
インターネット側にロードバランサーやLinux Virtual Server（以降はLVSとします）を配置し、その配下に複数台のサーバーを並べて可用性を高める方法があります。 これは一般的にN+1構成と呼ばれる方法で、必要なサーバー台数に予備の1台分を加えた構成です。 サーバーに障害が発生しても、この予備のサーバーを通してサービスを継続する構成です。
 

ロードバランサーを使う方法
SoftLayerのロードバランサー機能としてNetArrayとNetScalerが提供されており、IPアドレス単位かVLAN単位でバランシングを設定できます。 NetArrayのローカル・ロード・バランシングは、カスタマーポータル上から注文や各種の設定を視覚的に行えますので、手軽に利用できる機能です。

次の図は、ロードバランサーの下にウェブ・サーバーをN+1構成で配置し、可用性を高めています。 ロードバランサーは、一定間隔でサーバーの稼働状態を監視します。 もしサーバーの1つに障害が起これば、対象サーバーを切り離します。 他のサーバーには、接続が振り分けられるため、ウェブ表示を継続することができます。

ロードバランサーには便利なオプションがあります。 ロードバランサー自身の可用性を高めるための冗長化オプションのほか、SSLオフロード機能を使えば、HTTPS通信を配下のサーバーに一斉適用することもできます。 詳細な注文方法は、3.3 ロードバランサーを導入するには？を参照してください。

LVSを使う方法

LVSはOSのディストリビューションに標準で取り組まれているバランシングの機能であり、Linuxのサーバーを注文すると無料で利用できるロードバランサーです。 全ての作業を自分で行う必要がありますが、LinuxやLVSの知識があれば、手軽にバランシングが利用できます。 仮想サーバーで使えて、時間単位で料金を支払えますので、小規模なテスト環境にも使えるので便利です。

LVSは単一障害点にならないように、下の図のようにLVSを冗長化すると可用性を高めることができます。 LVSの設定方法は、3.3 ロードバランサーを導入するには？を参照してください。


アクティブ・スタンバイで可用性を高める方法
データベースとしてMySQLを使用する場合や、NFSのようにファイル・サーバーとして使う場合、代表的な可用性を高める方法を3パターン挙げます。 これらの方法について、概要をご紹介していきます。

1. サーバーをアクティブ・スタンバイで構成する
2. MySQLのレプリケーション機能を使う
3. DRBDでディスク・レベルのレプリケーションをする

アクティブ・スタンバイ構成は、DBサーバーを2台で冗長化しておき、データ用の領域に、エンデュランス・ストレージやパフォーマンス・ストレージなどのiSCSIディスクを共有ディスクとするとで、データベース・サーバーの停止に備えることができます。 次の図のように、データベース・サーバーの障害発生時にスタンバイ側に切り替えてサービスを継続することができます。 詳細な構成は、3.4 アクティブ・スタンバイのサーバーを構成するには？を参照してください。



MySQLのレプリケーション機能を使うには、マスタ・スレーブ構成を利用します。 次の図のように、それぞれのサーバーのローカル・ディスクにデータを保管することで、主と副の間の共有部分をなくし、より高い可用性を得ることができます。 詳細な構成は、先ほどと同じ3.4 アクティブ・スタンバイのサーバーを構成するには？を参照してください。

DRBD (Distributed Replication Block Device)は、Linuxのカーネルモジュールとして動作するソフトウェアで、ディスクのブロック・デバイス単位で常に自動的に同期します。 レプリケーション機能のないNFSサーバーでも簡単に共有部分のない二重化を実装できます。 このように、ミドルウェア・レベルの設定を行う必要がないため、適用範囲が広くなります。 次の図のように、同一データセンター内だけでなく、異なったデータセンター間とのデータ同期にも使うことができます。
3. 信頼性や性能の向上編

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

3.1 サーバーの可用性を高めるには？
3.2 サーバーのクローンを作るには？
3.3 ロードバランサーを利用するには？
3.4 アクティブ・スタンバイのクラスタを構成するには？
3.5 サーバーの RAM や CPU のスペックを変更するには？
3.6 サーバーのストレージ容量を変更するには？
3.7 オートスケールを利用するには？
2.8 VPN接続のアクセス先を制限するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
サブアカウントごとに、接続できるサブネットを制御する方法をご紹介します。 これは、複数の管理者が、複数のサーバーを管理するにあたり、アクセスを制御することで高いセキュリティを維持できます。
 

SoftLayerのサブアカウントとサブネットの使い分け
サブアカウントごとに、接続先のサブネット設定を細かく指定できます。 例えば、次の図のような複数のサブネット1・サブネット2のプライベート・ネットワークがある場合、それぞれのアカウントに対して、接続先のサブネットを限定します。

このように、SoftLayerで複数のネットワークを管理する手助けとして、「SL<番号>」というプライマリ・アカウントのほか、自分でサブアカウントを利用することができます。 サブアカウントとは、ポータルにログインする権限の有無や、VPN接続ができるかどうか、さらに、接続先のサブネットの指定を、アカウントごとに細かく指定できます。
 

サブアカウントにサブネットを割り当てるには
具体的にサブアカウントでの設定方法をご紹介します。 あらかじめ、サブアカウントは作成済みとします。 「Account」->「VPN Access」をクリックします。 設定を変更したいアカウントの行を見ます。 アカウント作成直後は「VPN Access」の項目が「None」のままです。

VPN接続を許可するために「VPN Type」の「None」をクリックし、「SSL」などに設定します。 PPTPを選ぶこともできますが、動作確認を行うだけであればSSLが手軽です。 SSLは、より汎用的にVPNに接続できますが、PPTPはOS側での接続設定が必要になります。 PPTPについては、Microsoft社の説明ページを参照してください。
 

  PPTPを理解する
    http://technet.microsoft.com/ja-jp/library/gg983536.aspx

それから、サブネット接続先を指定できるようにするため、「Subnet Access」を「Manual」にします。 「Manual」は接続先ごとに制限できますが、「Auto」は自動的にすべて接続できるようになりますので、気をつける必要があります。

「Manual」を選んだときは、次の図のように許可したいサブネットの横にある「Grant Access」にチェックを入れて、アクセス先を指定します。 ここでチェックを入れないサブネット環境には、VPNでログインしてもアクセスできません。 PINGは通じませんし、もちろん、SSHのログインもできません。 最後に「Save」ボタンをクリックして、設定を確定します。

注意事項として、この設定は対象アカウントが既にVPNに接続している場合、即座に反映されません。 一旦VPNを切断したあと、再度ログインした時点から有効になります。 そのため、サブアカウントの作成直後は、SSLの可否とサブネットの接続先を一緒に設定することをおすすめします。

サブアカウントの権限追加時に気をつけたいこと

ポータル上で参照・操作可能なデバイス（サーバー等）設定と、サブネット設定とは、異なる権限設定です。 デバイスの設定は、ポータル上でIPアドレスなどの情報を参照可能かどうかと、再起動や停止などのアクションを行えるかどうかの設定です。

 

次の画面は、デバイスごとの権限設定を行うものです。 設定は、ポータルの「Account」->「Users」->「Device Access」から行い、対象のサーバーにチェックを入れます。

サブアカウントは、こちらの「Device Access」でサーバーに許可がなくても、VPNを許可した標準の状態（Autoのまま）では、すべてのサーバーに対するログインが可能になってしまいます。 意図しないアクセスを許可しないように、サブアカウント作成時は適切な設定を行っているかどうか、気をつけたいところです。
2.5 サーバーの脆弱性検査を実施するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
SoftLayerは、カスタマーポータルからインターネット側に公開しているサーバーのポートを検出し、セキュリティ上の脅威や修正ポイントなどの検査レポートを作成するサービスを提供しています。 ここでは、脆弱性検査の方法や内容などについてご紹介します。
 

SoftLayerの脆弱性検査とは
SoftLayerの脆弱性検査は、インターネット側に公開しているポートの危険性に関するレポートを作成してくれるだけです。 脆弱性検査レポートを通して、リスクの有無や緊急度を判断し、どのような回避策を取るかは、すべて運用者側に委ねられています。

例えば、家の窓に対して脆弱性検査を実行したとします。 脆弱性検査レポートは、次のような情報を提供してくれるかもしれません。
 

  窓がXX個開いていることが見つかりました
  泥棒が入る可能性があります
  蚊が入ってデング熱にかかる可能性があります
  雨が降ると床が水浸しになる可能性があります
  黄砂が入って来て部屋が汚れる可能性があります

さらに、脆弱性検査レポートは対応策に関する情報や製品などを紹介してくれるでしょう。 SoftLayerの脆弱性検査のサービス範囲はここまです。
 

脆弱性検査の方法
SoftLayerの脆弱性検査の方法は、とてもシンプルです。 メニューバーの「Security」->「Vulnerability Scans」を選択します。 そして、「Vulnerability Scans」の「Device Name」からサーバーを選択し、「Scan」をクリックします。 脆弱性調査の結果は、「Vulnerability Scans」の下段に追加されます。 次の図には、脆弱性調査の対象サーバーと進行状況が表示されています。 開始時のステータスは「Scan Processing」です。 検査が終了すると「Scan Complete」に変わります。 脆弱性検査の実行時間は、大よそ10分ぐらいです。 脆弱性検査の実行回数の制限はありません。 料金も無料です。 OSの種類は、Linux系とWindowsどちらも対応しています。


脆弱性検査の事例
ここでは、脆弱性検査の事例(Windows Server 2008 R2の場合）を通して、SoftLayerの脆弱性検査レポートの特徴や内容についてご説明します。 検査レポートを閲覧するためには、検査レポート一覧の「Status」から「Scan Complete」をクリックします。

ファイアウォールを停止している状態

まず、Windows ServerでWindows Firewallを稼働していない場合の結果です。

Scan Details
「Scan Details」は、脆弱性検査結果の総括であり、ホストの数、セキュリティ・ホールやワーニングの数を表示します。 言うまでもないですが、最も危険性が高いのはセキュリティ・ホールです。 もちろん、ワーニングも外部からの侵入の危険性を含む要注意の項目です。

Analysis of Host
「Analysis of Host」は、インターネット側に公開しているIP Address及びポート、重要な指摘で構成されています。 ここでは、「ms_wbt_server(MS WBT Server)」と「microsoft_ds（Microsoft Directory Service）」で「Warning」が発生しています。


Security Issues and Fixes
「Security Issues and Fixes」は、前項の「Analysis of Host」の各公開ポート毎の危険性に関する詳細な解説です。 上記の「Warning」のなかで一例を取り上げてみましょう。 次の図では、3389ポートのリモート・ターミナル・サービスの暗号化方式が弱いと指摘し、その危険性の説明と共に、もっと強くすべきであるとアドバイスしています。 さらに、リンクの箇所から、より幅広い情報を得ることができます。


ファイアウォールを稼働している状態

次は、Winddows ServerのMicrosoft Windows Firewallを稼働している場合の結果です。 ファイアウォールの設定内容はデフォルトの状態です。

Scan Details
「Warning」が1つ減って5つとなりました。

Analysis of Host
「microsoft_ds(Microsoft Directory Service)」の「Warning」が消えています。 どうやら、Windows Firewallのデフォルト値で問題が解決されたようです。

ただ、依然として「Warning」が5つも残っています。 他にも注意を促す箇所が大幅に減っています。 特に、Windows Server の Port 3389 は攻撃を受けやすいポートなので、対策は必須です。

このようにSoftLayerの脆弱性検査は、セキュリティ強化のための有効な手段として利用して頂くことができます。


便利機能：脆弱性検査レポートのフィルター
検査レポートの数が非常に多くなった場合はどうすればいいでしょうか。 脆弱性検査レポートはフィルター機能が備わっています。 「Filter」をクリックし、表示する対象を絞り込むことが可能です。
2.4 ネットワーク・ファイアウォールで保護するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
VLAN単位で保護できるネットワーク・ファイアウォールの注文方法と、管理画面へのログイン方法、ルールの設定方法をご説明します。 ファイアウォールは、Hardware Firewall(Dedicated)、FortiGate Security Applianceを選ぶことができ、ここでは、より高機能な後者についてご紹介します。
 

ネットワーク・ファイアウォールを注文するには
ネットワーク・ファイアウォールの設定はVLANごとに行うので、カスタマーポータルのVLANs一覧から注文することができます。 メニューの「Network」->「IP Management」-> 「VLANs」をクリックします。 VLANs一覧画面で追加したいVLAN Numberの行の「Add Firewall」をクリックすると、次のファイアウォールの選択画面が表示されます。 「FortiGate Security Appliance」を選択し、「Continue」をクリックします。

次の画面に注文の詳細な情報が表示されます。 ネットワーク・ファイアウォールは月単位の注文費用が発生するのでご注意願います。 内容を確認した後に、チェックを入れて、「Place Order」をクリックして注文を確定します。

注文が完了して、1時間後には使用することができます。 先ほどのカスタマーポータルのVLANs画面を開くと、追加したVLAN Numberの「Gateway/Firewall」欄が「Add Firewall」から「firewall-vlan1377.networklayer.com」へ変わります。


FortiGateの管理画面へログインするには？
FortiGateにはルールを設定するための管理画面があり、そこへのログイン情報はカスタマーポータルで確認します。 先ほど注文時に開いたVLANs画面に移動し、対象VLANのファイアウォール名、今回の例では「firewall-vlan1377.networklayer.com」をクリックすると、次の画面のように詳細情報が表示されます。 赤枠の「Username」と「Password」の情報がファイアウォールへログインするときに必要な情報です。 パスワードを表示するには「Show Password」をチェックします。

管理画面にログインするには、右上の「Actions」->「Manage firewall」をクリックします。 そうしますと、次のようなログイン画面が表示されますので、「Name」の欄には先ほどポータルで確認した「Username」と、「Password」の欄にパスワードを入力し、「Login」をクリックします。


ログインに成功すると、次のようにFortiGateの管理画面が表示されます。 ログイン直後は、ファイアウォールの使用率やトラフィックなどを一覧できるダッシュボードが表示されています。 画面左のメニューを辿ると、ポリシーの変更や監視など、その他の管理用メニューを選ぶことができます。


ルールの設定例
FortiGateの初期設定は全ての通信が許可されていますので、以下では例として、HTTPS（TCP/443）のみ通信を許可する手順を紹介します。 ルールの設定を行うには、管理画面の左ウィンドウの「Policy」をクリックします。

初期状態のポリシー一覧が表示されています。 ポリシーの優先度は上から順に設定されます。 「v1377」はファイアウォールを注文時に選んだプライベート・ネットワークのVLAN番号で、「v420」はパブリック・ネットワークに接続しているVLAN番号で自動的に付与されるものです。

    「v1377-inside->v420-outside」… パブリック・ネットワークに対するルール設定です。
    「v420-outside->v1377-inside」… プライベート・ネットワークに対するルール設定です。
    「Implicit」… 明示していない通信は許可しないルールです。

それから、次の画面のようにルール一覧にある「Seq.#」の「3」へマウスポインタを合わせて右クリックし、表示されるメニューの「Edit」をクリックします。

次の画面は対象VLANのルールを設定する画面です。 初期状態では全てが許可されていますので、HTTPSのみ許可する設定に変更します。 「Service」の右の(+)をクリックし、サービス一覧から「HTTPS」を選択して「OK」をクリックします。

それから「Policy」の一覧画面にもどると、「HTTPS」に対するルールに変更されていることが確認できます。

ルールが正しく適用されているかどうかは、脆弱性検査を使って確認する方法がお勧めです。 今回のルールを設定後に脆弱性検査を行うと、ポート443番への接続のみが許可されていることが確認できます。 脆弱性検査についての詳細は2.5 サーバーの脆弱性検査を実施するには？を参照願してください。

FortiGateの利用方法の概要は以上になりますが、さらに詳細な技術的情報へのリンクは次の参考情報にあります。
 

参考情報
 FortiOS Handbook http://docs.fortinet.com/fortigate/admin-guides
 Fortinet ダウンロードセンター http://www.fortinet.co.jp/resource_center
 Fortinet REST API Solution Guide http://docs.fortinet.com/d/fortiauthenticator-rest-api-solution-guide
2.3 ハードウェア・ファイアウォールで保護するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
サーバー単位でルールを設定できるハードウェア・ファイアウォールの注文方法と、カスタマーポータル上でルールを指定してセキュリティを高める具体的な方法をご説明します。
 

ハードウェア・ファイアウォールを注文するには
カスタマーポータル上のサーバーの一覧画面から、サーバー単位で注文します。 カスタマーポータル上のメニューの「Devices」->「Device List」から、注文したいサーバー名をクリックします。 次の画面にあるように、「Device Details」の右下に「Order Hardware Firewall」のリンクをクリックすると、注文画面が表示されます。


次の画面は表示された注文画面です。 この画面に表示されている速度は、サーバーのパブリック・ネットワーク側のインターフェースのリンク速度です。 これに応じて月単位のファイアウォールの利用料金が必要になりますので、ご注意願います。 支払方法を選択し「Continue」をクリックして、注文をすすめます。


注文確認画面が表示されます。 確認後に、チェックを入れて、「Place Order」をクリックして注文を確定します。 これでハードウェア・ファイアウォールの注文は完了です。

注文手続きが終わると、ただちにハードウェア・ファイアウォールが利用できます。 先ほどの「Device Details」に「Firewall」のタブが追加されており、ここをクリックすると、ファイアウォールのルールを設定できる画面に移ります。


ファイアウォールのルールを設定するには
ルールを設定する場合の例として、LAMPインストールのサーバーを注文したときのルールを考えてみましょう。 この場合、デフォルトで公開されてしまうHTTP(TCP/80)、HTTPS(TCP/443)、SSH(TCP/22)のうち、HTTPSの通信に限定して外部に公開するルールを追加します。

次の画面はルールの変更画面で、サーバーの「Device Details」の「Firewall」タブをクリックして開きます。 注文した直後のステータスは「Bypassing All Rules」とあり、全ての通信を許可する設定になっています。



次にポート443番の接続を許可するルールを新規に追加し、ルールを更新します。

「IPv4 Rules」一覧右の (+) をクリックすると、新しいルールの追加フォームが表示されます。 次のように入力をお願いします。

「Action」：拒否が「Deny」、許可が「Permit」です。 ここでは「Permit」を選択します。
「Port Range」：対象のポート番号を入力します。 ここでは「443-443」を入力します。
「Protocol」：プロトコルを選択します。 ここでは「TCP」を入力します。
「Source」：「0.0.0.0」にして「CIDR」は「0」を入力します。
「Destination」：サーバーのPublic IPを入力します。 同じ画面の左上に表示されています。 「CIDR」は「32」を指定します。

 

今回の設定はIPv4ですが、IPv6に対しても同様にルールを追加することができます。

ルールは上から順番に適用されます。 先ほど追加した「443-443」の「Permit」によって通信ができます。 それ以外は、初期状態からある「1-65535」の「Deny」により、通信が遮断されます。

右下の「Update Rules」をクリックして更新します。 ルールが正当ではない場合は、ボタンをクリックできません。 例えば「CIDR」を入力する際に数字以外を入力した場合に更新ができません。

画面を更新すると、左上のファイアウォールの「Status」が「Processing All Rules」になり、ルールが適用されています。 これで、ポート443番への接続のみに限定するルールが適用されました。



脆弱性検査で確認すると、ポート443番への接続のみが許可されていることが確認できます。 脆弱性検査の詳細は2.5 サーバーの脆弱性検査を実施するには？を参照してください。

以上のように簡単なカスタマーポータルからの操作で、ファイアウォールのルールを設定することができました。
2.1 ファイアウォールを導入するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
SoftLayerで利用できるものには、OSファイアウォール、ハードウェア・ファイアウォール、ネットワーク・ファイアウォールがあり、これらを利用して物理サーバー、仮想サーバーを保護することができます。 ここではこの3種類のファイアウォールの概要をご説明します。 さらに、仮想ルーターOSであるVyattaを利用できるため、このファイアウォール機能についても触れていきます。
 

利用できるファイアウォールの種類
SoftLayerでは、3種類 (OSファイアウォール、ハードウェア・ファイアウォール、ネットワーク・ファイアウォール) のファイアウォールを利用することができます。 次の図は、この3種の違いを概念的に表したもので、最初に、これらの違いをご説明します。

・OSファイアウォール
上の図のように、仮想サーバーや物理サーバーのWindowsやLinuxのOS上で実行されるもので、料金も発生しません。 OSの種類ごとに異なるツールの設定方法を知っていれば、もっともコストをかけずにサーバーを保護することができます。 この具体的な構成方法は、2.2 OSファイアウォールの設定方法は？を参照してください。

・ ハードウェア・ファイアウォール
これは上の図の点線で囲まれた部分のファイアウォールをあらわしています。 仮想サーバーや物理サーバーの単位で注文し設定するもので、料金は月額でサーバ単位に発生します。 これは、カスタマーポータルのサーバー管理画面からルールを設定できるため、OS毎の設定方法を知らなくても使えるツールです。 前述のLinux上で動作するファイアウォールは、Linuxのエディタで、ルールの設定ファイルを編集する必要があり、さらに、APFやiptablesのコマンドの理解など、技術的スキルが要求されます。 この具体的な構成方法は、2.3 ハードウェア・ファイアウォールをポータルで保護するには？を参照してください。

・ ネットワーク・ファイアウォール
これは上の図のネットワーク・ファイアウォール(正式名：Hardware Firewall (Dedicated) 和訳；専有型ハードウェア・ファイアウォール)です。 これは、VLANをまるごと保護するように導入できます。 ここでは簡単に区別できるようにするため、ネットワーク・ファイアウォールと呼びます。 これの利点は、ネットワーク上のサーバーを一括で保護できる点です。 前述のハードウェア・ファイアウォールでは、サーバー単位に料金が発生し、サーバー単位で、ルールを設定することになります。 このため、サーバー数が増えると、ルールがサーバー単位に散在して分かりにくくなり、料金も高くなっていきます。 サーバー数が増えると、このファイアウォールがお勧めです。

このネットワーク・ファイアウォールは、次の注文画面 Hardware Firewall(Dedicated) のように、FortiGate Security Applicance, Hardware Firewall (Dedicated) の2種類があります。 さらに、高可用性(High Avaliability)の選択肢も用意されています。 これは、ハードウェアを2重化することによって、ハードウェア障害によるサービス停止を軽減するものです。 FortiGate Security Applicanceは、最近追加された高性能なファイアウォールで、今後の主流になると考えれられるため、本章では、こちらにフォーカスしてご紹介していきます。 この具体的な構成方法は、2.4 ネットワーク・ファイアウォールで保護するには？を参照してください。


Vyattaをファイアウォールとして応用する方法
さらに、仮想サーバー、または、物理サーバー上で、仮想ルーターOSのVyattaを使うこともできます。 VyattaはOSSでありながら、商用ルーターOSなみの多くの機能があり、多くのユーザーがいます。

次の図のように、Vyattaの機能を利用して、プライベート・ネットワーク内のサーバーに対するファイアウォールとして構成できます。 この構成では、パブリック・アドレスとプライベート・アドレスに変換するNATの機能と、特定のプロトコルだけの通過を許すファイアウォールの機能を利用します。

Vyattaを利用するには、サーバー注文時のOS選択で「Vyatta」を選びます。 仮想サーバーでは、OSの追加料金は発生せず、仮想サーバー1台分の料金だけで利用できます。 時間単位でも利用できるので、短期間で利用するときは使いやすいファイアウォールです。 ルール設定には、サーバー起動後にsshでログインします。 ルール設定などの具体的な方法はVyattaユーザー会( http://www.vyatta-users.jp )の記事などインターネット上に豊富にありますので、ご興味のある方は、ぜひ挑戦してみてはいかがでしょうか。
2. セキュリティ対策編

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

2.1 ファイアウォールを導入するには？
2.2 OSファイアウォールの設定方法は？
2.3 ハードウェア・ファイアウォールで保護するには？
2.4 ネットワーク・ファイアウォールで保護するには？
2.5 サーバーの脆弱性検査を実施するには？
2.6 Windowsサーバーのセキュリティを強化するには？
2.7 VPN接続でプライベートIPにアクセスするには？
2.8 VPN接続のアクセス先を制限するには？
1.7 チケット(サポート窓口)へ問い合わせするには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
SoftLayerには、チケット(Ticket)と呼ばれるサポート窓口があります。 このチケットは、24時間365日の運用されており、障害や調査の問い合わせ、カスタマーポータルの操作方法の問い合わせ、対応依頼の受付など、SoftLayerを利用するうえで、不可欠なものです。 このチケットの利用法についてご紹介します。
 

チケットへの問い合わせ方法
チケットには、世界各国からのユーザーから問い合わせが入ってきます。そのため英語だけの対応になっています。 日本人にとって英語で問い合わせすることは、敷居が高いのですが、一度、要領が分かってしまうと難しくないものです。 具体的な事例で、チケットとの対話を見ていきましょう。

カスタマーポータル https://control.softlayer.com/ -> 「Support」 -> 「Add Ticket」 の順に進むと次のチケットへ問い合わせるための、入力フォームが表示されます。 最小限の入力項目で問い合わせるには、次の項目をインプットして、「Add Ticket」をクリックします。
 

 「Subject:」: 選択リストに適当なものがなければ、「Other Administative」
 「Assign To:」: デフォルトで自分のIDがセットされていますので、変更しません。
 「Title:」: 必須項目ではないのですが、リストで識別できるために簡単な単語をセットします。
 「Details:」：ここに、問い合わせ、依頼などを記載します。


 

Linuxの設定について質問
具体的な事例として、次の画面は「CentOSのiSCSIの設定を知りたいので、これについて記述されたURLを教えて欲しい」という質問をした例です。

およそ10分程度で回答が返ってきました。この画面は、下から上に向かって時間が経過しています。 以下のようにURLを教えてくれて、「あなたを手助ける用意がありますよ。」という親切なメッセージが添えられています。

 

サーバーの障害の問い合わせ
サーバーと通信ができなくなった場合の問い合わせの事例です。 本物の障害は、とても少ないので、事前にサーバーをシャットダウンして、模擬の障害状態を作っておき、問い合わせを行いました。
 

 「Subject:」: 「Other Administative」を選びます。
 「Assign To:」: デフォルトで自分のIDがセットされています。
 「Title:」: リストで識別できるために簡単な単語をセットします。
 「Associate Devices:」: 関係するサーバー名を指定します。ここを指定すると、次のパスワードの提供が求められます。
 「Please Provide Password:」:ここに、rootのパスワードをセットします。 または「Use password on file:」にチェックを入れて、ファイルを添付することもできます。
 「Details:」：ここに、できなくて困っていること、サポートしてほしいことを記載します。 それから、サーバーの名前を必ずインプットしておきます。 Associate Devices だけでは、障害となっているサーバーが特定できないためです。

これらを次のようにインプットして、「Add Ticket」をクリックして、問い合わせを送ります。

さて、どのように助けてくれるでしょうか？ チケットの問い合わせに回答があると、ユーザーID登録時に設定したメールアドレスに通知がきますので、メールが届くまで待ちます。

次のチケットとのやり取りの意訳は、以下のとおりです。 中学校で習った英語でも十分対応できることが、おわかり頂けたと思います。
ユーザー：「サーバーにアクセスできません。pingの応答なし、sshのプロンプトなし。通信を回復する手助けをお願いします。」
チケット：「サーバーのコンソールにログインできませんでした。回復のために再起動してもいいでしょうか？」
ユーザー：「はい、どうぞ」
チケット：「再起動が完了しました。サーバーは、pingとsshに、一回以上の応答を返しています。
ユーザー：「どうもありがとうございました」

 

カスタマーポータルサイトで発生したエラーの問い合わせ
稀にカスタマーポータルでエラーが発生して、先に進めないことがあります。 この場合は、画面コピーを添付することが、おすすめです。

この例は、2014年7月にロンドンのデータセンターがオープンした時に実際に発生した障害の例です。 ローカル・ロードバランサーを注文するために、「Place Order」をクリックした際に、次のエラーが発生して、注文ができない状態でした。

チケットへ状況証拠を提示するために、画面コピーを添付して、エラーが発生したタイミングを記述して、対応を依頼します。こちらは、上から下へ時間の経過 するように並べ替えてあります。 赤字がユーザー、青字がチケットの意訳になっています。 一番最初に添付ファイルが付いていることが、画面コピーからわかると思います。

次に、チケットからの依頼に答えて、注文したいローカル・ロードバランサーの選択画面を添付しました。 その後、問題解決の進捗が報告され、解決に至りました。


問題が解決するまでの時間は、それぞれ問題の深さや深刻さが異なるため、様々で一律同じではありません。しかし、チケットの担当者たちは、24時間、親切丁寧に対応にあたってくれますので、強力な心強い味方になってくれます。
1.6.5 iSCSIストレージ

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

iSCSIストレージ（Legacy iSCSI）
iSCSIストレージ（Legacy iSCSI）は2015年7月にてサービス提供が終了しています。
外部ストレージの用途には、パフォーマンス・ストレージやエンデュランス・ストレージの活用をおすすめします。

【1.6.6 パフォーマンス・ストレージを利用するには？】
【1.6.7 エンデュランス・ストレージを利用するには？】
Rails + heroku App でpage speed insightをあげる


##レンダリングを妨げるリソースの除外
全部のjavascriptにレンダリングしてるところに`defer: true`をつけた
3秒から0.45秒に

```
<%= javascript_pack_tag 'faq', defer: true %>
```
## オフスクリーン画像の遅延読み込み
遅延読み込みという技術は、Webサイトに表示される画像を一度に読み込まず、必要に応じて必要な分だけ読み込むというものです。不必要な画像の読み込みを後回しにして、画像以外のCSSやJSファイルの読み込みが先に行われます。そうすることで、表示速度を速くすることができます。
6秒消えた
```
yarn add v-lazy-image
```

```
  <v-lazy-image :src="item.image_url" />


  import VLazyImage from "v-lazy-image"
  export default {
    components: {
      VLazyImage
    }
  }
```


## テキスト圧縮の有効化
https://qiita.com/Oakbow/items/ec13c3a57327cc5f3197

```
gem 'heroku-deflater'
bundle install
```

## 静的なアセットと効率的なキャッシュポリシーの配信
https://catnose99.com/rails-heroku-fastly/
1.6.4 Windows用NASの利用方法は？

概要
Windowsから簡単にアクセスできる NAS (Network Attached Storage) を利用することができます。本章ではNASの利用法をご紹介します。
 

NASの概要
このストレージは、Windwos OS から利用でき、SoftLayerのプライベート・アドレスに向けてサービスが提供されています。このためインターネットからネットワーク・ドライブとして利用することはできません。


NASのオーダー方法
カスタマーポータルから「Storage」->「File Storage」->「Order File Storage」を選択すると次の画面が表示されます。「Select Storage Type」に「NAS/FTP」を選択し、必要項目をセットして「Continue」をクリックして次の画面へ進みます。 次の確認ウィンドで修正点が見つけられなければ「Place Order」をクリックしてオーダーを確定します。

ユーザー名は「LUN Name」欄で、リスト先頭の三角マークを展開してパスワードを参照できます。これでNASにアクセスできる様になりました。


 

Windows OSからのアクセス方法
Windwosのエクスプローラーのアドレスに、ファイル・ストレージ画面の「Hostname」のDNSホスト名をセットします。この例では、「nastok0201.service.softlayer.com」でNASサーバーを指定します。次のようにユーザー名とパスワードを要求してきますので、同画面の「LUN Name」をユーザー名、および、リスト先頭の三角マークを展開して表示されるパスワードをインプットします。これでNASにアクセスできるようになります。


LinuxからFTPサーバーとしてアクセス方法
このNASは、FTPサーバーとして利用することができます。前述のホスト名、LUN Name、パスワードを利用してログインすることができます。
 
```
# ftp nastok0201.service.softlayer.com
Connected to nastok0201.service.softlayer.com.
220 NAS FTP Service
Name (nastok0201.service.softlayer.com:root): SLN294470-1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxr--r--    1 210677   513          1155 Mar 29 10:09 README.txt
226 Directory send OK.
ftp> 
```

パブリックネットワークからDNS名のホスト名にアクセスした場合、プライベートアドレスが返され、アクセスすることができません。
 

imac:~ maho$ ftp nastok0201.service.softlayer.com
Trying 10.3.66.220...

このNASのサービスは、カスタマーポータルの表示だけを頼りしても問題なく使えると思います。
1.6.3 物理サーバーのストレージの選択には？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
物理サーバーでは、内蔵のディスク・ドライブとして、SATA、SAS、SSDから選択することができます。本章ではディスクの種類や特性についてご紹介します。
 

ストレージ活用の考慮点
物理サーバー(ベアメタル）は、SATA, SAS, SSD から選んで搭載することできます。 内蔵できるドライブ数は、サーバーのシャーシのサイズによって決まり、もしもドライブ・ベイの空きがなくなったら、拡張ユニットを接続してドライブ・ベイを増設できないので、新たにドライブ・ベイ数の多いシャーシのサーバーへ乗り換えが必要になります。現在もっとも大きなシャーシで36ドライブを収容できます。

RAID5を構成したい場合は、RAIDコントローラーを追加して対応ができます。また、SoftLayerのRAID Controllerはホットスワップに対応しており、ディスクドライブの故障の際もシャットダウンすることなく交換することが可能になっています。

しかし、ディスク故障の際のSoftLayerの標準の対応としては一旦サーバーをシャットダウンさせるオペレーションになっていますので、ホットスワップを希望する場合はチケットで依頼する必要があります。

ユーザーが専有する物理サーバーは、共存ユーザーの影響や、仮想化のオーバヘッドがありませんから、物理サーバーへ移行したら、単純に性能が向上するとは限りません。 次のグラフでは、仮想サーバーのSANやLOCALストレージは、物理サーバーのSATAやSASよりも速いことが分かります。

SSDは高速なのですが、RAIDコントローラーと組み合わせて、RAID5を構成した場合、読取り速度は向上しますが、逆に書込みが遅くなります。この理由は、パリティ計算、アレイの書込み一貫性を保つためのウェイト、上書き出来ないSSDの特性に起因するなどが考えられます。平行に書き込めるSSDの数が増えることで、比例して書込みパフォーマンスが向上するものではない点に注意しなければなりません。

次のグラフでは、縦軸に容量単価、横軸にドライブ容量をプロットしています。 SATAは大容量化することが可能で価格も安いことから、アーカイブ用途などに適していることが分かります。また、高速なディスクアクセスが必要な場合、SSDが適していることがわかります。

ここに挙げたグラフは、筆者が独自に測定した一例であり、SoftLayerのサービス全体を代表しているものではありません。
1.6.1 仮想サーバーのストレージの選択には？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
仮想サーバーをオーダーする時に、ストレージは、LOCALとSANを選択できます。この違いについて解説します。
 

仮想サーバーのディスク
仮想サーバーでは、「LOCAL」ディスクと「SAN」ディスク選択できます。次の図で、これら2つの違いについて確認していきます。

SANディスク

「SAN」ディスクは、多数のディスク・ドライブでアレイを構成して、一つの大容量のストレージ・プールを形成します。このプールから容量を指定して割当てた論理ディスクとして提供するものです。 複数のディスク・ドライブでアレイを構成するため、I/Oが分散化され高速化が実現されます。また、パリティを利用してドライブ故障の影響を受けない可用性対策が取られています。

一つのストレージ・プールを複数のユーザーで共有することになるため、同じストレージ・プールの利用者が、高いI/O負荷を発生させた場合、他の利用者のアクセスが一時的に遅くなるなどの影響があります。

SANディスクの特徴として、第二ディスク以降のSANディスクは、仮想サーバーから取り外して、別の仮想サーバーへ取り付けることができます。また、ポータブル・ディスクとして、オーダーしておき、同じデータセンターの仮想サーバーへ取り付けることもできます。

LOCALディスク

「LOCAL」ディスクは、ホストとなる物理サーバーの内蔵ディスクをRAID10で構成し、ハイパーバイザーが仮想ディスクとして提供するものです。 物理サーバーのメモリがキャッシュとして高速化に寄与するため、SANよりも安価で高速なディスクとして利用できます。

「LOCAL」ディスクの制約としては、仮想サーバー1台につき、2ドライブまで、最大容量300GBとなります。
 

LOCALとSANの比較
次の図で、LOCALディスクとSANディスクの性能測定の例をご紹介します。しかし、この結果は、ある時点の一つの実測例であって、SoftLayer全体の性能を代表するものではないので、ご注意をお願いします。 左のグラフから、ランダム読取りが、ランダム書込みより非常に早い傾向にあることが判ります。そして、LOCALディスクとSANディスクでは、LOCALディスクの性能が良いことが分ります。

上の右のグラフは、容量単価を表した図ですが、SANディスクの棒グラフの(注)とあるのでは、SANディスクは500GB以上の容量で比較しているためです。 容量単価ですから、低い方がギガバイト安く好ましいことになります。 比較では、LOCALディスクがSANディスクより安い結果となっています。 料金は改定がありますから、こちらの一例として、見なしてください。

次のグラフは、縦軸に容量単価、横軸にストレージ容量としています。 これによりディスク・サイズ別の容量単価を知ることができます。 SANディスクは、少ない容量では割高な料金になっており、小さい容量を使うのであれば、LOCALディスクがお得になることが分ります。
1.6 ストレージの種類と選択

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
SoftLayerのストレージについて、独自の分類に従って、それぞれのストレージの章を整理しました。
 

仮想サーバーや物理サーバーのそれぞれの専用ストレージ
仮想サーバーでは、SANとLOCALのストレージから選択できます。詳細はそれぞれの章にあります。

    1.6.1 仮想サーバーのストレージの選択には？
    1.6.2 ポータブル・ストレージを接続するには？

物理サーバーでは、ディスクのドライブとしてSATA, SAS, SSDから選択できます。詳細はそれぞれの章にあります。

    1.6.3 物理サーバーのストレージの選択には？
 

ネットワークで利用可能なストレージ
ファイルサーバー、ブロック・ストレージ、オブジェクト・ストレージ、ソフトウェア定義ストレージの分類で以下にリストします。
ファイルサーバー

    1.6.4 Windows用NASの利用方法は？
    1.6.8 エンデュランス・ファイルサーバーを利用するには？

ブロック・ストレージ

    1.6.6 パフォーマンス・ストレージを利用するには？
    1.6.7 エンデュランス・ストレージを利用するには？
    1.6.9 エンデュランス・ストレージのレプリカの利用

オブジェクト・ストレージ

    5.8 Windowsのネットワーク・ドライブにするには？
    5.9 Linuxでオブジェクト・ストレージをマウントするには？

ソフトウェア定義ストレージ

    1.3.3 専用ストレージ装置として使うには？
1.5.6 データのバックアップを取得するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
データのバックアップに利用できるストレージには次のものがあります。これらを利用したバックアップについてご紹介します。
 

   SAN
   Endurance Storage
   Performance Storage
   NAS
   Object Storage
   EVault
 

SANディスク
仮想サーバーのSANディスクは、第一ディスクはOSのブートディスクとして、第二ディスク以降は、脱着可能なポータブル・ストレージとして利用することができます。このSANディスクは、大容量で使うほど安価なので、バックアップ用途に適しています。

次の図では仮想サーバーに、SANディスクをアタッチして、データ領域をコピーした後、デタッチする方法です。 この方法は簡単に実現できますが、課題は、アタッチとデタッチの際に、OSの再起動が入る点です。


Endurance Storage / Performance Storage
Endurance Storage / Performance Storage は、カスタマーポータルから「Storage」 -> 「Block Storage」 -> 「Order Order Block Storage」から注文できるストレージです。次の図のように、Endurance Storage は、仮想サーバーのSANディスクや物理サーバーのディスクから独立したストレージですから、バックアップ用途に利用できます。 Endurance Storage / Performance Storage は、アタッチ／デタッチの際に、OS再起動が発生しませんから自動化も容易です。

考慮点としては、仮想サーバーや物理サーバーのネットワークのリンク速度がデフォルトの100Mbpsの場合、この通信速度がボトルネックになりますから、1Gbpsまたは10Gbpsにアップグレードが必要です。

遠隔地へのバックアップに、まったく手間をかけたくない場合、次の図の方法がお勧めです。 Endurance Storage は、他のデータセンターへレプリケーションを取得することができます。 この場合、Endurance Storage 間で自律してレプリケーションが実施されるので、サーバー側に追加の設定は必要ありません。



 

NAS
このNASは、CIFSを実装したWindowsファイル共有のサービスです。 注文方法は、カスタマーポータルから「Storage」 -> 「File Storage」 -> 「Order File Storage」から実施できます。 このNASは、次の図のように、SoftLayerのプライベート・ネットワークを通じて、他のデータセンターのNASを利用できます。 このNASについて、SoftLayer社の説明によれば、データのバックアップ用であり、I/O性能は高くないとされています。

 

オブジェクト・ストレージ
ここまでご紹介したストレージとは構造が異なる特徴を持っています。 このストレージは、ブロック・デバイスとしてOSからマウントできず、HTTPを利用してPUT,GETでオブジェクト単位に読み書きするものです。 このオブジェクトとは、音源、画像、動画、プログラムなどのファイル以外のデータを含むことを意味しています。 これはブロック・ストレージの様に、固定容量の区画上に、ファイルシステムを作る必要がありません。 このため容量見積もりが難しい、大量データのバックアップやログファイルの保管や適しています。 そして、他のストレージと同様に、他データセンターオブジェクト・ストレージを利用することができます。

次の図のように、オブジェクト・ストレージをLinuxサーバーから利用する場合、マウントすればバックアップの処理が非常に便利になります。 これを実現するソフトウェアがCloudfuseというOSSで、GitHubより入手して利用できます。

このオブジェクト・ストレージで誤解されやすいポイントについて解説します。 オブジェクト・ストレージはクラスタ構成されていますが、複数のデータセンター間で構成されるものではなく、一つのデータセンター内で、クラスタが構成されています。 この構成は、次の図ようなもので、クライアントからのHTTPリクエストを中継するプロキシーサーバー、および、複数のストレージ・ノードからなります。 この複数のストレージ・ノード間で、データのレプリケーションが実施され、保存されたデータは相互に一貫性チェックが実施されます。 書き込み時は、プロキシーで分散され複数のストレージ・ノードに同じデータに書き込まれ、読み取り時は、分散してストレージ・ノードから取り込まれます。 このストレージ・ノードのディスクはSATAが使用され、安価に構成されています。

これらオブジェクト・ストレージのアーキテクチャから、保存した容量とダウンロードした容量に応じた従量制の料金になっています。 オブジェクト・ストレージを注文するには、「Storage」 -> 「Object Storage」 -> 「Order Object Storage」から実施できます。


EVault
これは、「Storage」 -> 「Backup」 -> 「Order EVault」から注文できます。 このEVaultは、データバックアップとアーカイブのサービスで、対象となるWindowsサーバーやLinuxサーバーに対してエージェントをインストールします。そして、EVaultのウェブ管理画面から、対象となるディレクトリやファイル、取得する日時などのスケジュール、保存世代、有効期限などを設定して、自動実行するものです。

バックアップ処理では、最初の一回目は全量のバックアップを取得し、2回目以降は変更点だけを取得します。 そして、世代数を超過したものは、自動削除してくれます。 そして、リストア操作も、ウェブ管理画面を参照しながら実施できるため、ピンポイントに絞った高速なリストアが実施できます。

このような機能から、大量のプログラムのソースコードや、さまざまなデータファイルを利用する開発作業のバックアップとして、たいへん役立つものと考えられます。

このEvaultも他と同様に、他データセンターを利用でき、データセンター間のプライベート・ネットワークの通信料が無料ですから、安価に災害対策を実施できます。


データのバックアップを所得するためのストレージ活用方法の説明は、以上です。
1.5.4 物理サーバーのシステム・リストア方法は？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
<注意> フレックス・イメージのサービスは、2017年8月7日にサービス提供終了となりました。


物理サーバーのシステム・バックアップであるフレックス・イメージをリストアするには、二つの方法があります。ひとつは、元の物理サーバーへ戻す方法です。もう一つは、新たに物理サーバーを作成して戻す方法です。この二つの方法について、ご紹介します。
 

元の物理サーバーへリストアする方法
仮想サーバーのシステム・リストアと同じ流れでリストアすることができます。メニューを次のように進み「Load from Image」の画面を表示します。
「Devices」->「Device List」->「Device Name」-> 「Action」-> 「Load from Image」

この表中の「Image Type」が「Flex Image」でなければ、物理サーバーへリストアできないので確認します。該当の「Image Name」にチェックして、「Load Selected Image」をクリックします。
これより先は、「1.5.2 仮想サーバーのシステム・リストア方法は？」と同じですから省略します。
 

新規に物理サーバー注文してリストアする方法
こちらも仮想サーバーと同じ流れになります。 「Action」の中で「Order Bare Metal Server」を選択する違いだけです。

カスタマーポータルから次のように進みます。
「Devices」->「Manage」->「Images」-> 「Action」-> 「Order Bare Metal Server」


ここで、「Order Hourly Virtual Server」や「Order Monthly Virtual Server」を選択して、仮想サーバーへリストアもできます。
これより先は、 1.3 物理サーバーを起動するには？ と同じですから省略します。
 

注意点
同じサーバーにリストアであっても、新規サーバーにリストアでも、どちらの場合も「root」や「Administrator」のパスワードが変更されます。
また、いくつかのネットワーク周りの設定は、Image取得時の情報がそのままリストアされるのではなく、リストアのタイミングで新たに設定されます。例えば、IPエイリアスを/etc/sysconfig/network-scripts以下のファイルに記述して設定している場合、設定がクリアされることがありますので、リストア後に確認・再設定するようにしてください。

物理サーバーのシステム・リストアの方法は以上です。
1.5.3 物理サーバーのシステム・バックアップを取得するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
<注意> フレックス・イメージのサービスは、2017年8月7日にサービス提供終了となりました。


物理サーバーのシステム・バックアップの取得するには、フレックス・イメージの機能を利用できます。この機能を使ってシステム・バックアップを取得する方法を紹介します。 ここでは、フレックス・イメージの機能をシステム・バックアップという日本のユーザーに親しみやすい名称に呼び変えて、ご説明しますが、正確には、これはサーバーを複製するための機能であるため、イメージをリストアする際に、イメージ作成時の情報がそのまま復元されるのではなく、例えばOSの管理者ユーザーのパスワードやネットワーク周りの情報は新規に設定されます。フレックス・イメージの機能をシステム・バックアップとして使う際は、こうした特性を理解しておくことが重要です。。
 

フレックス・イメージを使ったシステム・バックアップの取得
次の順でメニューをたどり「Create Flex Image for」画面で、イメージ名とメモ事項をインプットして、再起動することの確認のチェックを入れ、「Create Template」をクリックします。
「Devices」 -> 「Device List」 -> 取得したいサーバーの行「Action」 -> 「Create FlexImage」


フレックス・イメージの確認
「Devices」 -> 「Manage」 -> 「Images」 に進むことで、次の画面が表示されます。「Type」の列で、「Standard」と表示されているものは、仮想サーバーで取得した「Template Image」を指しています。そして、フレックス・イメージは「Flex Image」として表示されます。


注意点
このフレックス・イメージは、CentOS、Red Hat Enterprise Linux、Windows系OSに限られています。(2016年11月 現在)


物理サーバーのシステム・バックアップ取得のご紹介は以上です。
1.5.2 仮想サーバーのシステム・リストア方法は？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
取得したシステム・バックアップであるイメージ・テンプレートをリストアするには、二つの方法があります。 ひとつは、元の仮想サーバーへ戻す方法です。 もう一つは、新たに仮想サーバーを作成して戻す方法です。 これら二つの方法について、ご紹介します。
 

元の仮想サーバーへ戻す方法
この方法では、仮想サーバーのパブリックとプライベートのIPアドレス、CPUコア数、メモリ搭載量、ディスク構成など、すべて維持されます。

次の順にメニューをたどり、「Load from Image」を表示します。
「Devices」->「Device List」-> 「サーバー名」->「Action」->「Load form Image」

次のように、イメージのリストが表示されるので、該当するイメージを選択して、「Load Selected Image」をクリックします。

確認画面が表示されるので、「Next」をクリックして次へ進みます。


もう一度、確認があります。 リストア先のディスクは初期化され、保存データは失われるので警告です。「Confirm OS Reload」をクリックします。

ただちに、シャットダウンが始まり、リストアが始まります。

処理開始の応答は、この「OK」のクリックに関係なく開始されます。


新たに仮想サーバーを作成して戻す方法
こちらの方法は、仮想サーバーを注文する時と、システム・バックアップであるイメージ・テンプレートを選択する以外は、ほとんど同じ手順になります。

前章で、サンノゼからシンガポールへ、システム・バックアップをコピーしたので、これを利用します。言い換えると、このシンガポールに、サンノゼと同じサーバーを作ることになります。

「Devices」->「Manage」-> 「Images」-> 該当行の「Action」->「Create Hourly Image」を選択します。

次に、仮想サーバーを注文する時と同じ画面が表示されます。 唯一の違いは、システム・バックアップとしてイメージ・テンプレートを作成した際に、インプットした名前が表示されている点です。新規に仮想サーバーを注文するのと同じ要領で進めて、注文を確定します。

 

注意点
同じサーバーにリストアであっても、新規サーバーにリストアでも、どちらの場合も「root」や「Administrator」のパスワードが変更されます。
また、いくつかのネットワーク周りの設定は、Image取得時の情報がそのままリストアされるのではなく、リストアのタイミングで新たに設定されます。例えば、IPエイリアスを/etc/sysconfig/network-scripts以下のファイルに記述して設定している場合、設定がクリアされることがありますので、リストア後に確認・再設定するようにしてください。

仮想サーバーのシステムのリストア方法は以上です。
1.5.1 仮想サーバーのシステム・バックアップを取るには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[こちら](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/)を参照してください。）

概要
仮想サーバーのOSの起動ディスクのバックアップであるシステム・バックアップには、イメージ・テンプレートの機能が適していますので、この利用方法を紹介していきます。 ここでは、イメージ・テンプレートの機能をシステム・バックアップという日本のユーザーに親しみやすい名称に呼び変えて、ご説明しますが、正確には、これはサーバーを複製するための機能であるため、イメージをリストアする際に、イメージ作成時の情報がそのまま復元されるのではなく、例えばOSの管理者ユーザーのパスワードやネットワーク周りの情報は新規に設定されます。イメージ・テンプレートの機能をシステム・バックアップとして使う際は、こうした特性を理解しておくことが重要です。
 

システム・バックアップの取得
メニューバーから次のようにクリックしてメニューをたどり、「Create Image Template」を表示します。
「Devices」 -> 「Device List」 -> 「サーバー名」-> 「Actions」 -> 「Create Image Template」

次のように、イメージ名や注釈のインプット、対象ディスクの選択、再起動することの確認にチェックして、「Create Template」をクリックします。

対象となるディスク容量、対象ディスク本数に応じて処理時間が長くなります。 この処理中は、システムを利用することはできません。 このため、システムとデータのバックアップは、それぞれ別に計画して、本機能はシステム・バックアップに絞って利用することが、おすすめです。
 

取得結果の確認
メニューバーから「Devices」 -> 「Manage」 -> 「Images」に進み、次の画面を表示します。 「Action」ボタンが表示されていればバックアップ完了状態です。

「Template Name」カラムのリンクをクリックすると次の画面が表示されます。 ここから、保存データのサイズが、21.64GBであることがわかります。 月末時点の保存サイズに応じた保管料金が発生するので、不要になったテンプレート・イメージは、早めに削除することをおすすめします。

次に、ロケーションのサンノゼにチェックが入っています。これは、バックアップがサンノゼのデータセンターに存在していることが分ります。



システム・バックアップのデータを遠隔地にコピー
サンノゼ・データセンターのシステム・バックアップをシンガポール・データセンターにコピーするには、シンガポールにチェックを入れて、「Update」をクリックするだけです。この時の国際通信の料金は無料です。
 

他ユーザーとシステム・バックアップを共有
「Share Image With Account Number」に、ユーザーIDをインプットして、「Share」ボタンをクリックすると、他のアカウントIDのユーザーとシステム・バックアップを共有することができます。
 

システム・バックアップの削除
不要になったシステム・バックアップは、次の操作で削除できます。 「Devices」 -> 「Manage」 -> 「Images」-> 削除したい行の「Actions」 -> 「Delete」


仮想サーバーのOSの起動ディスクのバックアップの取得方法のご紹介は以上です。