1. ホーム >
  2. ブログ ~人材育成最前線~ >
  3. 最新技術など記事一覧

最新技術など記事一覧

みなさん、こんにちは。富士通ラーニングメディアの橋本です。

本シリーズのコラムも今回で最終回です。
最終回は、松井に代わって橋本が「イマドキの業務システムはフロントエンドも重要です!」についてご紹介します。

ちなみに、タイトルにもある「フロントエンド」とは、どういう意味でしょうか。
フロントエンドとは「Webシステムを構成する要素の中で、ユーザーと直接データのやり取りを行うユーザーインターフェイス(UI)部分」を指します。


ではなぜイマドキの業務システムはフロントエンドが必要なのでしょうか。その前に、本シリーズの第1回目、第2回目のコラムでの宿題の答えから紐解いていきましょう。

~本コラムでご紹介する内容~
・クライアントサイドでユーザーインターフェイスを構築するには?
・魅力的なフロントエンドを作成するには?

第二ラーニングサービス部 橋本 亜希(はしもと あき)

講師画像コーポレート部門、研修プロマネ部門での業務経験を経て、現在はJava,PHP,C#,VB.NET等と、HTML,CSS,JavaScript等を組み合わせたWebアプリケーション開発コースを担当。
休日はオシャレなカフェや雑貨屋さんを新規開拓し、キラキラしたものやネコ系動物に癒されている。けれど、一番心ときめくものはドラゴン○ール。


実はコラムを執筆するのは2度目。ご興味のある方は、以下コラムも覗いてみてください。

【今求められる人材】知らないとソンする!?
 ~Webアプリ担当講師が語る"jQueryのメリット"とは~

本シリーズの第1回、第2回のコラムをとおして、イマドキの業務システムは、REST APIベースで開発することにより、「サーバサイドからは『画面(HTML)』ではなく『データ(JSONなど)』が返却される」という特徴、および「シンプルな設計で分散アプリケーションを実現できる」、「クライアントサイドとサーバサイドの分離をすることにより、メンテナンス性向上や各サイドの分業化や並行開発がしやすくする」などのメリットがあることをご説明しました。

<時代はAPIファースト!? イマドキの業務システム開発ことはじめ>
 第1回 なぜ流行っている?「REST API」 ~アプリもインフラ作業の自動化もAPIで!~
 第2回 REST APIベースの業務システム開発(Java編)
 第3回 イマドキの業務システムはフロントエンドも重要です!


では、サーバサイドから渡されたJSONデータを使用して、クライアントサイドでユーザーインターフェイスを構築するにはどうすれば良いでしょうか。

<クライアントサイドでユーザーインターフェイスを構築するには?>

ズバリ!クライアントサイドをMVCアーキテクチャーに従って実装します。

※MVCアーキテクチャーとは:
モデル(Model)、ビュー(View)、コントローラー(Controller)を分離するための設計モデル。モデルでは、アプリケーションにおけるデータ構造とデータが持つビジネスルールを定義する。ビューでは、業務データを表示し、利用者とのユーザーインターフェイスとなる。コントローラーでは、アプリケーションの処理を実行する。モデルが持つ業務処理を起動し、結果をビューとして返す。MVCの目的は、開発する部品の役割を明確にすることにより、保守性を高め、再利用を促進することである

従来の業務システムは、サーバサイドレンダリングとよばれ、サーバサイドでHTMLを生成し、生成されたHTMLをクライアントに返却していました。

サーバサイドレンダリング

しかしREST APIベースの業務システムでは、クライアントサイドレンダリングとよばれ、サーバサイドではHTMLを生成せず、サーバから返却されたJSONなどのデータをJavaScriptが受け取ります。
JavaScriptからHTMLを操作することにより、Webページを部分更新し、サーバから受け取ったJSONなどのデータをWebページに表示します。


クライアントサイドレンダリングを実現する際、1つのソースコードにイベント処理、サーバ通信、HTMLの操作を実装するとソースコードの見通しが悪くなります。そのため、クライアントサイド(JavaScript)をMVCアーキテクチャーに従って実装することにより、見通しの良いソースコードを作成します。

クライアントサイドレンダリング

クライアントサイドMVCを実現する代表的なフレームワークとして、AngularJS、Reactなどがあります。

AngularJS、React

どうでしょうか。REST APIベースで業務システムを開発する場合、クライアントサイドはどのように実装すべきか、イメージできましたでしょうか。

さて、ここで1つ注意すべきことがあります。
たしかにREST APIベースで業務システムを開発することによって、冒頭でご説明したとおり「シンプルな設計で分散アプリケーションを実現できる」、「クライアントサイドとサーバサイドの分離をすることにより、メンテナンス性向上や各サイドの分業化や並行開発がしやすくする」などのメリットを業務システムの提供者は得ることができます。

では、業務システムを使用するユーザーはどうでしょうか。
最終的に表示されたフロントエンドがユーザーにとって使いにくい見栄えだった場合、ユーザーは業務システムの使用を敬遠し、必要最低限しか業務システムを使用しません
業務システムは、業務効率化など、システム導入本来の目的を達成して初めて提供した意味を成します。
そのためには、今後の業務システムは「使いにくい」は論外、「使いやすい」は当たり前、「使いたい」とユーザーに思って貰えるフロントエンドで提供する必要があります。

フロントエンド

では、ユーザーに「使いたい」と思って貰えるようなフロントエンドはどうやって作成すれば良いでしょうか。

<魅力的なフロントエンドを作成するには?>

ターゲットとなるユーザーのスペック(職業、性別、年齢層など)ではなく、そこから一歩踏み込んだユーザーのパーソナリティ(行動パターン、好きなこと、嫌いなこと、休日の過ごし方など)に着目してフロントエンドを考える必要があります。
たとえば、機能重視のユーザーとデザイン重視のユーザーでは、システムに求めるフロントエンドは異なります。


そのために、まず、業務システムの発注者からターゲットとなるユーザーのスペックを入手して終わるのではなく、実際にユーザーのところに足を運び、現状の業務システムに対する思いなどをインタビューしましょう。
そこから、メインターゲットとなるユーザーのペルソナ(ユーザーのイメージを共通認識するデザインツール。ターゲットとすべきユーザーの具体的パーソナリティを設定する)を作成しましょう。

1ペルソナの作成ペルソナの作成

次に、設定したペルソナであれば、どのような場合、どういう流れで業務システムを使用するのか、カスタマージャーニーマップ(ユーザーの行動文脈を旅のプロセスに見立てて可視化し、把握する手法および、そのために作成した図)を作成します。

2.カスタマージャーニーマップの作成
カスタマージャーニーマップの作成
次に、作成したカスタマージャーニーマップから、今回の業務システムで必要となる機能を構造化シナリオ(ユーザーの価値とビジネスの価値、ユーザーが行う作業、ユーザーが行う操作を記述した図)として洗い出し、ユーザーインターフェイスに落とし込みます。

3.構造化シナリオの作成構造化シナリオの作成

構造化シナリオを基に作成したユーザーインターフェイスがユーザーの望むものと一致するか、再度ユーザーのもとへ足を運び、レビューを行います。
レビューとユーザーインターフェイスの修正を繰り返すことにより、ユーザーにとって「使いたい」フロントエンドを作成できます。

いかがでしたでしょうか。
サーバサイドと比較し、今まで軽視されがちだったフロントエンドですが、業務システム導入の目的を達成するために、いかにフロントエンドが大切か、ご理解いただけましたでしょうか。

