Bescottee苦しいときは伸びてるとき、楽なときは伸びていないとき

「Android デベロッパーラボ 東京 2011」に参加してきました。

一番のサプライズは、Docomo様から Optimas Pad のプレゼントがありました。
これを利用して、コードラボのアプリ開発体験に参加できました。

Optimus Pad L-06C

Optimus Pad L-06C



Honeycomb 3.0 のエミュレータが遅くて使い物にならないという状況もあり、実際にコードをいじってアプリを開発していくコードラボのために貸出ではなく、プレゼントということで大変ありがたいです。
ほとんどの参加者が MAC でしたが、私も含めて数名の Windows での参加者はドライバのインストールで困ったことがありました。LGからダウンロードしたドライバアプリをインストールしだだけではWindows 7 64bit版でドライバを認識させることができませんでした。問題解決は、以下のサイトで解説されていのたで、こちらを参考にしました。
大変役に立ちました。ありがとうございました。

■Optimus PadのUSBドライバ
http://www.lg.com/jp/mobile-phones/download-page/L-06C/product-info-driver.jsp

OptimusPad Lg Driver

OptimusPad Lg Driver

■Optimus PadのUSBドライバをインストールする
http://darkroid.net/archives/928

■Optimus PadのUSBドライバをインストールする その2
http://darkroid.net/archives/933

コードラボで開発したアプリは、昔懐かしい notepad アプリでした。
スマートフォン版のnotepadアプリを Fragmet Technology を利用して、2ペインのタブレット向けアプリ化するというものでした。

■当日の資料やアジェンダは以下にあります。
http://j.mp/adltokyo2011

(※)イベント中に「なぜgoogleの中の人がgoo.gl じゃなくて j.mp を使うんですか?」と質問があり、
「j.mp は後ろが自由に定義できるので利用している。それだけの理由です。」というやりとりがありました。

■当日のQ&Aは、以下の moderator にあります。
https://www.google.com/moderator/#16/e=954eb

Honeycomb タブレットアプリ開発に参考になるリンクは以下です。

■ドキュメント系
Android 3.0 Platformの紹介
Optimizing Apps for Android 3.0(タブレット)向けのアプリ最適化

■Google I/O 2011 セミナー動画、プレゼンテーション資料
Honeycomb ハイライト
Android Protips: さらに発展したトピック。。。
スマートフォンとタブレット向けのUIデザインについて
開発者向けのAndroidマーケット

■参考になるサンプルプログラム
Google I/O 2011 スケジュールアプリ
– セッション内容や参加会社情報などが見えるアプリ
Photo Album (xlarge-demos)
Honeycomb ギャラリー(Android SDKにソースコードがあります)



googleのAndroid開発者向け ブログに「Memory Analysis for Android Applications」という記事があったため、自分のために訳しました。参考になれば幸いです。本エントリを見るうえで、eclipse の基本的な使い方を理解している必要があります。

Androidアプリのメモリ解析手法

Dalvikランタイムは、ガベージコレクトしてくれるかもしれませんが、それはメモリ管理を行わなくてもよいというわけではありません。モバイル端末上でのメモリ利用状況は特に注意を払わなければなりません。本投稿では、開発するアプリのメモリ利用状況の把握を支援する Android SDK で提供しているメモリプロファイリングツール群のいくつかを紹介させて頂きます。

メモリ利用時の問題はいくつか明らかになっています。例えば、もしあなたのアプリがユーザの画面タッチ操作のたびにメモリリークするとすると、最終的には OutOfMemoryError のきっかけになる可能性が高いでしょう。他の問題はもっと複雑で、(あなたのアプリがガベージコレクトが頻繁に発生し、かつ長い時間発生すると)そのアプリと全体のシステムの両方のパフォーマンスを下げる原因になるかもしれません。

解析・分析のためのツール

Android SDK はアプリのメモリ利用状況をプロファイリングする手法として、2つの方法を提供します。DDMSの”Allocation Tracker”タブとヒープダンプです(heap dums)。Allocation Tracker は、与えられた時間間隔の中で発生しているメモリ割り当ての種類を知りたいときに便利です。Allocation Trackerについてもっと情報が必要な場合は、Tracking Memory Allocations を見てください。
しかし、それらはアプリケーションヒープの概要の状態に関する情報しか提供されません。本投稿の趣旨は、より強力なメモリ解析・分析のツールであるヒープの表示(dump)にフォーカスをあてていく予定です。

