Knowledge Note

2013/12/04

Androidアプリセキュリティ ~Webサイト閲覧でroot権限を取得されてしまう脆弱性(2)~

本記事では管理者権限を取得するにはどうしたらよいのかについて説明していきます。 前回はWebkitの脆弱性を利用して任意のコードを実行する方法を説明しました。 今回はその状態から管理者権限を取得するにはどうしたらよいのか?について説明していきます。 3.Voldの脆弱性 この章では、Gingerbreakというアプリケーションを使用した管理者権限の取得方法について説明します。GingerbreakはVold(VolumeDaemon)と […]

2013/12/04

Androidアプリセキュリティ〜WebViewの注意点(2)〜

WebViewの機能のひとつであるaddJavascriptInterface()の仕様の危険性についてご紹介します。 前回はWebViewの悪用されやすい仕様とデータ漏えいの危険性の仕組みをご紹介しました。 今回はWebViewの機能のひとつであるaddJavascriptInterface()の仕様の危険性についてご紹介します。 addJavascriptInterface()とは WebViewにはインターネット上やAndroid […]

2013/10/04

jQuery Mobileによるアプリケーション開発

jQuery Mobileを使って、スマートフォン向けのWebサイトではなく、スマートフォン向けのWebアプリケーションを開発することを主題として説明します。 はじめに 本稿では、モバイルWebアプリケーション用フレームワークであるjQuery Mobileについて説明します。jQuery Mobileの特長は、マークアップを主体としているため、レイアウト・デザインはHTMLで定義し、ロジックをJavaScriptで書くという、これまで […]

2013/09/12

テスト設計技法の紹介(3):網羅型のブラックボックス型技法

ブラックボックステスト技法の中の、網羅型の技法について解説します。 前回はブラックボックステストの導入として、削減型の同値分割法とAll-pair法、および標的型の境界値分析の3つの技法について解説しました。 今回はブラックボックステスト技法の続きとして、網羅型の技法を解説します。 紹介する技法 今回紹介する技法の名前と分類、概要を以下に挙げます。 デシジョンテーブルテスト ユースケーステスト 状態遷移テスト 概要 テスト対象の仕様をデ […]

2013/09/12

Androidアプリ実装におけるセキュリティ(2) – ファイル編 -

本稿ではAndroidアプリ実装時における「ファイルからの情報漏洩」について解説していきます はじめに Androidアプリの安全な実装について、 前回は「(1) 他アプリからのAndroidコンポーネントの不正利用の脆弱性」について解説しました。引き続き、今回は「(2) ファイルからの情報漏洩」について解説していきます。 Androidアプリの構成要素とセキュリティリスクの発生箇所の対応関係 脆弱性と対策の概要 Androidアプリの […]

2013/09/06

Androidアプリ実装におけるセキュリティ(1) – Androidコンポーネント編 -

本記事ではアプリレイヤの、その中でもネイティブアプリを対象としたセキュリティについて解説します。 はじめに Androidのセキュリティについて考える際は、脆弱性が生じるレイヤであったり、対策を講じるレイヤをきちんと意識することが重要です。大雑把に分類すると、カーネルとミドルウェア、そしてアプリの3つのレイヤがあります。本記事ではアプリレイヤの、その中でもネイティブアプリを対象としたセキュリティについて解説します。 なお本記事で用いる用 […]

2013/09/06

試して学ぶ Backbone.js入門4

Backbone.jsのアプリケーションの画面表示周りを制御するBackbone.View(以降、View)について説明します。 はじめに 前回の「試して学ぶ Backbone.js入門3」 では、Backbone.jsによるアプリケーションのアーキテクチャを決定づけるBackbone.Eventsについて説明しました。 今回はアプリケーションの画面表示周りを制御するBackbone.View(以降、View)について説明します。 今回 […]

2013/08/19

Androidアプリセキュリティ〜WebViewの注意点(1)〜

多くのアプリケーションで使用されているWebViewの脆弱性や取り扱う場合の注意点などを解説します。 WebViewとその脆弱性とは WebViewとはWebページを表示するための画面部品です。簡単にアプリケーション内にWebページを表示できるため多くのアプリケーションで使用されていますが、外部とのインタフェースを持つ機能であることや使用頻度が多いことに起因してか報告されている脆弱性の数も多くなっています。 実際に報告された脆弱性を見て […]

2013/08/19

試して学ぶ Backbone.js入門3

Backbone.jsによるアプリケーションのアーキテクチャを決定づけるBackbone.Eventsについて説明します。 はじめに 前回の「試して学ぶ Backbone.js入門2」ではBackbone.jsの中心となるModelとCollectionの非同期RESTful JSONインタフェースについて説明しました。 今回はBackbone.jsによるアプリケーションのアーキテクチャを決定づけるBackbone.Eventsについて […]