本シリーズのコラムは以上で終了です。
もしフロントエンドにご興味を持たれた場合は、HTMLやJavaScriptなどの基本文法はご存じな方を対象に
フロントエンドエンジニアのためのWebアプリケーション開発実践 (UJS53L)」というコースをご提供しております。
是非、コース概要をご確認ください。

<時代はAPIファースト!? イマドキの業務システム開発ことはじめ>
 第1回 なぜ流行っている?「REST API」 ~アプリもインフラ作業の自動化もAPIで!~
 第2回 REST APIベースの業務システム開発(Java編)
 第3回 イマドキの業務システムはフロントエンドも重要です!

 

今回のコラムのような皆様のスキルアップに役立つ情報や、お得なキャンペーン、無料セミナーなどのご案内情報を、メールマガジン(毎週木曜)で配信しています。
この機会にぜひご登録ください。

メールマガジン登録へ

 

みなさん、こんにちは。富士通ラーニングメディアでMicrosoftテクノロジーの講師をしている今井です。

今回は、データベースを取り巻く現状と最新のSQL Serverについてご紹介します。

2017年3月現在、SQL Server は2016 SP1が最新バージョンとして提供されています。
SQL Serverは、おおむね2年に一度新しいバージョンが提供されてきていますが、SQL Server 2008 やSQL Server 2008 R2のサポートが、『2019年7月9日』で終了する予定となっています。

そのため、そろそろ新しいバージョンへの移行などを検討される方も増えているのではないでしょうか。ただし、新しいSQL Serverへの移行といっても、ただデータを乗せ換えるだけではもったいないのです。

第二ラーニングサービス部 今井 敏裕(いまい としひろ)講師画像

Microsoft認定トレーナーとして多くのトレーニングを担当。
Windows Server(Active Directory 、Hyper-V、クラスタなど)、Windowsクライアント、SQL Server(~2016)、Microsoft Azure、Lync Serverなどのトレーニングを開発、実施してきた。
わかりやすく、受講後すぐにアクションにつながるトレーニングを心がけ、講師評価及びコース評価などで社内表彰を4年連続獲得。
2児の父として家庭との両立を図りながらも、たまに青いサイリウムを手に、某ライブに参戦している。

<[分析]という作業とSQL Server>

昨今のデータベースは、これまで以上の役割を担うようになってきていますね。
例えば、[分析]。アナリティクスやビジネスインテリジェンスと言ったりすることもあります。
これは、データをためるだけでなく、それを分析し、様々な戦略に役立てることを目的としています。
移行にあたってはこういった役割が求められることもあるかもしれませんね。

ただし、大まかに以下の様な条件を考えておく必要があります。データベースでの分析作業に求められること

ネコなんだか大変そう・・・。



そう、「大変」なんです。[分析]と聞くだけでも大変そうなのに、そもそものデータベース側の準備も大変です。

今までの業務の処理もやりつつ、「分析も」となると、「別のサーバーを作ります」とか「負荷的に無理です」とか「夜間に分析させて翌朝レポート出します」といったことになりやすいわけです。

こう言った条件に対して、MicrosoftがSQL Serverを通じて出した答えは・・・

インメモリOLTPの採用、計算に強いインデックス採用、SSDアプライアンスの提供、Operational Analytics

といった部分を段階的に強化しました。
これらは、高価なハードウェアに頼らなくても、より効率的に速く分析処理ができるようソフトウェアレベルで強力に支援してくれます。
また、チューニング済みのハードウェア[SQL Server SSD Appliance]では、SSDを採用することでハードウェアとソフトウェアの両面から高速化を強力に支援。小規模から大規模まで多様なラインナップが用意されています。

ネコ実は某有名Webサイトも、裏ではSQL Server SSD Appliance支えているみたいよ!


これら4つはあくまで代表的な強化点ですが、各バージョンで段階的に採用されてきました。
SQL Server 2016では、それらが最適化され、実用に耐えるものに進化してきています。

また、何より大事なのが、

ネコ既存のデータに追加で構成できるものも多い!

ということです。
従来のデータベースやテーブルの構成に追加することで、単純に高速化できる処理も多かったりします。
例えば、単純な集計や計算処理もカラムストアインデックスを使うことで大幅に高速化できる場合もあります。

<「速い速い」はどれだけ速い?>

カラムストアインデックスやインメモリOLTP(最適化)などは、データへの各種処理の高速化・高効率化に貢献する機能の1つですが、一言で「速い」といってもどのくらい速いのでしょうか。その結果の一端をお見せしましょう。

・カラムストアインデックスの動作確認
 約1000万件のデータが入っているテーブルに対してGROUP BYで集計をかけた場合です。

カラムストアインデックスの動作確認

明確な数字はライセンス規約上掲載できませんが、クラスタ化インデックスだけの場合に比べ、性能が大幅に改善しているだけでなく、サイズもコンパクトになっていることがわかります。

・インメモリOLTPの動作確認
 100万件のデータ追加時の実行時間を簡易的に測定した場合です。
 (ネイティブコンパイルストアドプロシージャ未使用)

インメモリOLTPの動作確認

データ追加において大幅に高速化していることがわかります。

これらの動作確認は、同じハードウェア、OS、SQL Serverなどすべて同一条件にて実施しています。
もちろん、前提条件、適材適所などしっかり確認は必要ですが、新しい技術を使えば一定レベルの性能向上が見込めるわけです。

ネコ新しい選択肢として考えることもできるね!



実は、上記の動作結果は弊社で提供している実習の一部を抜粋したものです。
実習では実際の実行時間をワークシートに記録しそれを持ち帰ることができるため、SQL Server 2016導入時のサンプルとして活用いただけます。

 SQL Server 2016 新機能と差分 (UCD31L) ※1日コース

また、以下のSwayコンテンツでは本研修の紹介も行っています。

SQL Server 2016 新機能と差分 コース紹介 -Microsoft Sway-


皆様のご受講を心よりお待ちしております。

【トピック】 「MCP教科書 Windows 10」を執筆しました!書籍表紙

Microsoft認定トレーナーとしてお客様から高い評価をいただいている今井が、このたび「MCP教科書 Windows 10(試験番号:70-697)スピードマスター問題集(翔泳社出版)」を執筆し、3月2日に出版されました。
さらに、4月8日(土)に開催される「丸かじりセミナー(無料、主催:株式会社翔泳社、日本マイクロソフト株式会社)」で講師を担当します。

みなさん、こんにちは。富士通ラーニングメディアの松井です。

現在、Javaによる業務システムは大きな変革期にあります。
1つ目の潮流は、REST APIの利活用や提供のニーズが高まっていることです。モバイルアプリケーションのバックエンドやシステム間連携を容易にするため、REST APIを提供し、レスポンスをJSONなどのデータで返すアーキテクチャに注目が集まっています。
2つ目の潮流は、これまで使用されてきたオープンソースのフレームワーク(StrutsやSeaser2)がEOL(End of Life:サポート終了)となったことです。このため、Java EEの標準技術に移行する需要が高まっています

「REST API」をキーワードに、「イマドキの業務システム開発」を読み解いていく本シリーズの第2回では、「どうやってREST APIベースの業務システムを開発するの?」という疑問について、Java EE 7という最新の標準フレームワークを使用した開発方法をご紹介していきます。
REST APIベースの業務システムの詳細については、前回のコラムをご覧ください。

<時代はAPIファースト!? イマドキの業務システム開発ことはじめ>
 第1回 なぜ流行っている?「REST API」 ~アプリもインフラ作業の自動化もAPIで!~
 第2回 REST APIベースの業務システム開発(Java編)
 第3回 イマドキの業務システムはフロントエンドも重要です!