ヒープダンプは、HPROF と言われているバイナリフォーマットの形式で保存されるスナップショット(ある瞬間の情報(点としての情報))です。Dalvik は似たようなフォーマットを利用しますが、java の HPROF Toolとまったく同じではありません。実行中のAndroidアプリのヒープダンプを生成するいくつかの方法があります。1つは DDMS の HPROF ファイルに保存する機能です。もし、あなたがもっと正確にダンプを作成したいときはandroid.os.Debug.dumpHprofData() メソッドを利用してプログラム上からヒープダンプを作成することもできます。

ヒープダンプを解析するために、jhatEclipse Memory Analyzer (MAT)のような一般的なツールも利用できます。
しなしながら、最初に .hprof(拡張子)ファイルを Dalvik フォーマットから J2SE HPROF フォーマットに変換する必要がでてきます。
そのためにAndroid SDK の中で提供されている hprof-conv ツールを利用できます。

たとえば、

hprof-conv dump.hprof converted-dump.hprof

というコマンドで実行できます。

例:メモリリークをデバッグする

Dalvikランタイムの中で、プログラマは明示的にフリーなメモリを割り当てることはできません、そのため C や C++ の言語のように本当にメモリがリークしているかどうかを知ることができません。

ソースコード上にある”メモリリーク”は、不必要に長い間オブジェクトを参照し続けた場合に発生します。たまに 単一参照(single reference)は、大きな(大量な)オブジェクト群のガベージコレクタの実行を妨げることができます。

Android SDKの中にある Honeycomb の Gallary Sample アプリを利用して、実例を用いて理解していきましょう。これは新しいHoneycomb API群のいくつかの使い方を知るためのシンプルな写真閲覧アプリです。

ビルド方法とサンプルコードのダウンロード方法は、手順書(Android 開発者サイトのサンプルの取得方法)をご覧ください。

どのようにデバッグできるかの手法を紹介するためにこのアプリに故意にメモリリークを追加しました。


ネットワーク上から画像を取得するために、このアプリを修正したいと考えてみてください。よりレスポンスをよくするために、最近閲覧した画像を保持するキャッシュの実装を決めたとします。 ContentFragmen.java ファイルにいくつかの小さな変更を行ってみましょう。クラスの上部に新しいスタティック変数を追加しましょう。

private static HashMap<String,Bitmap> sBitmapCache = new HashMap<String,Bitmap>();

これは、ネットワークからロードするビットマップ群のキャッシュです。続いて updateContentAndRecycleBitmap() メソッドをネットワークからロードする前にキャッシュに存在するかどうかの確認を行うために変更し、ロード後にキャッシュにビットマップを追加します。

    void updateContentAndRecycleBitmap(int category, int position) {
        if (mCurrentActionMode != null) {
            mCurrentActionMode.finish();
        }

        // 描画するためのビットマップを取得し、ImageViewを更新

        // キャッシュにビットマップが存在するかどうかを確認
        String bitmapId = "" + category + "." + position;
        mBitmap = sBitmapCache.get(bitmapId);

        if (mBitmap == null) {
            // キャッシュにない場合、ビットマップをロードし、キャッシュに追加
            // 危険・注意! 常にビットマップを削除することなしにキャッシュにアイテムを追加
            mBitmap = Directory.getCategory(category).getEntry(position)
                .getBitmap(getResources());
            sBitmapCache.put(bitmapId, mBitmap);
        }
        ((ImageView) getView().findViewById(R.id.image)).setImageBitmap(mBitmap);
    }

私はここで故意にいれたメモリリークを紹介します。常にキャッシュを削除することなしに ビットマップをキャッシュに追加します。実際にアプリでこのような実装する場合は、いくつかの方法でキャッシュサイズに制限をかけたいを考えるでしょう。

DDMSを利用してヒープの利用状況を確認

Dalvik Debug Monitor Server (DDMS) は、主要なAndroidデバッグツールの1つです。DDMSは ADT Eclupse プラグインの一部で、単体動作版はAndroid SDKの tools/ ディレクトリの中にあります。DDMSに関する情報をもっと知りたい場合は、DDMSを利用してみましょう。