2013/06/06

試して学ぶ Backbone.js入門5

Backbone.jsの最終回の今回は、Backbone.Router(以降、Router)について説明します。 はじめに 前回の「試して学ぶ Backbone.js入門4」 では実際に動くアプリケーションを作成しながらBackbone.Viewについて説明しました。 今回は本連載も最終回となり、Backbone.Router(以降、Router)について説明します。 今回のソースの全体はこちらで確認することができます。 Backbon […]

2013/06/04

試して学ぶ Backbone.js入門2

Backbone.jsの優れた機能である非同期RESTful JSONインタフェースによる永続化について説明します。 はじめに 前回の「試して学ぶ Backbone.js入門1」では、Backbone.jsの中心となるModelとCollectionについて、その基本的な利用方法を説明しました。今回はBackbone.jsの優れた機能である非同期RESTful JSONインタフェースによる永続化について説明します。 今回のソースの全体は […]

2013/03/29

Androidアプリセキュリティ 〜Webサイト閲覧でroot権限を取得されてしまう脆弱性(1)〜

Androidのブラウザ(図中ではWebkitと記載)の脆弱性を利用して相手の端末の管理者権限を取得されてしまうのはどういった仕組みで起きるのかについて解説します。 「○○○の脆弱性により任意のコードが実行される可能性があります」といった文章を一度は見たことがあると思います。 しかし、実際にどのような流れで任意のコードが実行されるのか?読者の皆さんはイメージできるでしょうか? 今回説明するのは、Androidのブラウザ(図中ではWebk […]

2013/03/15

Raphaël入門2 (Raphaëlを使って動きのある図を作る)

Raphaëlを使って、動きのある画面を作っていきます。 概要 前回のRaphaël入門では、Raphaëlの初歩的な使い方を説明しましたが、今回はRaphaëlを使って、動きのある画面を作っていきます。 図形の移動とサイズ変更 作成した図形を移動させる方法について説明します。 SVGでは、タグ内の属性値を変更することで、描画した内容を変更することができます。 しかし、SVGデータの値を変更することは、複雑な計算を行う必要があるため、容 […]

2013/03/15

試して学ぶ Backbone.js入門

Backbone.jsはJavaScript MVCフレームワークの1つです。Backbone.jsの概要から、インストール方法、Modelの基本を説明していきます。 はじめに Backbone.jsはJavaScript MVCフレームワークの1つです。Backbone.jsはその名が示す通り、Webアプリケーションにアーキテクチャという背骨を提供することを目的としたライブラリです。直ぐに複雑なスパゲッティコードになりがちなWebアプ […]

2013/02/28

Webサービスの性能テスト 基礎編その2

性能テストに関する話題と、負荷テスト、ストレステストに関しての、実施上の注意点についてご紹介いたします。 概要 「Webサービスの性能テスト 基礎編その1」で、紹介しきれなかった性能テストに関する話題と、負荷テスト、ストレステストに関しての、実施上の注意点についてご紹介いたします。 性能テストの追加事項 「Webサービスの性能テスト 基礎編その1」の記事では、比較的によくあると思われるWebシステムを単純化して、性能テストを実施するうえ […]

2013/02/28

ユニットテストを学ぶための推薦図書

このトピックではユニットテストの学習に有用な書籍をいくつかのカテゴリごとに紹介していきます。 1. 基礎を学ぶ まず最初にユニットテストの基本的なトピックを扱う書籍を紹介します。 「JUnit実践入門 … このトピックではユニットテストの学習に有用な書籍をいくつかのカテゴリごとに紹介していきます。 1. 基礎を学ぶ まず最初にユニットテストの基本的なトピックを扱う書籍を紹介します。 「JUnit実践入門 ~体系的に学ぶユニットテストの技 […]

2013/02/25

Webサービスの性能テスト 基礎編その1

性能テストと一般に呼ばれるテストについての基本事項の説明と、それと混同やすい負荷テスト、ストレステストなどの違いの説明、および実際に性能テストを実施するうえで考慮するべき点について、ご紹介いたします。 概要 性能テストと一般に呼ばれるテストについての基本事項の説明と、それと混同やすい負荷テスト、ストレステストなどの違いの説明、および実際に性能テストを実施するうえで考慮するべき点について、ご紹介いたします。 性能テストとは? 本記事を読ま […]

2013/02/22

Androidアプリの検証コストを最小化するテクニック

Androidアプリ開発において、みなさんは、開発端末と検証端末をどのような基準で選定してますでしょうか? 個人開発者の多くの方は、ご自分で保有している端末のみで検証していると思います。 一方、会社の … Androidアプリ開発において、みなさんは、開発端末と検証端末をどのような基準で選定してますでしょうか? 個人開発者の多くの方は、ご自分で保有している端末のみで検証していると思います。 一方、会社の業務としてアプリを開発している場合 […]

2013/02/22

JavaScriptによるSVG描画 – Raphael(入門編)

概要 Raphaëlは、SVG,VML技術を利用してベクターグラフィックスを簡単に作成することができるJavaScriptの軽量ライブラリです。 SVG(およびVML)はXMLで記述されるテキストデー … 概要 Raphaëlは、SVG,VML技術を利用してベクターグラフィックスを簡単に作成することができるJavaScriptの軽量ライブラリです。 SVG(およびVML)はXMLで記述されるテキストデータであるため、HTML/XHTML […]

2013/01/23

テスト設計技法の紹介(2):削減型・標的型のブラックボックス型技法

削減型・標的型のブラックボックステスト技法を紹介します。 前回はテスト設計技法の導入として、技法の分類について解説をしました。今回から4回分は具体的な各技法の解説を行います。まず初回は削減型・標的型のブラックボックステスト技法を紹介します。 1. 紹介する技法 今回紹介する技法の名前と分類、概要を以下に挙げます。 同値分割法 境界値分析 All-pair法 分類 削減型のブラックボックステスト技法 標的型のブラックボックステスト技法 削 […]

2013/01/23

BTS構築、運用入門

システム開発では、必ず発生するバグと呼ばれる現象。これを管理するツールとは、どういったことができるのか? そして、そのバグ管理ツールを導入するにあたって、考慮すべきポイントは何かを、わかりやすくご紹介します バグ管理の現状 システム開発を行う場合には、他の記事に記載されているような、さまざまなテストを実施して、システムが期待された機能通りに動作しているか確認する必要があります。 残念ながら、予定されたすべてのテストで、システムが常に期待 […]

2013/01/15

テスト駆動開発の基礎

テストを活用した開発手法の一つ、テスト駆動開発について学習します。ここではテスト駆動開発の基本的な流れや目的、環境について扱います。 テストを活用した開発手法の一つ、テスト駆動開発について学習します。ここではテスト駆動開発の基本的な流れや目的、環境について扱います。 1. テスト駆動開発とは テスト駆動開発(TDD)とは、テストファーストによって開発を進める開発手法です。アジャイル宣言で有名なケント・ベックが手法としてまとめ生まれたもの […]

2013/01/15

テスト設計技法の紹介(1):技法の種類と分類

「テスト設計」作業に用いられるテスト設計技法の概要と開設を行います。 以前の記事にて、テストプロセスの解説をし、どのようなテストの作業があるのかを示しました。今回からは、その中の「テスト設計」作業に用いられるテスト設計技法を解説します。全5回の解説の初回となる今回はどのような技法があるのかを紹介し、以降の紹介で具体的な技法の解説を行います。 1.技法の分類 具体的なテスト設計技法の話に入る前に、まずは技法の分類について考えます。テスト設 […]

2012/11/12

Jenkinsチュートリアル初級編

継続的インテグレーション(CI:Continuous Integration)を強力にサポートするツール 「Jenkins」 の機能や操作方法について解説していきます。今回は導入から簡単なジョブを実行するまでの初級編です。 はじめに 本記事 「Jenkinsチュートリアル」 では、継続的インテグレーション(CI:Continuous Integration)を強力にサポートするツール 「Jenkins」 の機能や、特に操作方法に焦点を当 […]

2012/11/12

継続的インテグレーション入門

ソフトウェア開発におけるQCDを高い次元で満足させるための手法の一つである、継続的インテグレーション(Continuous Integration)について学習します。 システム開発における課題 最近のシステム開発において、最も求められていることはなんでしょうか? 以前から、QCD(品質、コスト、納期)といわれていますが、この三つを同時に満足することが困難であることは、ご存知かと思います。 品質を上げるためにはテストを十分に行う必要があ […]

2012/11/12

システムテストの基礎

システム開発の最終フェーズで実施されることが多いシステムテストは、開発早期から実施すれば開発後期でのシステム修正コストを抑え、システムの品質を向上させることができます。システムテストでの実施内容と、開発の早期から計画的に実施していくことの重要性を学習します。 システムテストとは システムテストとは、どのようなテストなのでしょうか。一般的に読者の方々が持っているイメージは以下のようなものではないでしょうか。 開発の最終フェーズで行うテスト […]

2012/11/12

結合テストの基礎

結合テストとシステムテストとの違い、結合テストの目的とそのテスト範囲について学習します。 結合テスト、統合テストとは 結合テスト、統合テストは組織やチームなどによって名称が異なりますが、 「結合テスト」 「統合テスト」 「連結テスト」 「インターフェーステスト」 「インテグレーションテスト」 「サブシステムテスト」 「コンポーネント統合テスト」 「システム統合テスト」 などと呼ばれるものの総称です。 組織によってさまざまな実施形態がある […]

2012/11/12

ユニットテストの基礎

ソフトウェア開発の現場で広く実施されているユニットテストについて、その目的、メリット・デメリットを踏まえた効果的な実施方法について学習します。 1. ユニットテストとは ユニットテスト(単体テスト)は広い意味で使われるようになっている言葉です。 まず、伝統的には、ユニットテストはテストレベルのひとつであり、「個々のユニットを対象とするテスト」としばしば定義されます(例えばJSTQB用語集[JSTQB-glossary.V2.0.J02] […]

2012/11/12

ソフトウェアテストの基礎:テストプロセス

テストプロセスの各工程とその作業内容、各作業における注意点等について学習します。 前回はソフトウェアテストを扱う際の心得ということで、まずソフトウェアテストの7原則について紹介しました。これらの心得をしっかりと念に置いたうえで、テストの基礎について学習していきましょう。さて、一般的に「テスト」というと、対象となるシステムを打鍵しながら結果を確認する「テスト実行」を意味することが多いと思います。しかし、実際には他にもテストに関する作業はさ […]

2012/11/12

継続的デリバリーへ

継続的インテグレーションをさらに発展させ、顧客に対する最終リリースまでを見据えた継続的デリバリーを目指す取り組み方について学習します。 リリースの問題点 ソフトウエア開発は何のために行うのでしょうか? 開発することが目的ですか? お客様に価値を提供する作業の一つが開発ですが、それだけでお客様に価値を提供できますか? 当然のことですが、開発したシステムは、本番環境にリリースして、運用ができるようになって、お客様に実際に使っていただいて、は […]

2012/11/12

NTTドコモ主要端末情報

NTTドコモから販売されている主要なスマートホン端末の一覧情報です。 NTTドコモから販売されている主要なAndroid端末の一覧情報です(2013年1月9日現在) 発売日 機種名 メーカー Android 解像度 CPUチップ 周 波 数 [GHz] コ ア 数 RAM [MB] 前 面 カ メ ラ ワ ン セ グ お サ イ フ N F C 2012-12-21 ARROWS Kiss F-03E 富士通 4.0 540×960 M […]

2012/11/12

au by KDDI主要端末情報

au by KDDIから販売されている主要なスマートホン端末の一覧情報です。 au by KDDIから販売されている主要なスマートホン端末の一覧情報です(2013年1月9日現在) 発売日 機種名 メーカー Android 解像度 CPUチップ 周 波 数 [GHz] コ ア 数 RAM [MB] 前 面 カ メ ラ ワ ン セ グ お サ イ フ N F C 2012-12-09 HTC J butterfly HTL21 HTC 4. […]

2012/11/12

テスト自動化の基本原則

自動テストと手動テストとの違いを正しく理解し、どういったテストを自動化すると効果的か、どういうふうに導入していけばよいかを学習します。 自動テストへの誤った認識 現在のソフトウエア開発において、自動テストを上手に活用できるかどうかは、プロジェクト生産性を左右します。つまり、どれだけ上手に自動テストを活用できるかが、開発組織としての競合力に直結するのです。 しかしながら、自動テストという言葉が独り歩きして、まるでテストにおける「銀の弾丸」 […]

2012/11/12

SoftBank主要端末情報

SoftBankから販売されている主要なスマートホン端末の一覧情報です。 SoftBankから販売されている主要なスマートホン端末の一覧情報です(2013年1月9日現在) 発売日 機種名 メーカー Android 解像度 CPUチップ 周 波 数 [GHz] コ ア 数 RAM [MB] 前 面 カ メ ラ ワ ン セ グ お サ イ フ N F C 2012-12-21 PANTONE 6 200SH シャープ 4.0 720×128 […]

2012/11/12

その他キャリア主要端末情報

その他キャリアから販売されている主要なスマートホン端末の一覧情報です。 その他キャリアから販売されている主要なスマートホン端末の一覧情報です(2013年1月9日現在) キャリア 発売日 機種名 メーカー Android 解像度 CPUチップ 周 波 数 [GHz] コ ア 数 RAM [MB] 前 面 カ メ ラ ワ ン セ グ お サ イ フ N F C ディズニー・モバイル 2012-12-14 DM013SH シャープ 4.0 4 […]

2012/11/12

ソフトウェアテストの基礎:ソフトウェアテストの7原則

ソフトウェアテストという技術分野の持つ7つの原則「テストは欠陥があることしか示せない」「全数テストは不可能」「初期テスト」「欠陥の偏在」「殺虫剤のパラドックス」「テストは条件次第」「バグゼロ」の落とし穴」についての紹介と、それぞれの原則に対して実際に現場ではどのような対策を取れば良いのかを考察します。 ソフトウェアテストの「基礎」を考えるとき、どのようなアプローチがあるでしょうか。テストの設計、実装の「技法」を学ぶ、テストを開発する「プ […]