第二ラーニングサービス部 松井 正徳(まつい まさのり)講師画像

主にJavaやHTML/CSS/JavaScriptなどのWebアプリケーション開発コースを担当。
最近はRuby、Pythonなどのスクリプト言語やLinux、クラウドなどインフラ技術も勉強中。
アプリケーション開発のオールマイティSEとなるべき、精進の毎日。

プライベートでは、セーリングと日本酒を愛する自由人。
日本酒の今年の目標は、新潟越後の93酒蔵の利き酒を全制覇すること。

<JavaEEとはなにか?>

Java EE(Java Platform, Enterprise Edition)とは、サーバサイド向けアプリケーションに必要な機能の仕様の集合(API群)です。

2000年代のJavaのアプリケーション開発においては、Java EEの前身であるJ2EEの開発生産性の低さもあり、オープンソースのフレームワークが台頭していました。ただし、オープンソースのフレームワークは、必ずしも長期的にサポートされるとはかぎらない点に注意が必要です。現に、代表的なオープンソースフレームワークであったStruts1.xとSeasar2は、EOL(End of Life)となっています。
オープンソースフレームワークの諸技術を取り込み、Java EEの最新バージョンでは標準技術のみで高い生産性で堅牢な業務システムを開発可能です。また、後方互換性も十分に考慮されており、長期的な安定性を見込むことができます。

Java EEは仕様の集合であり、アプリケーションの各機能を実現する仕様が定義されています。以下に、REST APIベースの業務システムを開発するにあたり、必要となる仕様を示します。

・JAX-RS(Java API for RESTful Web Services)
REST API を開発するための Java EE標準仕様。
・JPA(Java Persistence API)
データの永続化やO/Rマッピングの標準を規定した Java EE標準仕様。
・JTA(Java Transaction API)
トランザクション管理に関する Java EE標準仕様。
・CDI(Contexts and Dependency Injection)
DI(Dependency Injection : 依存性の注入)やAOP(Aspect Oriented Programming : アスペクト指向プログラミング)を実現するための Java EE標準仕様。
・Bean Validation
JavaBeansに対してバリデーション(入力された値に対する妥当性の検証)を行うためのJava EE標準仕様。

REST API呼び出し

上図は、Java EEでREST APIベースの業務システムを開発する場合に使用する各要素技術をマッピングしたものです。
クライアントからリクエストがあると、Bean Validation による入力値検証後、JAX-RSで実装したREST APIで定義されたリクエストに応じた処理を実行し、データベースへの問い合わせについてはJPA/JTAを通じて行われます。また、一般的に業務システムは役割ごとのレイヤーに分割して構成しますが、メンテナンス性を向上させるため、CDIによってレイヤー間を疎結合に保ちます。

<JAX-RSによるREST APIの実装例>

JavaによるREST API開発の中核となるのはJAX-RSです。

Java EE 7の最注目の仕様の一つで、JAX-RSのバージョンが2.0に上がり、RESTクライアント(REST APIを呼び出すクライアント側のプログラムを実装する仕組み)やフィルタ(毎回のリクエスト/レスポンス時に共通的に実行する処理を定義する仕組み)など様々な機能が追加されました。

REST APIベースの業務システムとして、あるショッピングサイトを例に考えてみましょう。
Webサイトからの注文だけでなく、将来はモバイルアプリケーションからの注文も、同じシステムで受け付けられるようにREST APIを定義したとします。では、以下のような注文情報の取得に関するREST APIがあった場合のJAX-RSでの実装例をみてみましょう。

REST API呼び出し

JAX-RSでは、REST APIで提供する処理を定義するクラス(リソースクラス)を、アノテーション(注)を付与することで作成します。
リソースクラスには、リクエスト(HTTPメソッドおよびURLパターン)に対応したリソースメソッドを定義します。

①リソースクラスにアクセスするリソースURL(/flmmarket/api/orders/1)を@Pathアノテーションで指定
②注文情報はJSONで返却するので、@Producesアノテーションでレスポンスのデータ形式をJSONに指定
③リクエストのHTTPメソッドはGETなので、対応するメソッドに@GETアノテーションを指定
④リクエストのURLパターン(/flmmarket/api/orders/1)に対応し、検索条件の注文番号を指定する orderid のパスパラメータを取得できるように、@Pathアノテーションを設定
⑤検索条件の注文番号を指定する orderid のパスパラメータを取得できるように、@PathParamアノテーションを設定
⑥クライアントへのレスポンスは、各種設定をしたResponseクラスのオブジェクトを戻り値として指定

→ok()メソッドを呼び出すことで、HTTPステータスコード:200(成功)を設定
→ok()メソッドの引数に検索結果を表すorderを指定。レスポンス時に、JavaオブジェクトはJSONへと変換

(注)クラスやメソッドなどに対してメタデータとして付加情報を設定する機能

普段からプログラムに慣れ親しんでいる方なら、JAX-RSのソースコードを初見でも直感的に理解していただきやすいのではないでしょうか。
HTTPメソッドのGETの例をご紹介しましたが、POSTやPUT、DELETEなども同様に定義可能です。

<Java EEを効率的に習得するには>

ここまでJAX-RSを簡単にご紹介してきましたが、実際の業務システムでは、データベース連携やレイヤー間を疎結合に保つ仕組みが必要です。また、Java EEによるREST APIベースの業務システムの全体像や各要素技術の連携方法を理解することも重要です。

Java EEを習得するには、サンプルアプリケーションを動かし、実際にプログラミングすることが一番です。
ただ、独学だと1つ1つの要素技術は理解できても、要素技術の連携や技術の適用場面について体系的に理解するのは難しいかもしれません。

・REST APIを作ったけど、入力値の検証やエラーのときはどうレスポンスを返せばいいの?
・REST APIのアクセスログをとりたいけど、どうしよう?
・データベースのテーブルと返却するJSONの構造って、同じでいいのかな?

そんなときは、体系的な知識を短期集中で学習できる講習会がオススメです。

JavaEEによるRESTfulアプリケーション開発(UFN57L):
     2017年3月27-29日開催!

この講習会では、Java EEの全体像や各要素技術を学習したあと、総合演習を行います。総合演習では、API仕様書をインプットとして、サーバサイドで各要素技術が連携したシステムを開発します。3日間をとおして、実践的にJava EEによるREST APIベースの業務システムの開発スキルを習得できます。API仕様書例

今回はサーバサイドのREST API構築方法を中心にみてきました。
では、サーバサイドから渡されたJSONデータを使用して、クライアントサイドでUIを構築するにはどうすればいいのでしょうか。また、魅力なUIはどのような流れでつくればいいのでしょうか。
第3回目は、「イマドキの業務システムはフロントエンドも重要です!」についてご紹介します。次回もお楽しみに!

今回のコラムでREST APIに興味を持った方は、是非「REST API」のコースマップもご覧ください。

 

今回のコラムのような皆様のスキルアップに役立つ情報や、お得なキャンペーン、無料セミナーなどのご案内情報を、メールマガジン(毎週木曜)で配信しています。
この機会にぜひご登録ください。

メールマガジン登録へ

 

みなさん、こんにちは。富士通ラーニングメディアの松井です。

早速ですが、イマドキの業務システムには、なにが求められ、どのように対応していかなければならないのでしょうか。 
私なりに3つの課題に整理してみました。

  • 課題1: PCだけでなく、モバイルでも業務システムを利用できるようにする必要がある。
  • 課題2: ビジネス環境の変化に対して、俊敏に対応する必要がある。
  • 課題3: 自社内のシステムだけでなく、他社のシステムやさまざまなWebサービスと連携できる必要がある。

どうでしょう、いずれも心当たりのある方や、今まさに取り組まれている方などもいるのではないでしょうか。
これら3つの課題を達成するにあたり、近年REST APIが着目されてきています。
今回から3回にわたって、「REST API」をキーワードに、「イマドキの業務システム開発」を読み解いていきます。

<時代はAPIファースト!? イマドキの業務システム開発ことはじめ>
 第1回 なぜ流行っている?「REST API」 ~アプリもインフラ作業の自動化もAPIで!~
 第2回 REST APIベースの業務システム開発(Java編)
 第3回 イマドキの業務システムはフロントエンドも重要です!

初回は、「REST APIってそもそもなに?」「REST APIを使うとなにが嬉しいの?」という疑問を解消していきます。

第二ラーニングサービス部 松井 正徳(まつい まさのり)講師画像

主にJavaやHTML/CSS/JavaScriptなどのWebアプリケーション開発コースを担当。
最近はRuby、Pythonなどのスクリプト言語やLinux、クラウドなどインフラ技術も勉強中。
アプリケーション開発のオールマイティSEとなるべき、精進の毎日。

プライベートでは、セーリングと日本酒を愛する自由人。
日本酒の今年の目標は、新潟越後の93酒蔵の利き酒を全制覇すること。

<REST APIとはなにか?>

「REST API」とは、APIを呼び出すことでWebを通じてさまざまなサービスを利用できる仕組みのことです。

ここで出てくるREST(Representational State Transfer)とは、2000 年頃に Roy Fielding 氏が提唱した、分散アプリケーション構築においてコンポーネント間連携に適したサービスを構築する際の設計原則の集合のことです。
主に以下の4つ特徴があります。

・すべてのリソースは汎用的な構文で一意に識別される
・セッションなどの状態管理を行わない
・情報を操作する命令はあらかじめ定義および共有されている
・情報の内部に、別の情報や状態へのリンクを含めることができる

ポイントはRESTの設計原則がWeb技術と親和性が高いということです。

REST API以前にもXMLなどを使用したシステム間連携の仕組みはありましたが、厳密な仕様に基づいた実装が必要で、独自の通信プロトコルを使用する必要があるなど、開発には多くの労力がいりました。

それに対し、REST APIはシンプルな設計で分散アプリケーションを実現できることや、すでに普及していたWebのHTTP通信でやりとりをできる手軽さ から人気となりました。
このとき、REST APIでのクライアント/サーバ間のデータの受け渡しには、軽量なデータ形式であるJSONが使用されることが一般的です。
JSONはJavaやC#など主要言語で標準的にサポートされているため、使用言語が違うシステム間の連携も容易に行えます。

REST API呼び出し

<REST APIを使うメリットとは? ~システム開発者編~>

REST APIベースの業務システムにすると、モバイルアプリケーションへの対応や、外部システムとの連携が従来よりも容易になります。
外部システムとの連携におけるREST APIの優位性は、前項の「REST APIとはなにか?」で述べていますので、ここではモバイルアプリケーションへの対応を中心にみていきます。

まずは、従来のWeb業務システムとREST APIベースの業務システムを比較してみましょう。
2つの大きな違いは「返却するリソース」です。返却するリソースの違いの図

従来のWeb業務システムは、ユーザーのリクエストに対して、「画面(HTML)」を返却します。ユーザーは各デバイスからブラウザを使用し、画面を通してデータの参照や機能の利用を行います。
しかし、モバイルのように低速かつ不安定な通信環境で操作する場合、データ量が多い画面だとユーザーの待機時間が増加したり、操作性が低くなったりしてしまいます。
一方、REST APIベースの業務システムは、「データのみ(JSONなど)」を返却します。データのみであれば軽量かつ加工しやすく、クライアント側はブラウザに限らず外部システムやモバイルアプリケーションでも扱うことができます。

さらに、JSONなどのデータのみを返却するアーキテクチャは、「画面制御を行うクライアントサイド」と「業務データの保存・更新や業務処理を行うサーバサイド」との分離を促進します。クライアントサイドとサーバサイドの分離は、メンテナンス性向上や各サイドの分業化、並行開発のしやすさを促します。

例えば、一般的に改修要望が多い画面部分の修正について、従来のWeb業務システムでは画面の生成と業務処理とが密接に関連しやすく、改修負荷が大きくなりがちでした。
一方、REST APIベースの業務システムの場合、クライアントサイドの修正がサーバサイドに影響しなくなります。

<REST APIを使うメリットとは? ~インフラエンジニア編~>

近年の業務システム構築のスピードアップを語る上で、はずすことができないのはクラウドサービスです。

インフラを「自前でもつ」形態から、クラウドサービスで「必要な分を必要なだけ必要なときリソースを利用する」形態が主流になりつつあります。
クラウドサービスには、クラウド上のインフラ環境の構築・運用管理を制御する各種REST APIが提供されています。
そのため、REST APIを利用するスクリプトを用意することで、従来の手動での構築作業に比べ、大幅な工数削減や作業ミスによる障害発生の防止を実現できます。

<REST APIの今後>

Webを通じて広く公開されたREST API同士を組み合わせることで、新たなサービスを迅速に提供することができるエコシステムは「APIエコノミー」と呼ばれ、注目を集めています。
近年、FinTech(注)に代表されるITによる革新的なサービス登場の裏側には、各社が自社のビジネス機能の一部をREST APIでアクセスできるWebサービスとして提供していることがあげられます。
今後もREST APIの利活用や提供によるビジネス拡大の動きは加速するものとみられています。

(注)FinTech: 「Finance(金融)× Technology(技術)」による造語で、主にIT技術を駆使した革新的な金融商品・サービスの潮流のこと

<業務システムの課題と対応策>

いかがだったでしょうか。REST APIが流行っている理由、おわかりいただけましたか?
最後に、冒頭でご紹介した業務システムの3つの課題に対する対応策を整理してみます。

  • 課題1: PCだけでなく、モバイルでも業務システムを利用できるようにする必要がある。
    → レスポンスにJSONなどのデータを返却するREST APIベースの業務システムを開発する。
  • 課題2: ビジネス環境の変化に対して、俊敏に対応する必要がある。
    → REST APIでクライアントとサーバサイドを分離することで、メンテナンス性向上や各サイドの分業化、並行開発のしやすさを促す。
    クラウドによるインフラ構築にあたり、REST APIを利用したインフラ作業の自動化を行う。
  • 課題3: 自社内のシステムだけでなく、他社のシステムやさまざまなWebサービスと連携できる必要がある。
    → リソースを操作するインタフェースをREST APIで定義し、インタフェースの統一と標準化を図る。

REST API活用イメージ図次回は、REST APIベースの業務システムをJavaで開発する方法についてご紹介します。具体的には、Java EE7という最新の標準フレームワークをとりあげますので、お楽しみに!

今回のコラムでREST APIに興味を持った方は、是非「REST API」のコースマップもご覧ください。

 

今回のコラムのような皆様のスキルアップに役立つ情報や、お得なキャンペーン、無料セミナーなどのご案内情報を、メールマガジン(毎週木曜)で配信しています。
この機会にぜひご登録ください。

メールマガジン登録へ

 

みなさん、こんにちは。富士通ラーニングメディアの松田です。

今回のコラムでは、急激に成長すると予想されている、最近注目の「IoT」について、どのような価値をもたらすことができるのか、また、どのような技術が必要となるのかをご紹介します。

 

 第二ラーニングサービス部 松田 克也(まつだ かつや)講師画像