それでは、このアプリのヒープ利用状況を確認するためにDDMSを利用しましょう。DDMSを起動する方法は2つあり、そのどちらでも起動できます。

  • Eclipse上からメニューバーを以下の順序で選択する方法

Windows > Open Perspective > Other … > DDMS

  • コマンドライン上から tools/ ディレクトリの中にある ddms を起動する。

(追記:Windowsの場合は、ddms.bat が起動され、Mac/Linux の場合は、ddmsが起動される。(それぞれに PATH を通している必要があります))

左のパネルからcom.example.android.hcgalleryプロセスを選択して、ツールバー上の”Show heap updates”ボタンをクリックします。
それから DDMS の VM Heap タブに切り替えます。

ヒープメモリ利用状況について GC毎に更新されるいくつかの基本情報が見れます。最初の更新を行うために、”Cause GC”ボタンをクリックします。

我々は live setという(割り当てメモリ列)8MBを少し超えるものをみることができます。サンプルアプリの写真をフリックすると、数字が増加していくのが見れます。このアプリは13枚の写真しかありませんが、リークしたメモリの容量が割り当てられていきます。このような場合リークの最悪のパターンが訪れます。しかしながら我々は決して リークすることにより OutOfMemoryError を起こしてはいけません。

ヒープダンプ(heap dumps)を作成

問題を追うためにヒープダンプを作ってみましょう。DDMSツールバーのDump HPRPF fileボタンをクリックして、保存場所を選択して、それから hprof-conv でコンバートしてください。この例では、MAT(Ver 1.0.1)のスタンドアローンバージョン(Stand alone version)を利用しています。これはMATダウンロードサイトで提供されています。

もし、ADT(DDMSのプラグインの親元)が実行している場合や Eclipse に MAT がインストールされている場合は、”dump HPROF”ボタンを押すと自動的にコンバート(hprof-convを実行)してくれ、Eclipse内(MATでオープンされる)で変換された hprof ファイルを開いてくれます。

MATを利用したヒープダンプの解析・分析

MATを実行し、いま先ほど作成したコンバート済みの HPROF ファイルをロードしてください。(上記のように必要なツールがインストールされていれば、自動的にコンバートとMAT起動を行ってくれます)。MATは強力なツールですべての機能を説明するためには本投稿の範囲を超えてしまいます。そのためいまはリークを発見するために利用する1つの方法として、Histogram View(ヒストグラムビュー)を紹介します。ヒストグラムビューはインスタンスの数でソートされたクラスのリストと表面上のヒープ(表層ヒープ:shallow heap)(すべてのインスタンスで利用しているメモリの総合計)と保持されたヒープ(保持ヒープ:retained heap)(他のオブジェクトへの参照をもっているオブジェクトを含めたすべてのインスタンスで生きているメモリの総合計)を表示します。

もし shallow heap でソートすれば、byte配列のインスタンスが上部に表示されます。Android 3.0(ハニカム)の場合、ビットマップオブジェクトのピクセルデータは byte配列に保存されます。(以前は Dalvik heap に保存されませんでした)
そして、それらのオブジェクトのサイズを参考にして、メモリリークしたビットマップのための裏にあるメモリだと賭けても(bet)あっている(safe)でしょう。

byte[] クラス上で右クリックで押して、
List Objects → incoming references
を選択します。これは、ヒープの中に byte 配列のすべてをリストで表示したもので、Shallow Heapの利用状況をベースにソートすることのできます。

大きなオブジェクトの一つを選び、ドリルダウンしていきましょう。これは、オブジェクトのrootからの path を見せてくれます。生存しているオブジェクト参照のつながりを表しています。ほら、我々のビットマップキャッシュがありますね。

MATはこれがリークかどうかを教えてはくれません。なぜなら、それが必要なものか、そうでないかがわからないためです。それはプログラマのみができることなのです。今回の場合、キャッシュは比較的アプリの休憩中(ユーザが操作していない場合)にメモリの大きな容量を使っています。そのためキャッシュのサイズの上限を検討しないといけません。

MATでヒープダンプを比較

メモリリークをデバッグしているとき、2つの異なったポイントのヒープ利用状況を比較すると、とても有益です。それを行うために、2つの異なる HPRPOF ファイルを作成する必要があります。(hprof-convを使ってコンバートは忘れずに!)

では、ここでどうやって MAT で2つのヒープダンプを比較すればよいかをお伝えします。(少し重ねればよいのです)

  1. 最初のHPROFファイルを開く(Fie > Open Heap Dump)
  2. ヒストグラムビュー(Histogram view)を開く
  3. Navigation History view(eclipe のメニューのWindow > Navigation History。なければ Window > Other… > Memory Analyzer Views < Navigation Historyで選択)の中の histogram を選択し、右クリックして「Add to Compare Basket」を選ぶ
  4. 2つ目の HPROF ファイルをステップ2と3を繰り返してください
  5. 「Compare Basket view」に切り替えて、Compare the Results(Compare Basket viewの上部の右上にある赤い!アイコン)をクリック

結論

本投稿ではどのように allocation Tracker と ヒープダンプ(heap dumps)はアプリのメモリ利用状況のよりより見え方・感じ方を得るための方法を紹介しました。私はまた どのよに Eclipse Memory Analyzer(MAT) がアプリのメモリリークを追う方法を紹介しました。MATは強力なツールであり、私もこのツールで何ができるかの表面しか紹介しませんでした。

もしあなたがよりもっと学びたいとお考えなら、以下のURLのいくつかを読むことをお勧めします。

メモリリークを避けるためにお薦め本

Effective Java 第2版

まだお持ちでないなら、メモリリークを避けるためにも必読です。

増補改訂版Java言語で学ぶデザインパターン入門

先人の知恵であるパターンを利用することによって大幅にメモリリークを避けられるようになります。

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編

マルチスレッド環境ではメモリリークが発生しやすくなります。マルチスレッドを扱う場合は必読です。


ソフトバンク様より連絡があり、以下のアプリ紹介ページで「あげる」アプリを取り上げて頂きました。

■ソフトバンク様のおすすめアプリ情報ページ
http://ent.mb.softbank.jp/promotion/constant/

■「あげる」アプリ紹介ページ
http://ent.mb.softbank.jp/promotion/appli/indivisual/appli_1174/index.html

まだまだおサイフケーター搭載Android機器は少く、さらにpush通信を使ったアプリは認知度が低いのですが、このように一歩ずつでもユーザに知ってもらえる機会が増えてくれればと思っています。

最近、Titanium Mobile に注目が集まっています。
http://developer.appcelerator.com/

スマートフォンという携帯のカテゴリが一般に認知されてきて、様々な雑誌やテレビでスマートフォンがあればこんなに便利という話を見ない日はありません。ただ一言でスマートフォンというと簡単なのですが、詳しく中身を見てみると、iPhoneやAndroidやBlackBerryやWindows Phone 7 といったOSの違いがあり、それ向けにアプリを開発するとなると、それぞれに対応したPCを準備したり、プログラミング言語や各種ツールの使い方を新たに習得したりする必要があります。
それらを特に個人開発者が準備したり、習得したりするのは大変なコストをかけないといけないのですが、それを開発するものとして Titanium Mobile が注目されています。

Titanium Mobile については詳しい話は他のブログや書籍で紹介されているので、そちらに任せたいと思います。私のほうでは私のメインの開発環境である Android + Windows PC という視点で情報提供していきたいと思っています。
Titanium Mobileは iPhone と Android と BlackBerryのアプリが開発できることが大きな売りの1つなので、iPhoneアプリ開発ができない Windows PCでの開発に使う人はほとんどいないのでしょう。
それでも、私のようにまだ MAC に手を出したことがない人は多いと思いますので、情報展開していきたいと思っています。

まず最初に、環境構築時にはまったポイントを紹介します。

本家で同じ質問があがっていますが回答はついてませんでした。

Can’t INstall on Windows – Bad Image after INstall
http://developer.appcelerator.com/question/102251/cant-install-on-windows—bad-image-after-install

症状としては、Titanium Developer インストール後のTitanium Developer起動時に以下のようなエラーが発生して、Titanium Developer が起動せず開発ができないというものです。
(正しい文章はメモっていませんでしたが、以下のようなイメージの内容です)

C:\Documents and Settings\All Users\Application Data\Titanium\modules\win32\javascript\1.0.0\javascriptmodule.dll がありません。
なんたらのイメージが異なっています

原因は、Titanium Developerがインストール時にネットから必要なファイルをダウンロードしてインストールを進めるのですが、このダウンロードがネットワーク環境の影響でうまくいかないことがあり、インストール成功後も javascriptmodule.dll が 0byteになってしまうことでした。
そのため、対策としては一度 Titanium Developer をアンインストールして(アンインストール後にC:\Documents and Settings\All Users\Application Data\Titanium\が削除されていることを確認すること。削除されていなければ、手動で削除)、ネットワークが安定的に接続されている環境で再度 Titanium Developer のインストールを行うことです。
インストール環境後は再起動し、javascriptmodule.dll が 0byte でないことが確認できれば、Titanium Developer が正しく起動すると思います。

同じ現象の方は、上記の方法で試してみてください。

iconおサイフケータイで簡単コミュニケーション「あげる」アプリ

アプリ概要

本アプリは、おサイフケータイに掲載されている Felica のpush送信機能を利用して、以下の情報を相手のケータイに送信することができます。
相手のケータイにアプリをインストールしたり、赤外線のように受信動作を行わなくても簡単に送信ができます。

アプリの使い方

現在、ブラウザで開いているウェブサイトのURLを送信できます。
URLが表示されているところを長押ししてコンテキストメニューを表示

「ページの共有」を選択

「アプリケーションを選択」から「あげる」アプリを選択。
英字から並ぶため、下のほうにあることが多いです。

カウントダウンが始まりますので、その間に相手のおサイフケータイにタッチをしてください。
送信完了すると、送信側に受信ダイアログが表示され、OKを押すと送信したウェブサイトが開きます。





その他の方法

ブラウザのメニューボタンから「その他」→「ページの共有」からでも同じことができます。



マップアプリ上で送信したい場所を選択します。
今回は、例として「六本木駅(東京)」を押します。

六本木駅の情報が表示されます。右上のボタンを押します。

この場所を共有を押すと、カウントダウンが開始され、相手にタッチすると地図情報が送信されます。
受信側は、マップアプリで六本木駅(東京)が表示されます。

youtubeの動画を選択します。

youtube動画の再生中です。

再生中にメニューボタンを押して、「共有」を選択します。

あげるアプリを選択します。
カウントダウンが始まり、相手側で同じ動画が再生されます。

その他の方法

Youtubeのトップページの動画を長押しするとコンテキストメニューが表示されます。
その中の「共有」から同じことができます。



電話帳アプリから送信したい人物を開いて、電話ボタンを押す。

アプリケーション選択画面が表示されるので、あげるアプリを選択する。
カウントダウンが開始され、電話番号を送信できます。
受信側で通話アプリが立ち上がり、通話を押してもらうと電話番号の交換ができます。

電話帳アプリから送信したい人物を開いて、メールボタンを押します。

アプリケーション選択画面が表示されるので、あげるアプリを選択します。
カウントダウンが開始され、メールアドレスを送信できます。
受信側でメールアプリを選択すれば、送信したメールアドレスが TO に入った状態で立ち上がり、そのまま送信ボタンを押してもらうと相手とメールアドレスの交換ができます。

あげるアプリのアイコン「あげる」アプリをリリースしました。

本アプリは、おサイフケータイに掲載されている Felica のpush送信機能を利用して、以下の情報を相手のケータイに送信することができます。 相手のケータイにアプリをインストールしたり、赤外線のように受信動作を行わなくても簡単に送信ができます。

  • URL の送信
  • 地図情報の送信
  • youtube動画の送信
  • 電話番号の送信
  • メールアドレスの送信

以下のQRコードからもインストール可能です。

2 Privacy Policy

admin to privacy  

English is below

アプリやサイトに掲載されている広告について

アプリやサイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net、Amazonアソシエイト)を利用しています。
このような広告配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示するため、当サイトや他サイトへのアクセスに関する情報 『Cookie』(氏名、住所、メール アドレス、電話番号は含まれません) を使用することがあります。
またGoogleアドセンスに関して、このプロセスの詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをご覧ください。

アプリやサイトが使用しているアクセス解析ツールについて

アプリやサイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。
このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。
このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。
この規約に関して、詳しくはこちらをご覧ください。

お客様の個人情報をお預かりするにあたり、以下のとおり個人情報保護方針を定め、個人情報保護の仕組みを構築します。 我々は個人情報に関する法令を遵守し、個人情報保護の重要性の認識と取組みを徹底し、個人情報の適切な取扱いと保護を推進致します。

個人情報の取得

我々は、適正に個人情報を取得いたします。

個人情報の管理

我々は、お客さまの個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス・紛失・破損・改ざん・漏洩などを防止するため、セキュリティシステムの維持・管理体制の整備・社員教育の徹底等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行ないます。

個人情報の利用目的

我々は、個人情報を以下の目的のために利用いたします。
アプリやサイトの改良・改善のため
新規サービス開発のため
上記目的のためのお客様への問い合わせのため

個人情報の第三者への開示・提供の禁止

我々は、お客さまよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、個人情報を第三者に開示いたしません。
お客さまの同意がある場合
お客さまが希望されるサービスを行なうために我々が業務を委託する業者に対して開示する場合
法令に基づき開示することが必要である場合

個人情報の安全管理

我々は、個人情報の漏えい・紛失防止のため、また正確性及び安全性確保のために、セキュリティに万全の対策を講じています。

ご本人の照会

お客さまがご本人の個人情報の照会・修正・削除などをご希望される場合には、ご本人であることを確認の上、対応させていただきます。

法令、規範の遵守と見直し

我々は、保有する個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。お客様の個人情報をお預かりするにあたり、以下のとおり個人情報保護方針を定め、個人情報保護の仕組みを構築します。
我々は個人情報に関する法令を遵守し、個人情報保護の重要性の認識と取組みを徹底し、個人情報の適切な取扱いと保護を推進致します。

————————————–

About ads on apps and sites

For applications and sites, we use a third-party advertisement service (Google Adsense, A8.net, Amazon Associate).
In order to display advertisements of products and services according to the interests of users, such advertisement distribution businesses include information “Cookie” (name, address, e-mail address, telephone number) related to access to this site and other sites We do not use it) may be used.
Please also refer to Google Adsense regarding details of this process and how to prevent such information from being used by ad serving companies.

About access analysis tools used by applications and sites

On this site, we use “Google Analytics” access analysis tool by Google.
This Google Analytics uses cookies to collect traffic data.
This traffic data is collected anonymously, it does not identify individuals.
Since this function can refuse collecting by invalidating cookie, please confirm the setting of your browser.
For details on this policy, please click here.

In keeping customer’s personal information, we will establish the personal information protection policy as follows and construct a mechanism for personal information protection.
We will comply with laws concerning personal information, thoroughly recognize and address the importance of protecting personal information and promote appropriate handling and protection of personal information.

Acquisition of personal information

We will obtain personal information properly.

Management of personal information

In order to keep customers’ personal information accurate and up to date, to prevent unauthorized access to personal information, loss, damage, alteration, leakage, etc., we maintain a security system · development system · maintain employee education We take necessary measures such as thorough thorough, implement safety measures and strictly manage personal information.

Purpose of using personal information

We will use personal information for the following purposes.
For improving and improving applications and sites
For developing new services
For inquiries to customers for the above purpose

Prohibition of disclosure and provision of personal information to third parties

We will properly manage personal information you keep from customers and will not disclose personal information to any third party unless it falls under any of the following.
When there is customer consent
When we disclose to the business entrusted to the business for the customer to do the desired service
When it is necessary to disclose based on laws and regulations

Safety management of personal information

In order to prevent the leakage / loss of personal information and to ensure accuracy and safety, we take every possible measure for security.

Referrals of the principal

If you wish to inquire, modify or delete personal information of the person himself / herself, we will confirm that you are the principal and will respond.

Compliance with laws and regulations, norms and reviews

We will comply with Japanese laws applicable to the personal information we possess, review the contents of this policy from time to time and make efforts to improve it. In keeping customer’s personal information, we will establish the personal information protection policy as follows and construct a mechanism for personal information protection.
We will comply with laws concerning personal information, thoroughly recognize and address the importance of protecting personal information and promote appropriate handling and protection of personal information.

2 サイトマップ

admin to Uncategorized