AndroidでRealmを使ってみた〜お気に入り機能の実装(其の二)〜

前回は登録はできました。 お気に入り機能は簡単に登録と削除ができなければいけないですね。 今度は削除機能を作ってみます!! (前回のものから少々変わっている部分があるかもしれないですが悪しからず。。。) まずは、表示したデータがお気に入りに登録されているか判定します。 今回は一意のidで管理しているので、 そのidがRealmに保存されているか確認します。 今回はRealmを利用する準備の部分は省略します。 (前回の記事を見てもらえればわかると思います。) やり方はidで検索して(それぞれのidはサーバー等から取得済み) query.size == 0 になった時は該当するデータがなく、elseになった時はお気に入りに登録されているということです!! では、お気に入りに登録されていて、お気に入りから削除する場合は このようにおこなってデータを削除します。 削除の場合はTramsaction内で処理をする必要があります!! だいぶ簡単ですね!! 登録がされていない場合は、前回の記事を参考に登録するという流れです!! 最後に realm.close()をするのをお忘れずに!! (僕は終了させるのを忘れてエラー続出でした(汗)) 今度はお気に入りをListViewで表示させてみます!!

AndroidでRealmを使ってみた〜お気に入り機能の実装(其の一)〜

今回はAndroidアプリでReamlを利用してデータの管理をしてみようと思います。 実装したい機能は「お気に入り機能」 SQLiteは触ったことあったけど、 NoSQLであるReamlを使うのには勉強時間がかかるのではないかと心配・・・ しかし、日本語のドキュメントがありとても親切↓ https://realm.io/jp/docs/java/latest/ 更に、GitHubで「Android Realm」と検索すれば結構簡単なコードがでてくるのでこれらを拝見しながら いざ、実装!! RealmはNoSQLなのでキーと値のペアでデータを格納していきます。 最初にキーとなるModelなるクラスを作ります。 こんな感じで作成します。 重要なのが です。 RealmのModelとして宣言して、あとはカプセル化してゲッター・セッターを書くだけ!! 続いては、データをRealmに格納する処理を書いていきましょう!! 格納はとても簡単にできました!! 次は格納したデータを取得して表示してみたいと思います!!

AndroidStudioのバージョンをあげたらファイルをcompileできなくなった

Androidアプリを開発しているのですが、 最近、AndroidStudioのバージョンを上げたらビルド時にエラーがでてしまい、 1日つぶしてしまいました。 なので、解決方法を記載します。 (バージョンは1.2から1.4へのアップデートです。) エラーは下記のようなものでした。 解決方法は実に簡単で、 build.gradleのdefaultConfig{}に の1文を加えるだけです。 こんなことで1日悩むなんて・・・
icon512@x1

GooglePlayでAndroidアプリのSEO対策をしてみた

1ヶ月程前に初めてのAndroidアプリをリリースしたはいいものの、 一向に閲覧数やインストール数が上がらないので、 とりあえずGooglePlayのSEOに取りかかろうと思いました。 今回は下記のサイトを参考にさせていただきました。 VOYAGE GROUP-androidブログ- 【基礎編】GooglePlayでのSEOについて とはいったものの、すぐにできることは限られているので やったことと言えば、アプリの説明文を変えたことぐらいです。。。 (アプリ名は僕の独断では変えられないので)

HTMLでマークアップ

ということで、アプリの説明文を次の方法で変えてみました。 GooglePlayだとHTMLでマークアップができるらしい。 文字サイズの変更や文字色の変更ができるので、 (ブラウザや反映されない機種も有るらしいが) 適当にいじってみた!! その時に参考にしたのが下記のサイトです。 Google Playストア上のHTMLタグについて 今回、作ったアプリが『パウダールームマップ』という女性向けのアプリ名ので、 かわいらしいデザインにしてみました!! 使ったタグは、 < h3>:見出し :各所のカラーリング :各所の太文字 これだけです。 まだまだ利用できないタグが多いので、今後に期待ですね!! なお、こちらのページでは先ほど言ったように色などが反映されていないので、 Android端末をお持ちの方は 「パウダールームマップ」と検索していただけると幸いです。 今後、できることとしたらAPKサイズの縮小でインストール時間を短くしたり、 タブレット対応にすることですかね。 ある程度ユーザーがついてきたら、レビューを促すように変えていきたいなと思います。 (道のりは長い・・・)