汎用機からビッグデータ、IoTまで幅広い分野の研修インストラクターを担当。
ラズベリーパイ(シングルボードコンピュータ)という響きがとても大好きなスマートとは程遠いぽっちゃりおじさんです。
最近は、電子工作部品を買うために週末秋葉原に通っています。

 

 <IoTが今、注目されています!>

皆さん『IoT(アイオーティー)』という言葉をご存知でしょうか?
巷で泣き顔(ToT)に見えると今話題沸騰?のバズワードで、『Internet of Things』の頭文字を取ったものです。日本語に直訳すると『モノのインターネット』となります。今までは、パソコンやスマートフォンなど、インターネットにつながるモノは、コンピューターでした。IoTの世界では、コンピューターだけでなく、センサーや家電などの組み込み機器といったあらゆるモノがインターネットに接続することで、ビジネスに変革をもたらしたり、人々の生活をより便利に、より豊かにする新しい価値を生み出すと言われています。
 ちなみに私の周りには、『ICT※』と何が違うの・・・?(これも見た目がそっくりですが)という方もおり、知っている人は知っているけど、まだまだ世の中への浸透には時間がかかるかもと感じています。
※ICT(Information and Communication Technology)日本語では、情報通信技術と訳される。


<IoTの歴史>

 実は、『Internet of Things』という言葉は、1999年に、当時米国Procter & Gamble(P&G)社のKevin Ashton氏が、同社重役に対してのプレゼンテーションのタイトルとして使ったことが始まりと言われています。当時はインターネットが大きなブームを迎えており、RFIDにより、モノがインターネットにつながり(正確には、RFIDが自動でコンピューターに読み取られ、ネットワーク上で認識されるようになる)、サプライチェーンに革命をもたらすことを説明したようです。当初は、マーケティング用語として使われたようですが、すでに15年以上の歴史があるんですね。この他にも、『ユビキタス』や『M2M』など、同じようなコンセプトで使用される言葉も存在します。いずれにしても、以前から概念としては謳われていた世界が、コンピューターやセンサーなどの小型化や、無線ネットワーク通信の技術発展などにより、実際に実現できる世界になってきたということになります。

<IoTがもたらす新しい価値とは>

ここでは、IoTによってどのようなことが実現できるのか見ていきます。
たとえば、私たちの身近な生活で見てみると、スマートメーターと、それによる自動検針やHEMS(Home Energy Management System)が挙げられます。スマートメーターは、電力使用量を記録する従来の電力計の機能に、無線通信によるデータ送受信機能を付与したものです。各家庭のスマートメーターから電力使用量を、管理センターへ送信することで、検針員さんが一軒ずつ電力使用量を測定する必要がなくなります。また、各家庭の電力の利用状況や地域の電力需要をリアルタイムに把握できるようになります。これにより、電力の需給調整を地域単位で行う『スマートグリッド』が実現できます。また、スマートメーターのデータを各家庭のコンピューターで受信し、契約者自身が電力の使用状況を把握し、節電などにつなげることができます。このような仕組みをHEMSと呼びます。
さらに、このHEMSを利用して、居住者の生活パターンを把握しておくことで、例えば高齢者の1人暮らしの方の、急病などを検知する見守りサービスが実現できます。このように、IoTと様々なアイデアが合わさることで、様々な価値を見出すことができるのです。
このほかにも、スマートハウスやスマートコミュニティーという概念もあります。
IoTを極めるとスマート人間になれるかもしれませんね。(笑)


<IoT時代を勝ち抜くために必要なスキルとは>

IoTは様々な構成要素で実現されています。技術要素でいうと、センサー、ネットワーク、クラウドやビッグデータなどのスキルが必要です。また、IoTを活用したソリューションを企画・検討できるビジネス的なスキルといった分野も重要な要素となります。

イメージ図 
IoT時代に必要となるスキル

 

さらにこれらを粒々としてではなく、上手く繋ぎ合わせ、価値を最大限に引き出すといった要素も必要になります。もちろん全ての要素を1人で身に付けることは難しいです。各要素の専門家が協力し合い、IoTの潮流に乗り遅れないようにすることが重要です。

私も、IoT時代の波に乗れる、スマートサーファーを目指して奮闘しています!

 

イメージ図

 

 

<コース紹介>

当社では、2015年10月より『IoT入門』コースをご提供しています。
まずはIoTの全体像について学習したい方、これからIoTのサービスを企画検討される方、IoTシステムの構築を検討されている方などIoTの基礎を知りたい方にオススメのコースです。

IoT入門(UIT01L)

みなさまと講習会でお会いできるのを楽しみにしています!!

 

皆さん、こんにちは。
富士通ラーニングメディアで、ネットワーク関連コースを担当している日高です。

私が担当しているネットワークはさまざまな通信を支えるインフラで、縁の下の力持ち的な役割を持っています。関わる方が多い分野でもあることから、「ネットワークの基礎(UJE76L)」コースは当社の約800コースある講習会において、受講者数No.1を記録し続けています。

一方で、ネットワークは最新の技術をドンドンと取り入れるというよりは、枯れた技術を使った安定した環境が求められる傾向があります。そのネットワークの分野において、ここ数年注目されているキーワードとして挙げられるのがSDN(Software Defined Networking)とネットワーク仮想化です。

今回のコラムでは、このSDNとネットワーク仮想化に特化したコース『SDN/ネットワーク仮想化入門(UJE77L)』をご紹介します。

 

第二ラーニングサービス部 日高 良太(ひだか りょうた) 講師画像

ネットワークカテゴリコースの全般を担当しています。
SE時代には金融系のネットワークSEとして奔走していました。
最近は家で燻製を作ることを覚え、燻製片手にお酒を楽しんでいます。

 

<SDNとネットワーク仮想化の違いとは?>

では、さっそくですがここで質問です。

SDN(Software Defined Networking)やネットワーク仮想化と聞いて何を思い浮かべますか?
違いは何ですか?
何を実現できると思いますか?


本コラムをご覧いただいている皆さんは何と答えるでしょうか。
ちなみに、私の周囲の人からはこんな回答がありました。


「ネットワーク仮想化は、VLANでしょ?」
「物理的な機器構成に関係なくネットワークを作れるんですよね。」
「SDNとネットワーク仮想化は同じことだと思ってますけどあってますか?」
「SDNは解散したアイドルグループで...(以下省略)」


近年は「仮想化」が一般的になり、さまざまな分野で仮想化技術が使用されています。
また、ネットワークの分野においては従来から仮想化技術はあったものの、改めて仮想化やSDNという新しいキーワードを見かける機会が増えてきました。

一方で、キーワードとしては目にするものの、登場してきた背景や両者の違いについては把握できていない方もいらっしゃるのではないでしょうか。

また、SDNやネットワーク仮想化においては各社が独自の呼び方で機能として製品に組み込んでいるものもあり、インターネットを使って調査をしても関連性を把握しづらく整理が難しいという特徴があります。

そこで、情報収集するための取っ掛かりを作りたい方、特徴や違いを整理したい方におススメなのが『SDN/ネットワーク仮想化入門(UJE77L)』コースです。

本コースでは、SDN関連技術やネットワーク仮想化技術が登場してきた背景や、各要素の共通する観点をまとめることで整理しやすくなるよう工夫しました。

SDN関連技術においては、SDNというキーワードが生まれるきっかけとなったOpenFlowに加えて、利用した製品が提供されつつあるOpenDaylightについても触れています。

また、「SDN環境の体験」の実習もご用意しており、講義で聞いていただいた内容を実践で確認できます。

イメージ図 
【SDNによるネットワーク機器の集中管理】

 

 

イメージ図

【実習の概要】

 

<コース紹介>

1日間で、SDNとネットワーク仮想化の概要を効率よく学習できます。

SDN/ネットワーク仮想化入門(UJE77L)

SDNやネットワーク仮想化に関する知識を得たい方や導入を検討している方におすすめです!ぜひご受講をご検討ください。

みなさまと講習会でお会いできるのを楽しみにしています!!

 

みなさん、こんにちは。富士通ラーニングメディアの渡邉と申します。
今回のブログでは、私が担当する全世界で15万社以上のあらゆる業種・規模の企業に導入されている世界No.のクラウドCRM Salesforceについて、その導入効果などをご紹介いたします。

 

講師画像

第二ラーニングサービス部 渡邉 潤(わたなべ じゅん)

セールスフォース・ドットコム認定インストラクターとして認定トレーニングを担当。「Force.com関連コース」において最も高い評価を得た講師に贈られる「Best Instructor of DEV」を2012年度より3年連続で受賞中
トレーニングを実施する傍ら実践力を培うべく、Salesforceのプラットフォーム(Force.com)上で動作する社内システムの開発にプロジェクトリーダーとして参画中。

 

<セールスフォース・ドットコムとは?>

唐突ですが皆さん『セールスフォース・ドットコム』をご存知でしょうか?
既に社内で導入済み、もしくは開発に携わっているという方はもちろんご存知かと思いますが、初めて聞いた、最近、テレビのCMや電車、駅の広告などで存在を知ったという方もいるかもしれませんね。セールスフォース・ドットコムは全世界で15万社以上のあらゆる業種・規模の企業に導入されている世界No1のクラウド型CRMベンダーです。


<そもそもCRM(Customer Relationship Management)って何?>

CRMとは顧客満足度を向上させるための取り組みのことを指します。CRMの目的は顧客と良好な関係性を築くことで企業のイメージアップを図り、商品の追加購入、買い替えの際に優先的に検討してもらったり、友人、知人への広告塔になってもらったりすることで売上を拡大させることです。そして、そのプロセスを標準化、自動化するためのシステムがCRMシステムもしくはCRMアプリケーションと呼ばれています。


<CRMシステムの必要性>

ここでは顧客満足度を向上させるために企業がお客様に対して、一般的にどのようなアプローチを行っているのかを整理してみましょう。
多くの企業では何か新商品や新サービスを開発するときには「マーケティング」を行い、お客様に新商品を知ってもらうために「キャンペーン」を行います。キャンペーンをとおして商品に興味を持ってくださったお客様に対しては「商談」を推進し、商品を購入してくださったお客様に対しては「アフターサービス/サポート」を行います。
この取り組みの中でどれか一つが欠けている、もしくは顧客が納得できないものがあると顧客満足度は低下し、「次」に選ばれることは無くなり、企業イメージを失墜させることにもつながりかねません。

企業はこのようなプロセスを、従来型のKKD(勘、経験、度胸/ど根性)だけに頼り、俗人的かつ運任せにするのではなく、ヒト、モノ、カネ、情報、時間などの制約の中で、安定的な経営をする必要があります。そのために「マーケティング」、「営業支援」、「コンタクトセンター」業務を包括したCRMシステムが必要とされているわけです。
※決してKKDを否定するものではなく、両方を組み合わせることが重要なんです。

例えばマーケティングに着目してみると、当然、闇雲に製品を作ったり、キャンペーンを行ったりするのではなく、過去の商談やキャンペーンなど様々なデータを分析し、ターゲットとするお客様を絞り込み、お客様が目にする媒体に対して広告を掲載することで商談につなげます。
さらに、顧客の属性に応じて異なるマーケティングを行う「One-to-Oneマーケティング」、そのマーケティングを自動化する「マーケティングオートメーション」といったマーケティングも注目されており、それらを実現するためにCRMシステムが必要となります。
その他、商談に発展した際は受注するために商談プロセスを科学的、自動的に推進することが可能になったり、商品を購入いただいた顧客からの問い合わせに対しては、蓄積された情報から迅速な対応を行うことが可能になったりします。

上記のような機能を持つCRMシステムの市場は年々増加し、この先も右肩上がりで成長していく領域としても注目を浴びています。そんな領域でリーダーとしての地位を築いているのがセールスフォース・ドットコムです。セールスフォース・ドットコムは営業支援、SFAを実現する「Sales Cloud」、コンタクトセンター等のサポートの対応力や柔軟性を高める「Service Cloud」、お客様に合わせてカスタマイズしたOne to Oneマーケティングを実現する「Marketing Cloud」などCRMを実現する包括的なサービスを提供しています。


<セールスフォース・ドットコムの革新性>

CRMのリーダーの地位にあぐらをかくことなく、常に革新的な新機能や新サービスを提供し続ける企業姿勢もセールスフォース・ドットコムが支持されている理由の一つだと思います。
例えば、米Forbes誌が選ぶ「World's Most Innovative Company」(世界で最も革新的な企業)では名だたる企業を押さえ、4年連続で第1位に選出されるなど、とてもイノベーティブで革新的な新サービスを次々に発表する企業としても評価されています。実際、セールスフォース・ドットコムの主要サービスは利用者からの要望やアイデアをベースに、年に3回のメジャーバージョンアップを無償で行い、サンフランシスコで毎年、開催されている「Dreamforce」というイベントではあっと驚く革新的な新サービスが毎年のように発表されています。
2014年のDreamforceでは15万名以上が参加登録、日本からも400名以上が参加する世界最大のITカンファレンスとなっており、年々、規模や参加者が膨れ上がっています。Dreamforce期間中はサンフランシスコ市内のホテルはDreamforce参加者で満室となり、価格も数倍に跳ねあがります。私も昨年のDreamforceに参加しましたが、Dreamforceの活気やSalesforceのスケールの大きさ、サービスが進歩するスピードに圧倒され、Salesforce認定インストラクターとしては、気を抜いたらすぐにおいていかれそうな危機感さえ感じたのを思い出します。ちなみに2015年のDreamforceは9月15日-18日の日程で開催され、当社からも2名が参加しています。

イメージ図 
Dreamforce2014の様子 @Moscone Center

 

<Salesforceの導入効果>

実際にSalesforceを導入した企業ではどのような導入効果が出ているのでしょうか。その一つの指標になる数字がセールスフォース・ドットコムから公開されています(※)。

・売上の拡大 37%
・顧客満足度の向上 45%
・マーケティングROIの向上 43%
・顧客の維持 45%
・デプロイメントの短縮 55%

(※)出典:2015年5月、第三者機関Confirmit社か?、セールスフォース・ドットコムの顧客企業4,500社超(無作為抽出)を対象に実施したカスタマーリレーションシップに関する調査より


<Salesforce導入時の成功の鍵は"正しい理解">

導入効果を最大限に高めるためには、Salesforceの機能や制約を正しく理解し、適切に導入を進める必要があります。また、Salesforceはカスタマイズ性が非常に高く、アプリケーションを拡張することで、CRM以外の業務でも活用することも可能となります。実際に当社では、全国のラーニングセンターから同時に1,000名の受講者が使用できる大規模な「受講管理システム」をセールスフォース・ドットコムが提供する開発プラットフォーム(Force.com)で開発・運用しています。

[拡大]受講管理システムについて

 

<富士通グループのSalesforce技術者500名が受講!>

当社では上記のような社内での開発・運用経験を活かし、セールスフォース・ドットコムのトレーニングパートナーとしてSalesforceの基本スキルから実践スキルまでを体系的に学習できるコースを実施、提供しています。

イメージ図
 
また、株式会社セールスフォース・ドットコム、富士通株式会社、株式会社富士通ラーニングメディアの3社が共同で開発し、富士通グループのSalesforce技術者が受講しているコースを、2015年10月より新たにセールスフォース・ドットコム認定コースとしてご提供します。
まずはSalesforceとは何かを知りたい方、実際に操作して体感しながら全体像を理解したい方、初めて Salesforce の機能を学習される方、Salesforce を提案、導入する可能性のある方などSalesforce の導入、開発の概要を包括的に知りたい方にオススメします。

Salesforceクイックスタディ ‐基本機能と開発の勘所

 開催日:東京 10月27日、12月14日、2016年1月4日、ほか

そのほか、セールスフォース・ドットコム社認定コースはこちら

 

みなさまと講習会でお会いできるのを楽しみにしています!!

  

 

こんにちは、富士通ラーニングメディアの今村です。私は普段、「Webアプリケーション開発」や「クラウドコンピューティング」、「タブレットアプリケーション開発」など、トレンド分野のカリキュラム策定や教材開発を担当しています。
さて、皆さんは「Web標準」と聞いたことがあると思います。Web開発において、「Web標準」の技術で開発することが主流となってきています。
今回は、マイクロソフトのWeb開発アプリケーション技術 .NETでWeb標準指向の開発を行う方に知ってもらいたい技術のASP.NET MVCについてご紹介します!

 

講師画像

今村 可奈(いまむら かな)

学生時代はパソコン操作よりもブルドーザーやショベルカーで森を切り開いていたことの方が多かったという異色の経歴。入社してからMicrosoftの開発系技術(ほぼ)ひとすじで、講師やカリキュラム企画、教材開発や実際のアプリケーション開発などに携わっている。1児(とても可愛くてナマイキ盛りの女児)の母のつもりだが、もしかしたら2児(メガネの似合うイケメン(主観)アラフォー男児と女児)の母なのかもしれない、と考えはじめている。趣味はカメラとお酒。

 

<ASP.NETでのWebアプリ開発>

Microsoft社の提供するASP.NETによるWebアプリ開発のフレームワークとして、主に以下の2つが挙げられます(他にもあるので、気になる方は「One ASP.NET」のキーワードで調べてみてくださいね!)。
 ・ASP.NET Web Forms
 ・ASP.NET MVC

ASP.NET Web FormsはASP.NETのリリースと同時の2002年にリリースされており、数年前までは「.NETのWebアプリ」と言えばASP.NET Web Formsのことを指すと言っても過言ではないほどのものでした。
これに対して、ASP.NET MVCは2008年にリリースされ、HTML5をはじめとする最新のWeb標準技術をサポートしながら、着実にバージョンを重ねています。Microsoft社による新機能の搭載や情報提供もASP.NET MVCやその周辺技術を中心に行われている状況です。
しかし、この2つのフレームワークは単に「古いもの」と「新しいもの」、と括ることはできません。現在でも、ASP.NET MVCよりは頻度や数は少ないものの、ASP.NET Web Formsに対する新機能の提供も行われています。つまり、ASP.NET MVCはASP.NET Web Formsを置き換えるものではなく、適材適所の使い分けが重要と言えます。

 

<ASP.NET Web FormとASP.NET MVCとの違い>

ASP.NET Web FormsとASP.NET MVCとの違いの一部をご紹介します。

イメージ図

 

プロジェクトの要件やアプリの仕様を中心に、どちらのフレームワークを使うのか選択することになりますが、一般的には、開発者によるドラッグ&ドロップを中心とした容易なUI開発や、デスクトップアプリケーション同様の開発手法であるイベントドリブン型、VB6.0やWindows Formsからの移行などを重視する場合はASP.NET Web Formsを、Web標準への対応やデザインを重視したUI開発、テスト容易性などを重視する場合はASP.NET MVCを選択すると良いでしょう。また、開発者のスキルセットやチーム編成なども考慮すると、より適切な選択が可能になります。

イメージ図
ASP.NET MVCで開発するアプリイメージ

 

<ASP.NET関連のトレーニングコース紹介>

富士通ラーニングメディアでは、2015年8月より、Microsoft社の公式教材を使用したASP.NET MVCに関するトレーニングコースをご提供いたします。メインで使用する公式教材は英語版のものですが、当社オリジナルの日本語版補足資料とオリジナル実習問題をご用意しております。メイン教材に数多く掲載されているコード例を深く理解したり、最新のASP.NET 5の情報を補ったりするために、オリジナルの日本語版補足資料を使用します。また、日本語版のオリジナル実習問題を使用してASP.NET MVCアプリを開発することで、具体的な操作やコードの記述について、効果的にスキル習得できます!

ご興味のある方は、是非コース概要をご覧ください。

ASP.NET MVC 4 Webアプリケーションの開発(短縮)(UUM11L)」

その他、ASP.NET Web Forms関連のトレーニングコースもご用意しております。
Visual StudioによるWebアプリケーションの開発(基礎編) (UUL87L)」
Visual StudioによるWebアプリケーションの開発(応用編) (UUL88L)」

みなさまと講習会でお会いできるのを楽しみにしています!

みなさん、こんにちは。私はスマートデバイス(スマートフォンやタブレット端末)で動くモバイルアプリケーション開発のAndroidアプリケーション開発の講師を担当しています。

最近はスマートデバイス(スマートフォンやタブレット端末)をお持ちの方が大変増えてきました。
プライベートでの利用だけでなく、個人所有のスマートデバイスを業務でも活用する「BYOD(Bring Your Own Device)」といった応用例もあります。

スマートデバイスを利用することで、いつでもどこでも好きな情報にアクセスできることは、とても便利ですが、その一方で、個人情報の流出など、セキュリティに関する問題も聞かれるようになってきました。

そこで今回は、Androidのセキュリティ事情についてお話をしたいと思います。

<セキュリティ対策にはコストが掛かりすぎる?>

アプリのセキュリティ上の欠陥のことを脆弱性といいます。
アプリのバグや、開発者が予想していなかった操作方法などが原因で発生し、コンピュータウイルスに感染したり、情報漏えいなどの被害の元となることがあります。

アプリをリリースするベンダ―は、脆弱性を排除しようとさまざまな取り組みをされていることと思いますが、脆弱性対策というと、要求される技術が多すぎる、工数が掛かりすぎるということで対応に苦労されている方も多くみられます。

脆弱性対策が困難な理由として、脆弱性を悪用する攻撃側と対策をとる防御側の非対称性が挙げられます。防御側のほうが、技術や費用の点で負担が大きいのです。

玄関やベランダの戸締りをしていても、小さな窓の鍵がひとつ開いていれば泥棒は入ってきます。すべての鍵をきちんと閉めても、家の前で鍵を落としてしまえば台無しです。

つまり、攻撃側は脆弱性が一か所あれば、それを悪用できるのに対し、防御側はアプリケーション全体で対策をとらねばならず、負担が大きくなるのです。

それでは、Androidで脆弱性のないアプリを作るにはどうすればいいのでしょう?アプリケーション全体にもれなく気を配る必要があるのでしょうか?

イメージ図

<Androidアプリの脆弱性情報>

セキュリティ対策方法のお話をする前に、Androidではどのような脆弱性問題が発生しているか、ご紹介したいと思います。

IPA(独立行政法人 情報処理推進機構)とJPCERT/CC(JPCERTコーディネーションセンター)が共同運営するJVN(Japan Vulnerability Notes)が、日本で使用されているソフトウェアなどの脆弱性関連情報とその対策情報を提供しています。

JVNは四半期ごとにレポートしています。例えば、2014年第4四半期のレポートは以下のリンクから見ることができます。

脆弱性対策情報データベースJVN iPediaの登録状況 [2014年第4四半期(10月~12月)]:IPA 独立行政法人 情報処理推進機構

Androidアプリだけでも、1,200件超の脆弱性が報告されています。数の多さに、驚かれた方もいらっしゃるのではないでしょうか?

今回、これだけ多くの脆弱性が報告されたのは、レポートにもある通り「複数の Android アプリに SSL 証明書を適切に検証しない脆弱性(JVNDB-2014-004043)」という、同一の脆弱性を持つアプリが多数見つかったためです。

いったい、どうしてこれだけ多数の、脆弱性を持つアプリがリリースされてしまったのでしょうか?

<脆弱性情報から考えられるセキュリティ対策>

1アプリだけの脆弱性であれば、アプリをリリースしたベンダー固有の問題であることも考えられます。しかし、これだけ多数のアプリに同様の脆弱性が発見されたということは、特定の会社の問題ではなく、どの会社でも同様の問題を起こす可能性がある、と考えたほうがよさそうです。

実は、「同じような脆弱性が多数のアプリで見つかる」という事例は今回が初めてではありません。

IPAテクニカルウォッチ 「Android アプリの脆弱性 」

先ほどのレポートより少し前のものになりますが、こちらのレポートには「届け出られた脆弱性は、アクセス制限の 不備に関するものが 7割以上 であった 。」と報告されています。このようにAndroidアプリで発見される脆弱性に、ある傾向がみられることがあります。

脆弱性に傾向がみられるのであれば、傾向を分析することで、比較的容易に対策をとることができます。

Androidは比較的新しいプラットフォームであり、セキュリティに関しても十分考慮がなされています。スマートデバイスに登録された個人情報やアプリ固有の情報を、アクセス許可のないアプリが容易に読み取ることを防ぐための仕組みが、あらかじめ備わっています。

これまで発見されている脆弱性のほとんどは、アプリ側で取らなければならない対策が十分とられていないことに原因があります。
脆弱性のない安全なアプリを作るためには、 Androidプラットフォームの保護が及ぶ範囲と、プラットフォームの保護が及ばないためにアプリ側で対策を取らなければならない範囲を理解することが重要になってきます。

<コース紹介>

具体的な対策など、Androidアプリでの安全なアプリ開発について、より詳しくは次のコースで取り扱っております。ご興味のある方は、ぜひコース概要をご確認ください。

☆ Androidセキュリティ・プログラミング (UFN22L)(※)

☆その他、モバイルアプリケーションにおいて必要となる知識や技術について、研修コースをご提供しています。こちらもご参考にしてください。

モバイル関連コースマップ

みなさまと講習会でお会いできるのを楽しみにしています!!

※本コースはナノコネクト社との提携コースです。

みなさん、こんにちは。私はスマートデバイス(スマートフォンやタブレット端末)で動くモバイルアプリケーション開発のAndroidアプリケーション開発の講師を担当しています。

さて、みなさんはモバイルアプリケーションというと、どのようなものを想像されるでしょうか?
メール、SNS等のコミュニケーションアプリ、ニュースや天気予報などの情報収集アプリを思い浮かべられる方も多いのではないでしょうか?

これらのアプリには、共通点があります。それはインターネット上のサーバと通信して情報を取得する機能を持っているということです。
そういえば、メールやSNS、ニュース、天気予報などはアプリだけでなくWebブラウザで見られるものもありますよね。

今回は、Androidアプリケーションの中でもよく使われる機能の一つである、通信機能のお話をしたいと思います。

イメージ図

<Javaの知識だけではAndroidアプリは作れない!?>

Androidアプリケーションを開発された方、または興味を持たれている方であれば、AndroidアプリはJava言語で記述する、ということもご存じだと思います。

Java言語は「もっともプログラマー人口が多い言語」と言われることもあるほど、大変普及している言語です。
そのため、Java言語でのプログラミングテクニック・ノウハウに関する情報はとてもたくさんあります。
本屋に行けば、選びきれない位たくさんのJava言語に関する本が売られていますし、ネットで検索すれば、Java言語によるソースコード例はたくさん見つかります。

Androidアプリの開発経験はないけれど、他のプラットフォームでアプリを作られた方であれば、すでに情報をお持ちであったり、今回お話しする通信機能を実際に作られた方もいらっしゃると思います。

では、その通信機能をAndroidでもそのまま動かすことができるでしょうか?

例えば、ユーザーインターフェースのような見た目に関する機能であれば、Android特有のプログラミングテクニックを知る必要があることはかんたんに想像できますが、サーバとの通信のような、見た目に影響しない機能については、そのまま動きそうな気もしませんか?

実は、このお話は半分だけあっています。AndroidもJavaの標準的なAPIを使って通信機能を実装することはできますが、そのほかに、必ず考慮しなければならない事があるのです。

<Androidアプリの考慮点の例~並列処理の仕組み~>

Androidはシングルスレッドモデルを採用しています。シングルスレッドモデルを簡単に説明すると、ある処理を行っている途中で別の処理を行うことができないしくみのことです。

イメージ図
サーバとの通信には、ある程度の時間がかかります。場合によってはサーバから応答が返ってくるまで数十秒から数分くらい待たされることがあります。この間、別の処理を行うことができないと、どのようなことが起こるでしょうか?

例えば、スマートフォンであれば電話機能があります。サーバとの通信中に別の処理を行うことが出来なければ、通信中に電話がかかってきても電話アプリを起動することができません。電話アプリが起動しなければ電話がかかってきたことすら気づくことができなくなります。これはとても困りますよね?

ところで、ここまで読まれた方で、少し疑問に思われた方もいらっしゃると思います。
Androidでふたつ以上の処理を同時に実行している、例えば音楽を流しながらWebブラウザでインターネットを検索するといったことができるのでは?という疑問を持たれた方もいらっしゃるのではないでしょうか?

実は、Androidはシングルスレッドモデルといっても、すべての処理が複数同時にできないわけではありません。画面の表示やタッチ、スワイプなどの操作といった、ユーザーインターフェースに関する処理だけが複数同時に実行できないのです。 ユーザーインターフェースに影響しない処理については、バックグラウンドで処理することで、複数の処理を同時に実行することができます。
音楽の演奏をバックグラウンドで実行すれば、Webブラウザと同時に動かすことができるのです。

サーバとの通信をバックグラウンドで処理すれば、先ほどの例のような、電話がかかってきたのに電話アプリに切り替わらない、といったことは起きなくなります。

バックグラウンドでの処理は、Javaの標準的なAPIを使っても実現できます。
もちろん標準APIを使ってもいいのですが、Androidではバックグラウンド処理を非常によく使うので、バックグラウンド処理をより使いやすくするための専用のAPIが用意されています

<コース紹介>

このようなAndroidプログラミングにおける注意点やAndroid固有のAPI、カメラやセンサといったスマートデバイスに内蔵された機能を利用するアプリ開発について、より詳しくは次のコースで取り扱っております。ご興味のある方は、ぜひコース概要をご確認ください。
実践!Androidプログラミング (UFN19L) (※)

☆その他、モバイルアプリケーションにおいて必要となる知識や技術について、研修コースをご提供しています。こちらもご参考にしてください。
モバイル関連コースマップ

みなさまと講習会でお会いできるのを楽しみにしています!!

※本コースはナノコネクト社との提携コースです。

月別アーカイブ