#author("2017-03-17T13:26:31+09:00","","")
#author("2017-03-17T13:26:41+09:00","","")
[[引き継ぎ]]

*アプリ検索 [#ab628030]
*アプリ検索 [#xff699e7]

**研究目的 [#g3f5a138]
**研究目的 [#e99e9b3a]

-新規アプリの普及をアプリ検索システムから支援する
-アプリを機能面で検索したいと(潜在的に)考えるユーザを支援する





**[[上西]] [#r845f232]
**[[上西]] [#xbe50e00]

-アプリ間の機能的特徴の類似性を表現できる類似スコアを取得する手法
-アプリ間の機能的特徴の差分を取得する手法

***アプローチ [#r7e91ac5]
***アプローチ [#eb82334c]

-Stigmataが抽出する標準API呼び出し列を応用
--アプリの多くはソースコードが非公開 → Stigmataなら実行可能ファイルを解析できる
-ベクトル空間モデルを利用

***やったこと [#ge38820b]
***やったこと [#t17d2e39]

-玉田先生とメール
 上西君
 
 京産大 玉田です.
 返信が遅くなり,申し訳ありません.
 
 以下のとおり,回答します.
 
 > - バースマークを抽出する際のオプションで指定する「smc」や「uc」について
 >   * それぞれどのような動作をしているのか
 
 smcやucはバースマークと呼ばれる情報です.
 バースマークとは,バイナリプログラム(ここでは,Javaクラスファイル)から取り出された
 そのクラス独自の特徴を指します.
 バースマーク本来の目的では,取り出した特徴同士を比較することで,
 ソフトウェアの盗用を発見します.
 smcやucはプログラム中の着目した場所,取り出した情報の構成方法によって名付けられたものです.
 smcはsequence of method calls, uc は used classes という名前だったりします.
 smc はその名の通り,メソッド呼び出しの順列であり,ucは対象クラスが利用する他のクラスの集合です.
 このように,smc, uc をそれぞれ,バースマーク法と呼んでいます.
 
 詳しくは以下の論文をご覧ください.
 http://search.ieice.or.jp/bin/summary.php?id=e88-d_9_2148&category=D&year=2005&lang=E&abst=
 
 > - 他にどんなオプションがあるのか(機能の抽出に役立ちそうなものなど)
 
 で,プログラム中のどのような情報に着目するかによって様々なバースマーク法が提案されています.
 Stigmataで実装されているものは,help オプションで確認できますのでご確認ください.
 
 > - 設定用xmlファイルに指定できること
 >   * <wellknownclasses>以下の<packagename>で指定する「対象とするクラスファイル」とは何なのか
 >   * 他にどんな指定ができるのか
 
 バースマークは本来,ソフトウェアの盗用を発見するための方法です.
 盗用を発見するためですので,盗用がばれないように書き換えられている可能性も考えなければいけません.
 例えば,uc では,利用する他のクラスの名前を利用しています.
 この時,ユーザが定義した名前を変更することは非常に容易ですが,システムが用意したクラスの名前を変更することは困難です.
 そこで,システムが用意したクラスの名前を wellknown-classes というタグで定義しています.
 
 詳細はあまり覚えておりませんので,src/main/java/com/github/stigmata/utils/WellknownClassManager.java
 あたりを確認してもらえれば幸いです.
 
 >   * それぞれ出力の詳しい意味(出力順や記号など)
 
 出力オプション(--format, -f)で csv を指定してください.
 1行ごとに,クラス名,ロード元,バースマーク法,に続いてバースマークの要素が続きます.
 コンマで区切った時に,最初3つの要素はメタ情報で,4つ目の要素以降が実際のバースマークの情報です.
 
 何か疑問点などありましたら,またお聞きください.
 よろしくお願いします.
 
 > 2016年8月31日 16:02 Uenishi Tatsuya <s181007@center.wakayama-u.ac.jp>:
 > 京都産業大学 玉田先生,
 > CC: 大平先生,
 > 
 > 突然のメールにて失礼いたします.和歌山大学の上西と申します.
 > 
 > 私はエンドユーザー向けに機能に基づいたアプリ検索システムを研究しているのですが,
 > その過程で玉田先生のStigmataに興味を持ちました.
 > 以前前田欣耶先輩がお世話になったということで前田先輩から引き継いだ情報もあるのですが,
 > 今回さらに詳しくお聞きしたいと思っている次第です.
 > 
 > 以下が現在私が先輩から引き継いで理解していること,実行したことです.
 > 
 > - リポジトリはgithub.com/tamada/stigmataにある
 > - Mavenを用いてjarを作成し,コマンドラインで利用する
 > - バースマークを抽出する際は「extract」を指定
 > - バースマークを抽出する際はオプションとして「-b」か「--birthmark」を指定し,直後に「smc」か「uc」を指定
 >   * smc : methodごとのバースマーク
 >   * uc : classごとのバースマーク
 > - コマンドとして「open-setting-folder」を引数に与えると設定用xmlファイルのあるフォルダが表示される
 >   * 対象とするクラスファイルを<wellknownclasses>以下の<packagename>で指定
 > - 結果は標準出力にCSV形式で出力される
 > 
 > これらは先輩から引き継いだメモから理解したことですが,その上で以下のことを疑問に思っています.
 > 
 > - バースマークを抽出する際のオプションで指定する「smc」や「uc」について
 >   * それぞれどのような動作をしているのか
 >   * それぞれ出力の詳しい意味(出力順や記号など)
 > - 他にどんなオプションがあるのか(機能の抽出に役立ちそうなものなど)
 > - 設定用xmlファイルに指定できること
 >   * <wellknownclasses>以下の<packagename>で指定する「対象とするクラスファイル」とは何なのか
 >   * 他にどんな指定ができるのか
 > 
 > 長文となり大変申し訳ございません.急ぎではありませんので,
 > お時間ございます時に上記疑問についてご教授頂ければとてもありがたいです.
 > 
 > 大変お忙しい所恐れ入りますが,どうぞよろしくお願いいたします.
 > 
 > 和歌山大学 システム工学部
 > 情報通信システム学科
 > 上西達也 (60181007)
 > Email : s181007@center.wakayama-u.ac.jp
 
 
 
 
 -- 
 Haruaki Tamada
 Faculty of Computer Science and Engineering,
 Kyoto Sangyo University
-類似度算出アルゴリズムの研究
--情報検索でよく使われる技術を調べてみた
--今回は共起行列やLSIを用いてみた
--ベクトル空間モデルの関係で相互部分空間法も検討してみたりしたが、今回はやめた
-差分算出アルゴリズムの研究
--失敗した
---クラス名を出力するだけでは直感的に機能を理解できなかった

***やり残したことなど [#da42bb35]
***やり残したことなど [#b10f4321]

-類似度算出アルゴリズムの改良
--Stigmataの出力はクラス単位でまとめられているが、メソッド単位で出力するように改造できないのか
---今のままでは順列に機能と関連のある意味がない
--word2vecなどを使えないのか
---順列に意味を見出だせたら使えそう
--難読化ツールの出力するマッピングファイルを利用できないか
---Google Play Storeなどにアプリを出品するとき、このマッピングファイルも提出するらしい
---つまり、マッピングファイルは検索システム側が持っていることを前提にできるのでは
---難読化問題を解消できるかも
-差分算出アルゴリズムの改良、提示方法の考案
--アプリの説明文やレビューは利用できないか
--難読化ツールの出力するマッピングファイルがあれば、識別子名などをキャメルケースを基に区切って利用できるのでは
-Stigmataを利用する以外のアプローチ

***参考にした資料など [#n2dd6902]
***参考にした資料 [#id8bad2e]

-卒論の参考文献を参照

***卒業論文 [#c57ca437]
***卒業論文 [#nfa3f7e3]

Bitbucketにある2016年度卒論リポジトリにPDFファイルがあります。

-https://bitbucket.org/wakayama_oss/graduation_thesis_2016(上西/tex/thesis.pdf)

***プログラム [#n2dfd19b]
***プログラム [#r6673a30]

Bitbucketにソースコードなどを置いたリポジトリがあります。

-https://bitbucket.org/s181007/lookappfeature

oss.wakayamaグループのメンバーにはRead権限を付与してあるのでクローンなどして使ってください。

詳細はREADME.mdを参照してください。


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS