2015年2月26日木曜日

マイナンバー制度をきっかけに、バイオメトリクス認証について考えてみる

みなさんこんにちは。

先日発表された新型VAIOが気になっている鷲尾です。

最近はAndroidとWindowsがデュアルブートできるタブレットが出てきていますね。
以前ASUSでもそういったものがあって、しばらく見ないと思っていたんですが、今はたくさん見かけます。VAIOもいいし、デュアルブートタブレットもいい・・・
どうしようかなと悩んでいる時が一番楽しい時間でもあるのですが。


さて、みなさん、「マイナンバー制度」って、ご存知でしょうか。ニュースで耳にしたことがあるようなないような・・という方が多いと思います。

マイナンバー制度とは「住民票を持っている人にその人専用の番号を割り当てて、社会保障や税、災害対策の分野で、個人の情報を効率的に管理しましょう」というものです。行政事務などを番号でやりとりすることが可能になるので、行政事務の効率化、行政や自治体との相互連携の円滑化といったメリットが見込めます。
また、振り当てられた番号は原則変更されませんので、一度振り当てられた番号は一生使います。今後は年金の受け取りや医療保険の申請、確定申告時などに、マイナンバーを記載することになっていくでしょう。

自分専用の番号で、いろいろな事ができるようになり、非常に便利になるマイナンバー制度ですが、ここで2つ疑問が湧きます。


1.他の国でもやっているのか、やっているのであれば問題は起きていないのだろうか
2.情報漏洩など、セキュリティ上の問題はないのか


→実は外国ではすでに複数の国が導入しています。例えばアメリカは、いち早くマイナンバー制度を導入した、言わば"マイナンバー先進国"です。(アメリカでは、ソーシャルセキュリティナンバーと呼びます)また、仕組みの呼び方は国によって様々ですが、ドイツや韓国、インドなどでも、この仕組みは導入されています。

マイナンバー制度を導入しているアメリカですが、実はIDの詐欺による問題もたくさん起きています。
例えば、"不法移民が職を見つけるためにIDを偽造"したり、"亡くなった家族になりすまして年金を受け取り続ける"といったものまで、様々です。


高度なセキュリティ技術をもかいくぐる、こういった"偽造"や"なりすまし"は、どうすれば防止できるのでしょうか。また、防止できるのであれば、どのような方法があるのでしょうか。


そこで今回は、パスワードを使った一般的なセキュリティ技術ではなく、少し趣向を凝らして、"バイオメトリクス認証"について考えてみたいと思います。

2015年2月20日金曜日

Microsoft Office MobileとDropboxとの連携

みなさまこんにちは。
東京の積雪はまだかまだかと待ち焦がれている鷲尾です。

あまりにも雪が恋しくて、雪がある地方まで旅に出ようかと企画しているほどです。


今回は少し趣向を変えまして、今話題のビジネス用アプリを紹介したいと思います。


とその前に。


今巷では「ブルーボトルコーヒー」というのが大変話題になっていますね。
1杯飲むのに4時間待ち!なんてこともあるそうで、もうお店の前は行列でごった返しています。

実はこのブルーボトルコーヒー、"コーヒー界のapple"と呼ばれているそうです。
いったい何がコーヒー界のappleなんでしょうか・・・ちょっと調べてみました。


■創設者のジェームス・フリーマンさん、はじめは自宅のガレージで始めた
自宅のガレージで始めたっていうのは、なんともいい感じですよね。きっとガレージはコーヒーのいい香りでいっぱいだったんでしょうね。

■サイズはひとつしかない
ブルーボトルコーヒーには、S・M・Lといったサイズはありません。DRIPやBRENDなど、種類は選べますが、大きさは決まっています。
確かにiPhoneも、そんなに多くのサイズは用意していないですよね。

■とにかくおいしいものを、とことん追求する姿勢
お店では、1杯1杯、手で挽いています。ジェームス・フリーマンさんは、もし機械で淹れたほうがおいしいのなら、そちらを選ぶそうです。本当においしい1杯のためにとことんこだわり、究極の1杯を求めているそうです。


"自宅のガレージで"、"究極をとことん追求する"といったところが、コーヒー界のappleと呼ばれる所以にもなっているんですね。

もう少し落ち着いたら、私も飲んでみたいです。



さて、今回はビジネスにきっと役立つアプリを紹介したいと思います。
そのアプリとはこちら!!


2015年2月18日水曜日

Fusion Tables×Google Apps Script (Webアプリケーション作成編1)

こんにちは、井下です。

個人的に冬⇒春は寒気⇒花粉のコンボで毎年苦しめられるのですが、みなさんはいかがでしょうか。
早く夏来ないかなぁ…。


前回はGoogle Apps ScriptでFusion Tables APIを利用するところまで書きましたが、
今回と次回でWebアプリケーション化を行い、それ以降は速度の検証や
マッピング機能について詳細に書いていく予定です。

実装する内容
繰り返しになりますが、前回はテーブルから"SELECT"で値を参照し、"INSERT"で値の挿入を行いました。
今回はそのWebアプリケーション化ということですが、Fusion TablesだからAPIの使い方が変わるような部分はありません。

実際のコードを以下の通りです。

fusionTableAPI.gs(サーバサイドの処理)
function doGet() {
  var output = HtmlService.createTemplateFromFile('select');
  return output.evaluate();
}

function select(){
  var tableId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
  var sql = 'SELECT name, value FROM ' + tableId;
  var res = FusionTables.Query.sql(sql);
  
  return res.rows;
}

function insert(form){
  var tableId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
  var name = form.name;
  var value = form.value;

  var sql = 'INSERT INTO ' + tableId + '(name, value) VALUES (\'' + name + '\'' + ',' + value + ')';
  var res = FusionTables.Query.sql(sql);
  
  return 'データを追加しました'
}

function getPageHtml(page){
  var output = HtmlService.createTemplateFromFile(page);
  return output.evaluate().getContent();
}

select.html("SELECT"による結果表示画面)
<script>
  function transitionPage(resultHtml) {
    var outputDiv = document.getElementById('html');
    outputDiv.innerHTML = resultHtml;
  }
  
  function onSuccess(message){
    alert(message);
  }
</script>  

<div id="html">
<h2>データ一覧</h2>
<form>
  <p><input type="button" value="データ追加" onclick="google.script.run.withSuccessHandler(transitionPage).getPageHtml('insert')"></p>
<table border=1>
<?
  var datas = select();
  for(var data in datas){
    output.append('<tr><td>' + datas[data][0] + '</td>');
    output.append('<td>' + datas[data][1] + '</td></tr>');
  }
?>
</table>
</form>
</div>

insert.html("INSERT"による入力画面)
<div id="html">
<h2>データ追加</h2>
<form>
  <p><input type="button" value="データ追加" onclick="google.script.run.withSuccessHandler(onSuccess).insert(this.parentNode)">
  <input type="button" value="データ一覧" onclick="google.script.run.withSuccessHandler(transitionPage).getPageHtml('select')"></p>
  <table border=1>
    <tr>
      <th>都市名</th>
      <th>人口</th>
    </tr>
    <tr>
      <td><input type="text" name="name"></td>
      <td><input type="text" name="value"></td>
    </tr>
  </table>
</form>
</div>

赤字、青字の部分はそれぞれ"SELECT"と"INSERT"のメソッド及び呼び出し箇所です。
特に通常のWebアプリケーションと変わりなく呼び出すことができます。

selectメソッドとinsertメソッドの中身が前回と変わっている点としては…
  • select:"select.html"で表示させやすいように、"res.rows"を返している(登録されているデータのみで構成された配列が返るようになります)
  • insert:SQL文内部で変数に対応するようになっている

若干前回と変わりはあるものの、Webアプリケーションにするうえでの表示の配慮や、変数への対応くらいの変更に収まっています。

緑字の部分は非同期で画面を切り替えるための処理を示しています。
Google Apps Scriptの難点としても挙げられますが、単純な<a href>などによる画面遷移ができないため、
ボタンをクリックされたら、対象のHTMLの情報を読み取り、中身を書き換えるようにしています。


では、画面での処理の流れを見てみましょう


select.htmlでFusion Tablesに登録されたデータを取得し、一覧表示します。
Webアプリケーションとして開いた場合、まずこの画面が開くようになっています。



上記のselect.htmlから"データ追加"をクリックすると、insert.htmlに画面が切り替わります。

入力フィールド2つに入力し、"データ追加"をクリックすることで、データが実際のFusion Tablesに入ります。


select.htmlに戻ると、先ほど入力したデータがそのまま入っています。