Go言語学習1日目 ~開発環境設定~

本日から少しずつGo言語の勉強をしてこうと思います!! 目標はGo言語とJavaでAndroidアプリを作ってリリースすることです!!

開発環境設定

まずは、開発環境設定ですね!! PCとGo言語のバージョンは以下の通り MacOSX 10.9.5 Go Version 1.5.1 とりあえず、vimでやっていく方法とgoclipseを使うやり方のどちらかにしようかと思ったので、 とりあえず、どっちも試してみたいと思います。 (現在、goclipseインストール中…) ということで、まずはvimを使っていこうと思うので、 パッケージをインストールします。 よしっ、簡単にインストールできた!! 早速、適当なところにディレクトリを作成して、 お決まりの「Hello World!」を表示させてみよう!! 拡張子は.goでファイルを作成します。 そして、コードを書きます。 よしっ!! で、コンパイル実行!! …… … あれっ??表示されない エラー?? 3行目がエラーなのでしょうか。 試しに ‘fmt’ → ”fmt” と変更。 そして、再度実行!! 出ました!! シングルクォーテーションではエラーになるみたい!! Go言語はルールが厳しいとは聞いていたが、予想以上!! こんな簡単な表示でも、やっぱり最初に書いたコードが出力されるのはうれしいですね!! goclipseは未だにインストール中なので、 goclipseの設定と利用はまた後日にします。

サーブレットとJSPの基本に立ち返ってみる

Webアプリケーションを作ってはみたのものも基礎がまだまだ足りないということで、 書籍で学習をしながら、作り終えたアプリの改修をしていこうと思います。 今回利用させていただいた書籍がこちらです。 基本的なところからとてもわかりやすく書いてあり、とても勉強になりました。

フィルタ

フィルタとは、複数のサーブレットで同じ処理を行う際に、 そのサーブレットクラスをリクエストした時などに実行されるものだそう。 先ほど、紹介した書籍にも書いてありましたが例を示します。 サーブレットを使うときは大抵JSPから値を取得してくるという処理が入ってきます。 といった具合ですね。 その時に、サーブレットに文字コードを設定していないと、文字化けを起こしてしまいます。 ですので、 このように、文字コードを設定してあげる必要があります。 それを必要なサーブレットに書いていくのは手間ですし、書き忘れてしまう可能性があります。 そこで、利用されるのがフィルタクラスです。 文字コードを全てのサーブレットに適用させるサンプルを書きます。 これで、わざわざ全てのサーブレットに文字コードを設定する一文を書かずに済みます。

アクションタグ

続いてはJSPのアクションタグについてです。 アクションタグとは、Javaのコードを呼び出せるタグです。 こちらも書籍に書かれていることなのですが、 Webアプリを作るときは、ヘッダーやフッターが必要になってくると思いますが、 それらをわざわざJSPの一つ一つのページに書かないで、 ヘッダー用のJSPとフッター用のJSPをそれぞれ一つ作ってそれをアクションタグを用いて、 他のJSPに埋め込むというものです。 WordPressをやっている方なら同じようなやり方をしているでしょうが、 僕たちが作ったWebアプリでは一つ一つ同じものをコピペしていました。 それではこれもサンプルを!! まずは、ヘッダーのJSPを作ります。 同じようにフッターのJSPも作成します。(割愛します) そしてそれらをそれぞれのJSPに埋め込みます。 このようにすることによって、それぞれのJPSのコード量の短縮にもなりますし、 ヘッダーやフッターを変更しなければ行けなくなった時に、簡単に変更ができます。 今回は以上とさせていただきます。 知らないことだらけなのでどんどん知識を蓄えていきたいと思います。
スクリーンショット 2015-11-19 23.51.26

Javaでページングの処理をしてみた ~JSP編~

本日は、JavaとJSPでコードをいろいろと書いていたので、 その中で、自分なりに苦戦したなという部分を自分なりに整理しながら書いていきます!! その苦戦した処理は 「ページング処理」 です。 ブログなどによく見られる 「次へ」ボタンや「前へ」ボタンがあって、 違う記事にページ遷移するやつですね。

完成予想図

pagingImg 実は、一度この処理はJavaとJSPで書いてはいたのですが、 Java、JSP共に酷く長くなって、わかりづらかったので、 改めて書き直してみることにしました。(今回も微妙ですが・・・) それでは、早速そのコードを!!

JSPコード

って書いてもだいぶごちゃごちゃしていてわかりづらいですね(汗 ボタンの機能としては、
  • 「次へ」ボタン
  • 「前へ」ボタン
  • 「数字」ボタン(ボタンを押すとそのページへ遷移)
3つです。 それらを分けて書くのに苦労して、コードもタグでたくさん分けてしまっています。 表示させるかどうかの処理はJava側でやるべきなのかと思ったり、 「次へ」や「前へ」ボタンの処理を切り離して考えた方がいいのかなと思ったりしてます。 とりあえず、こんな感じでも問題なく動いたので(サーブレットは次回に)、徐々に自分なりにコードの最適化をはかっていこうと思います!!
スクリーンショット 2015-11-18 0.14.11

ブラウザのデベロッパーツールを比較してみて

久しぶりに本日からブログ(メモ)を再開していきたいと思います。 復帰後一つ目の記事は何を書こうかと迷いましたが、 たまたま、本日はとあるセミナーに参加してきたので、 そこでの所感を綴っていきます!! 今回はこちらのセミナーに行ってきました!! HTML、CSS、JavaScriptを使っていると、 ブラウザのデベロッパーツールは必須だと思いますが、 Chrome、Firefox、IE、edgeのそれぞれのブラウザの機能の紹介でした。 各ブラウザの機能を聞いていると、 「こんな機能もあるのかと驚きの連続でした」 (僕が知らなすぎるだけです。。。) それでは、僕が感心した機能をそれぞれ紹介していきます!!

Chrome

Chromeで使いたいなと思ったのは、 モバイルデバイスのネットワークエミュレーションです。 スマホでブラウザを表示したときのパフォーマンスがチェックできて、 ページの読み込み方を実機を利用せずにおこなえるのは魅力的だなと思いました。

Firefox

おそらく僕自身は使うことはないと思うのですが、 Web Audio Editorというものがあり、 Web Audio APIを可視化して操作できるとのことです。 ある周波数帯域だけの音を消したり、 音をずらしてみたりと、 ブラウザでここまでできるのかと感心しました!!

IE/Edge

これらの2つはF12(WindowsのF12キーで表示)というデベロッパーツールがあるが、 IEとEdgeで機能が全く違うとのこと。 IEの方はIE固有の機能に対応させていて、 例えば、旧IEのバージョンの互換性のチェックが簡単にできるそう。 また、Edgeはまだリリースされて1年足らずということで 機能としては足りないところがあるが、 続々と新機能が追加されているそう。 もし、この機能が欲しいと思ったら、 機能のリクエストができるらしいです!! その機能が欲しいと同意が1万を越えたらすぐに対応してくれるそう(笑) と、それぞれの機能を見てきましたが、 結局どれを使えばいいのかは迷いますね。(MacユーザーなのでIEとEdgeは使えませんが) とりあえず、基本的な機能から使い慣れていこうと思います!!

【Interop 1日目】これからのIoT

こんにちは、エンジニアの宇佐美です。 久々の投稿となります! 今回のテーマは「IoT」でいきます!! そのIoTについて色々勉強すべく、 【Interop】 という最新技術の情報通信イベントに参加してきました!! そこで、感じたことをまとめていきます! 会場には数百社に分かれたブースがあるのですが、 そこで数多くの技術に触れ合うことができました。 まず、1つ目が「キーボードアプリ」です。 ここは、現在の事業に関わるのではないかと考えて伺いました。 どんなものであったのかと申しますと、 スマホにおいてキーボード入力をした際、 誤字があったことに後で気付いたら、 誤字を修正した後の単語を入力してスワイプすることで、 単語毎に検索をかけ、修正したい単語と入れ替えてくれるというものでした。 長文になればなるほどこの機能が役に立ってくるのではないかと思いました。 技術的に単語をどれだけ正確に判断できるのかが、 とても難しいところだと実感致しました。 次に2つ目として「IoTのクラウドサービス」です。 概要としては、 ウェアラブルやセンサー情報等の 生データをクラウド上にアップして、 そのデータを必要としている人が 情報提供者に対して、データに見合う対価を支払います。 それによってwin、winの関係を構築するというものでした。 そこで感じたところは次の通りです。
  • 開発会社はSDKなどの情報を公開して、 どんな人でもそのサービスと連携させることができる
  • どんな人でも情報提供者となることができ、 例えば、ビッグデータを持っている企業でも情報提供者となることができます
  • 即時性を重要視している為、 常に最新のデータが入手可能
  • 開発側ではストレージを利用せず、 個人情報は決して蓄積をしない
  • 情報提供の際、個人情報については 開示したくない場合は、数的データのみの提供は可能
といったところに感心致しました。 今後は、IoTという観点で クラウドサービスを利用していく機会はあると思うので、 そういった部分にも目を向けていきます!! 続いて、「Interop」には基調講演が逐一開催されており、 3つの講演に行ってきました。 まず、一つ目が「堀江貴文」の 「IoTの未来」についての講演でした。 そこで、学んだことは近い未来(5年前後)の内に 自動化の技術によって、 コンビニのレジ内の仕事がなくなったり、 物流においてピッキング作業や配送作業までもが 自動化されて、人間の力が必要なくなる世の中になる というものでした。 現状、なかなか考えられない光景ですが、 スマホの普及の仕方を考えれば 可能性は十分にあると感じてしまいました。 また、現在の仕事のあり方についても話していました。 現在の人間の仕事は 100年前の百姓から比べれば、 遊んでいるように見えるだろうとのこと。 そして未来の人間の仕事は 今の人間からすれば 遊んでいるように見えるはずだと。 つまり、人間はもっと遊んでいるような仕事をしなければならない。 もちろん、遊ぶわけではないが 今後は他から遊んでいるように見られる仕事をして、 世の中をより便利で快適なものにしていこうと思いました。 2つ目の講演は「IoTデバイスに組み込む全自動半導体チップ」の紹介でした。 そこでのお話は、 100年単位で世の中の概念は変わっていくとのこと。 そして、21世紀の新しい概念というのは、 「調整不要で決して止まることのない」 そんな技術である。 例えば、エアコンに関して言えば、 常にモニタリングをおこない分析をする。 その分析結果から導き出された結果から出力の量や仕方を変更する。 また、ミスというものが決しておこらない。 つまり、リモコンなんでものは必要なくなります。 そこで、開発されたのが「モノとモノが会話する半導体チップ」です。 そのチップを利用することで、 デバイスとして全自動化し、 組み込みの汎用性の高いものとなります。 3つ目に見た講演は「IT技術者の教育・育成」といったテーマであり、 4人の方のパネルディスカッション方式でした。 内容と致しましては、 IT人材における「3ない」である、 集まらない・見つからない・育たない がある。 「育たない」に関して モチベーション・体系・機会 を与えてやる必要がある。 それには、IT技術のみの蓄積だけでは足りず、 プランニング能力やビジョニング能力も必要。 その為にジョブローテーションもおこなうことも 重要なことである。 このように、 ブースで幅広い知識を見て回り、 講演でより深く理解することが出来ました!! 今回のInteropで 未来の可能性を再確認致しました。 今後は、新たな可能性を信じて、 今自分に出来ることをやっていきます!! 以上です。

備忘録 〜インフラ〜

こんにちは、うさです。 今回は「インフラ」について、 こちらの参考書をまとめていきます。

第1章 インフラエンジニアの仕事

インフラエンジニアの仕事は「インフラ設計」、「インフラ構築」、「インフラ運用」の3つのフェーズに分けられる 「インフラ設計」
  1. インフラを作る目的を理解する
  2. 目的を達成する為に必要な機能・性能などを要件としてまとめる
  3. 要件に合う企画書や設計書を作成する →どのくらいの費用で、どのくらいの期間で作れるかを算定
「インフラ構築」 インフラ構築作業は、機器の運搬・機器の組み立て・機器の取り付け・機器のインストールや設定・動作テスト・負荷テストに分けられる 「インフラ運用」 インフラ運用は下記のように区分できる
  • 障害対応:ハードウェアの故障の対応や急激なアクセス増への対策、不適切な権限設定によるアクセス出来ない状況の解消などがある
  • キャパシティ管理:構築したインフラの規模をアクセス数やデータ量に応じて適正化する
  • インフラ起因でない原因の切り分け:システムに障害が発生した場合、インフラ起因であるかプログラムおける問題かを切り分けて対応する

第2章 サーバ

サーバの選定

サーバスペックの決め方は3つの考え方がある
  • 実際の環境を試験的に構築し、測定結果から判断 →基幹系システムの中核の担うシステムや重要なシステムの場合
  • 仮決めしたサーバスペック機器を本番投入し、実際のハードウェアリソース利用状況を測定した上でサーバやサーバのパーツを増減していく →実際にリリースしてみないとアクセス量が判断できない場合
  • 消去法でスペックを絞り込んでいく →ある程度サービスの性質が特定されている場合
サーバスペックを決めた後は、ベンダーを選ぶ。 価格やサービスを総合的に判断する。 サーバのキャパシティを向上させるアプローチとして
  • スケールアウト:性能が足りなくなったらサーバの台数を増やす
  • スケールアップ:性能が足りなくなったらメモリの増設などでサーバの性能を増やす
の2つの方法がある。

CPU

CPU選定のポイント
  • パフォーマンス:求める演算能力を満たすか
  • 価格対比:求める処理能力、将来の拡張性から価格的に妥当か
  • 使うソフトウェアのライセンス体系:CPUのコア数やソケット数によって価格が変わるソフトウェアがある為、総コストを減らす為にCPUの種類や個数を調整
  • 消費電力:省電力CPUは動作周波数を落とすことで省電力を実現したCPU。単価は普通のCPUより上がるが、運用年数で計算する

メモリ

メモリの選定のポイント
  • 搭載容量
  • パフォーマンス:メモリコントローラが扱えるランク数制限ぎりぎりまで使い切り、マルチプロセッサ環境下でマルチチャンネルを実現するとパフォーマンスが向上
  • 拡張性:メモリスロットの数が限られるので、拡張が発生する場合は高価でも大容量メモリを選ぶ

RAID

RAIDのレベルは「0」〜「6」までの7種類が存在し、 RAID0と他のRAIDレベルを組み合わせたものも存在する。 よく使われるRAIDレベルと用途を見ていく
  • 「0」:耐故障性のないディスクアレイ(ストライピング) →ディスクI/O性能を上げたい場合に使う。耐障害性が弱い。ログ集計などの一時記憶領域などで使われる。
  • 「1」:二重化(ミラーリング) →耐障害性が強い。OSが入っているパーティションなどで使われる。
  • 「5」:ブロック単位でパリティ情報記録 →保存容量を多めに確保したい場合に使われる。ファイルサーバやログ保存等で使われる。
  • 「6」:ブロック単位で2種類のパリティ情報記録 →RAID5と用途は同じだが、耐障害性が強い。
  • 「10」:RAID1をストライピングしたもの →耐障害性とディスクI/O性能を満たす。データベースなどで使われる。
  • 「50」:RAID5をストライピングしたもの →保存容量確保とディスクI/O性能を満たす。ファイルサーバやログ保存などで使われる。
  • 「60」:RAID6をストライピングしたもの →RAID50と同様

仮想化

仮想サーバ・・・1台の物理サーバ上に複数のゲストOSを稼働させること 物理サーバと仮想サーバの特性
  • 物理サーバ:CPU使用率、ディスクI/O負荷・ディスク使用容量が大きい用途に向く。 →用途:データベースサーバ、アプリケーションサーバ
  • 仮想サーバ:CPU使用率、ディスクI/O負荷・ディスク使用容量が小さい用途に向く。 →用途:Webサーバ、開発サーバ、メモリDB
仮想化のメリット
  • コストダウン
  • ゲストOSのハードウェアリソース増減を容易に行える
  • 物理サーバが老朽化した際、ハードウェア交換が必要なのに対し、 ゲストOSは新しい物理サーバに仮想化環境を用意し、簡単に移行が出来る
仮想化のデメリット
  • 他のゲストOSが大量のハードウェアリソースを使うと、他のゲストOSの動作が不安定になる
  • 一度作られたゲストOSがその後使われなくなっても撤去されずに残りがちとなる

クラウド(IaaS)

クラウドは以下の3種類に分類される
  • SaaS:アプリケーションをサービスとして提供
  • PaaS:アプリケーション実行環境をサービスとして提供
  • IaaS:システムインフラをサービスとして提供
IaaSの特徴
  • 自社で物理サーバを持たずに使えるため、物理サーバを管理するエンジニアが不要
  • 利用申請後、短期間でOSがインストールされた状態ですぐ使える
  • 自社で物理サーバを持たないため、物理的成約を意識せず利用したい分だけサーバの増強が可能
  • 使った分だけ費用が発生する従量課金制
  • 自社で資産を持たずにすむので、サーバを買う発生する減価償処理が不要で、クラウド利用費は費用処理が行える
クラウドに向かない用途
  • 秘密情報を置く:自社で管理できないところで機密情報流出が発生するリスクがある。
  • 大容量ファイルの転送:ファイル転送が遅くなる
  • 大規模システム:自社で機器を持った方が安くなる

第3章 OS

Linux、Windows Server、UNIXについて代表的OSの記述

第4章 ネットワーク

ルータ ルータを選ぶポイント
  1. ISPやデータセンターなど、ルータを接続する先から提供される上位回線のインタフェースと一致したWAN側インタフェースを持つこと
  2. WAN側での通信帯域
  3. スループット:単位時間当たりのデータ転送量
  4. セキュリティ機能をルータにも求めるか:フィルタリング機能などを持たせるか
  5. 導入コスト
スイッチ L2/L3スイッチの役割
  • L2スイッチ:スイッチングハブ。 フレーム(L2スイッチではパケットではなくフレームと呼ぶ)が入ってくると、 宛先のMACアドレスを見て適切なポート番号にフレームを転送。 該当するMACアドレスが存在しない場合はLAN全体にブロードキャストを飛ばし、応答があったポートに転送。
  • L3スイッチ:ルータ機能付きのL2スイッチ。 パケットがが入ってくると、宛先のIPアドレスを見て適切なポートにパケットを転送。 該当するIPアドレスもしくはネットワークアドレスが存在しない場合は、デフォルトゲートに繋がるポートに転送。
L2/L3スイッチを選ぶポイント
  • インターフェースの速度とポート数
  • インテリジェントorノンインテリジェント
    • インテリジェント:スイッチにWeb接続もしくはtelnet接続することで各ポートの設定を変更することや、各ポートのステータスや通信量を確認することが出来る
    • ノンインテリジェント:サーバがネットワークに繋げるようにするだけであれがノンインテリジェントで十分である
  • スイッチング能力とスイッチング容量
    • スイッチング能力:一秒間のうちにどの程度のパケットを処理できるか
    • スイッチング容量:一秒間のうちにどの程度のバイト数を処理できるか
  • ハードウェア処理vsソフトウェア処理 通信量が大規模の場合ソフトウェア処理によってCPU使用率が上がってスイッチング能力に影響を与える場合がある

ネットワークケーブル

LANケーブル:LANケーブルは多くの種類が出ているが、通信品質に大きな差はない。 光ファイバーケーブル:
  • マルチモードファイバ:伝送距離が短いが安価
  • シングルモードファイバ:伝送距離が長いが高価

第5章 ストレージ

データを記憶する装置のことをストレージ
  • ローカルストレージ:サーバ内にディスクを搭載して用いる記憶領域 設置場所はコンパクトですが、搭載できるディスクの本数や拡張性は少ない
  • 外部ストレージ:サーバ外に用意するストレージ機器もじくはストレージ領域
    1. DAS:サーバに直結するストレージ機器。 DASを選ぶ際は、必要な実容量、パフォーマンス、耐障害性、拡張性を考える。
    2. NAS:ネットワーク経由で複数のサーバからアクセス可能なストレージ。 複数のサーバ間でデータ共有や複数のサーバでバックアップやログファイルを一カ所にまとめる用途で使われる。
    3. SAN:ブロックレベルのデータストレージ専用のネットワーク。 高速・高品質な環境を求める時に用いる。
外部ストレージを導入する動機としては、以下の4つが挙げられる
  • 記憶領域を大きく取りたい
  • ディスクI/O性能の向上
  • ストレージの統合・集中管理
  • 複数サーバ間でのデータ共有

第6章 購買と商談

インフラ構築の為の機器等の購入は、ベストは信頼のおける知り合いから良いベンダーを紹介してもらうこと。 ベンダーに来訪してもらう際、以下のことを把握しておくべき
  • 何を購買しなければならないのか
  • 購買しようとしているものの価値の相場の把握
  • 購買しようとしているもののトップシェアベンダー
  • 発注から納品までどれくらいの期間がかかるのか
初めて機器を導入する場合、導入テストを行う場合がある。 設置場所に収まるかといった物理的な確認、 必要な性能は出るかといったパフォーマンス測定、 サーバ等の接続確認。

第7章 データセンター

データセンターの選定 アプローチ方法としては、
  • 知り合いからの紹介
  • サーバベンダー等、付き合いのあるベンダーからの紹介
  • ホームページなどでモボ私意データセンターを探す
データセンターを選ぶポイント
  1. データセンターの立地
  2. サーバ設置台数:サーバ設置空間は後で増やすことが困難なため拡張性も考慮に入れる
  3. ラックは持ち込みか、貸し出しか:ラックとラックマウントには相性があり、取り付けられない場合がある
  4. 利用可能ボルト数:大型機器は200V電源が必須な場合がある
  5. 重荷重機器への対応:サーバルームの耐荷重の確認
  6. 防災レベル:災害に対しての備えがあるか
  7. UPS(無停電装置)や発電機の性能
  8. 廃棄処理:データセンターでやってくれるかどうか
  9. 搬入スペースや駐車場の有無
  10. リモートハンドサービスの有無:トラブル発生時、電話をかければ電源をオン/オフにしてくれるサービスがあるかどうか
  11. ユーザルームの有無:オペレータがデータセンターに常駐する為のユーザルームが借りれるかどうか
  12. ケージ(金網)の有無
  13. ネットワーク回線のコネクティビティー:自前でISPと専用回線契約できるかどうか
  14. イレギュラーな要望に強い
  15. 備品貸し出しの柔軟性
  16. 売店や宿泊施設の有無
  17. 費用:最終的には費用で決めることとなる

第8章 ソリューションとセキュリティ

ソリューション

監視ソリューション:機器の稼働状況を一括監視する為に監視ソリューションを利用する。 区分すると、SNMPを利用するものと各サーバにエージェントプログラムをインストールしてそのデータを収集するものがある。

セキュリティ

インフラにおいての守るべきものとは、
  • 顧客データ全般
  • 売上情報
  • メールデータ
  • 各種ドキュメント類
  • 各種ソースコード
  • 従業員名簿

第9章 インフラ運用

ボトルネックを解消する ITシステムでは一般的にボトルネックが一カ所あるだけでスステム全体のレスポンスに悪影響を与える。 ボトルネックのおこりやすい場所は
  • コアスイッチのキャパシティ
  • L2スイッチのキャパシティ
  • Webサーバのメモリ不足
  • データベースサーバのCPUやメモリ不足
  • データベースサーバのディスクI/O
MSP MSPとはITインフラの運用管理を代行してくれる業者 MSP業者を選ぶポイントは
  • 企業としての信頼性:コンプライアンス面、財務状況等も確認すべき
  • コミュニケーション力
  • 柔軟性
  • 技術力
  • 費用対効果

第10章 大規模インフラ

システム構成を決めるポイント
  • ベンダーサポートの必要性
  • 使用言語
  • アクセス量
  • 可用性
外部業者の利用が必要になってくる
  • 納品機器の開梱とラックへのマウント
  • 機器のセットアップ
  • 障害対策サポート
  • サーバルームの清掃
  • インフラ運営システムの開発
  • ハードウェア故障時の自動対応
CDN 画像や実行ファイルなどの静的コンテンツの配信にCDNを使う CDNは、サービス提供会社のサーバに変わってCDNベンダーが提供したキャッシュサーバにアクセスしてユーザが静的コンテンツを取得する CDN業者ぼ選び方
  • 品質:サービスダウンがないか、応答速度が十分であるか
  • サービスは国内限定か、それとも世界対象か
  • コスト:CDNを使う場合に想定される通信量とCDNを使わない場合のインフラ投資・運用費用の比較
リソース不足対策
  • 人的リソース不足
    • コアメンバー:インフラ全体を管理する
    • オペレーター:実作業を遂行する
    コアメンバーは大規模インフラの経験者が少ない上、転職市場に出回らない。 →新卒を数年かけて育成する方が早いかもしれない オペレーターは転職市場に多く存在する。 実務経験がなくても比較的短期間で育成が可能。
  • データセンタースペース不足 成長著しいWebサイトの場合ものすごい勢いでラックスペースを使っていく。 また複数のデータセンターにサーバを分離出来ない場合もあるため、全部のサーバを別のデータセンターに移転させなければならないこともある。
  • 機器不足 大規模サイトの場合、大量発注となる場合が多いため、ベンダー側との生産調整が必要になる
  • ネットワーク帯域不足 アップリンクが1Gbpsを超えるとコアルータのアップリンクも1Gbps増やさなければならない。 ルータがキャパシティの限界となった場合はデータセンターの移転も必要
  • 資金不足 成長基調にあるITベンチャー企業は成長期において資金不足に陥り、思うように必要インフラ投資をおこないことがある。 その場合には →中古品を活用する チューニングを行う →日頃付き合いのある企業に助けを求める →増資を求める

第11章 インフラエンジニアの成長

  • ドキュメントを読み込む力を付ける
  • カタログを読み込む力を付ける
小規模インフラと大規模インフラ 経験や身につけられることが違う
  • 小規模インフラ ITインフラ全般を少人数で扱う。 企画、設計、商談、構築、運用の経験ができることが最大のメリット。 予算が限られた中での最大の費用対効果を実現する為にチューニング等を行っていく。
  • 大規模インフラ ITインフラを大人数で分担して構築、管理していく。 特定の分野に対して、高度なスキルが必要となる。 予算は多くかけられる分、可用性が求められる。
まとめ インフラ構築において、こういった場合にはこれを選ぶといいといった具合に、 一つ一つのケース毎にわかりやすく解説がなされており、 自分がインフラ構築する際にはしっかりとデータを収集した上で、行く通りの選択肢から最適なものを選ぶようにしていきたい。 以上、インフラについての備忘録を終了する。