単純ではありますが、これでFusion TablesとGoogle Apps Scriptを用いてWebアプリケーションを作ることができました。

ただ、これでは流石に単純過ぎるので、次回もう少し機能を増やしたものを作ってみます。
例えば、自分が作ったテーブルから、参照するテーブルを選んだり、テーブル自体を作成・削除できるようにしたり…

主にFusion Tables APIの機能をもっと使ったものを作成する予定です。

2015年2月13日金曜日

Fusion Tables×Google Apps Script (Google Apps Script連携編)

こんにちは、井下です。

前回はFusion Tablesについてご紹介しましたが、
今回はGoogle Apps Scriptとの連携方法について書いていきます。

Google Apps ScriptでFusion Tablesを使う準備
Google Apps Scriptで早速Fusion Tablesを使ってバリバリ実装… と行きたいのですが、
実は現在(2015年2月)、Google Apps ScriptでFusion Tablesを使うには、
Fusion TablesのAPIを有効にしなくてはなりません。

設定は前回やったじゃないか!、と言われそうですが、前回の設定はドライブの設定です。
今回やろうとしている設定は、Google Apps Scriptの設定です。

ややこしいですが、前回の設定はドライブからFusion Tablesを作成するためで、
今回の設定はGoogle Apps ScriptからFusion Tablesを操作するために行います。


2015年2月6日金曜日

Fusion Tables×Google Apps Script (Fusion Tables利用編)

こんにちは。井下です。

寒さもそろそろ落ち着くかなと思っていましたが、東京にも雪が降ったりとまだまだ落ち着きそうにないですね。

今回は前回予告した通りにFusion Tablesについて取り上げます。

今回はFusion Tablesについての説明を主に書いていき、次回以降でGoogle Apps Scriptと連携してみようと考えています。

Fusion Tablesとは
簡単にまとめると、Googleが提供している地図情報と連携できるデータベース(正確に言うと、"データベース"はなく、テーブルでデータを管理するデータストア)です。
Googleの公式サイトでの説明はこちら

地図情報と連携できる点が特徴の1つなのですが、地図と連携せずにすぐに使えるデータベースとしても利用できます。

Googleから連携可能としているGoogleサービスは以下の4つです。
  • Maps API(地図情報の利用)
  • Chart Tools API(グラフの作成)
  • Google Drive Web APIs(Googleドライブの操作)
  • Google Apps Script
データベースということで、データの取得や保存もスプレッドシートよりも早いことも期待できますね。
スプレッドシートと比較して、どれくらい早くなるのかも検証しようと思います。


注意点としては、2015/2時点では試験運用として公開されているため、仕様が急激に変わる、制限がきつくなるなどが考えられます。

とはいえ、すぐにデータベースが使えるようになるというのは大きいメリットです。
新人研修などでデータベースを学習したいけど、データベースの導入で手間取るリスクがある人には嬉しいところです。

現状の利用方法としては、データベースの学習用・短期間での活用が現実的なところではないでしょうか。

Fusion Tablesを利用する準備
ここからは実際にFusion Tablesを使ってみる手順について、画像を交えて説明していきます。


2015年2月4日水曜日

【本の紹介】 アジャイルサムライ



こんにちは。

最近、実は土日2日間合わせて24時間しかないのではないかと思い始めている鷲尾です。

みなさん週末はいかがお過ごしでしたか?
私は越谷レイクタウンの巨大イオンで迷子になりながら、ビュッフェを食べていました。

前回ご紹介したリーンスタートアップは、アイデアを【構築】し、「この機能は必要とされているだろう」という仮説のもと作成した試作品(MVP:実用最小限の製品)を使ってもらいながら、製品へのフィードバックを【計測】し、次にどうするべきかを【学習】していくというものでした。


今回ご紹介する本はこちら ⇒

アジャイルサムライ
ジョナサン・ラスマセン (著)
です。


本書ではアジャイルのあるべき姿から、実務にアジャイルを取り入れるとき、何からすればいいのかというところまで、わかりやすい図やイラストで解説しています。
すらすらと読めてしまいますので、アジャイルに興味のある方、アジャイルで開発をしたい方、アジャイルに興味はあるけど難しそうで・・・ という方はぜひ読んでみてください。アジャイルを知るためにはうってつけの一冊だと思います。

その中でも私が実務を通して特に重要さを痛感した「タイムボックス」という考え方を、今回はご紹介したいと思います。