よしたかのぶろぐ

田舎の大学院を卒業し都会でもまれる話

ng-japan2018の備忘録

6月16日に開催されたng-japanの備忘録です.
完全にメモですので,こちらも公式サイトを参照ください.

ngjapan.org

2018/06/16

angular基調講演

  • stability + innovation

$ng update my-cool-library

creating ng-update schematics new generate update add

$ng new my-app

material installs dependencies in packege.json inmport Appmodule

$ng generate

ng add is suppert ng-bootstrap clarity and more...

$ng generate library my-library

Tree shakeble providers

@NgModule({
    my-camp
    something
    ...
});

image alt

Angular Element

  • nasted tree DOM
    • <mat-tree>
  • Form Field
    • standard from field
    • fill form field
    • outline form feild
  • Table
  • Badge Bottom Sheet
  • Angular Matrial
    • 130 bug fixes!

Future

  • Project Ivy
    • ng teamが取り組む新しいprojet
  • CDK https://material.angular.io/cdk
    • listbox&combobox
    • Datepicker
    • Slider
  • keeping up to date with Material Design ←awesome
  • Virtural Scrolling
    • <csk-virtural-scroll-viewpoint autosize>

AngularでPWAを進める

翻訳コミッタの人 @studioteatwo mobileよりの機能実装紹介

PWAとは

Progressive Web Apps PWA = モバイルのWEBページでネイティブアプリのようなUXを提供するためのもの @angular/pwa

webブラウザとモバイルの一覧性の違い

  • add to homescreen
    • hedder futterなくなる(mobile)
    • 一発でページ表示
  • push Notification
  • キャッシュリソースはjsonで指定
    • ng build で更新
  • CacheFirst
  • NetworkFirst
    • strategy

      Feature

  • まずは"better web app"
    • serviceworkerをひっそりbackgroudで動かすだけで恩恵あるらしい
    • "Extensibe"
  • fullcriant appからmashup
  • オフラインアプリの可能性
  • PWAでボリュームをカバーできるのでは
    • webはネイティブより一段高い中小層

Angular活用実績から、ハマり事例のご紹介

NRIでの大規模プロジェクト開発おいての事例 - 1pxずれてクライアント不具合報告 - AngularJS中心

役割分担の失敗

主力はjava フロントエンドの不足 PL/BLの疎結合

PL重要度に沿ったフロント人員

迷子の開発者

データの受け渡しどうしよう クライント要件に対する方法が決まっていないせいで設計が進まない

標準化ルール * 処理方式 * 画面遷移パターン * チェックタイミング

→ 誰が作っても同じ構成などのメリット

こんなに?くらいの標準化がみんなのためになる

オフショア開発

  • 中国なら100人単位で動員できる
  • オフショアの教育
    • 対面で伝えられる人数10人
    • 声の届く範囲
  • 雪だるま式教育法
    • Angular研修を作り
    • リーダーに持っていってもらう
    • 独自チュートリアルに開発の注意点を織り交ぜるなど

メモリリークとの戦い

ex. 車の故障をコールセンタ介してレッカー調達

コールセンタは常にページを立ち上げている 2.5hで1gbの消費メモリ(動作に影響)←ヤバそう

  • SPA分割
    • 一連の業務完了で再読込
    • リークしそうな箇所は局所化
    • 共通部品(開発者に使わせない) cf. DOMリーク

標準化と地道なつぶしこみが重要

How we are using Angular + Firebase at NHK leading to the Olympics

Action INDEX shibuya 360° streaming AR(sportをrealtimeで表現) patent power

archtecture peek @NHK

  • using Firebase + NHK
  • using Cloud Fire Store + NHK
  • セキュリティに厳しいNHK →インフラを別のところに持った
  • cloud functionを使うことでリモートに操作できる
  • リアクティブな構成を保ったままdata bining,jsonをupload <sFTP>
  • why Cloud Firebase?
    • So many Query

Realtime Data in XR

  • VR,AR,MRの違い
  • XR
    • VR,AR,MRを一つにまとめた言葉
    • Latency.
      • 20ms over 5G(2ms)標準化されたの?!at 6/15
    • webVR
  • Everything is Component
  • 突然の終了

plantUML componentCSS

f:id:thenocchinochi08:20180708173857j:plain

CCSE2018の備忘録

f:id:thenocchinochi08:20180708174149j:plain

CCSE2018のメモ at Meiji Univ.

機械学習系カンファレンスCCSEが明治大学中野キャンパスで開催されました.
特にブログとしてではなく,メモとして投稿します.
詳しくは公式サイトccse2018と公式twitterccse_comitee (@ccse_comitee) | Twitterを参照ください.
印象的な講演などの感想は含まれません.

「Reactive Extensionsを用いた映像機器向けモバイルアプリの制御とキャッシュ機構の簡素化手法」

IODATA所属でandroid開発

モバイルアプリ
アプリ起動からロードまで10~20秒かかっていた
ReactiveXを使った
javaでリアクティブを行うライブラリ
バイスのデータ取得失敗でキャッシュ取得

「より良い機械学習のためのアノテーション機械学習

ABEJA
アノテーション 細かい機能
教師データ作成
細かいところはブログで
アノテーションはひつようなのか
半教師あり
検証したSSL手法
モデルの出力が揺らがないように正則化を加える手法
反響しありは不安定
やはりアノテーション必要,となる
顔認証 リピータ認識
face netのデータセットを使っていた
VGGFace2が最近出た(念入りにクレンジングされている)
クリーンなアノテーション
アノテーションノイズ
model: convlarge
ノイズを検知する
EM algoによるアノテーション解析
initialise
書くアノテーターのCMを並列化
(割愛)
あのテータの制度が高ければ重複アノテーションさせるより
同じ件数のユニークなアノテーションを作ったほうがよい

「対話エージェントの積極的な介入による関係性構築の試み」

石黒教授と共同研究
複数人対話,選択式対話など
理不尽なクレームを諦めさせよう
カスタマーサポートの想定
=>複数人対話により会話をしクレーム対応する
怒るボタン,送るボタン
社会的バランス理論
味方感の演出効果
嫌がる,うざいは設計次第

「ファッション業界向けセマンティクスとコンテキストアウェアハイブリッド推薦システム」

collaborate filtering
item based recommendation
なぜhybrid recommendationか
zozo have huge date...
compositive learning algorithms
context aware recommendation
items viewed/clicked/purchased at SIMILAR CONTEXT
traditional RecSys vs context
confarence
SEMANTiCS2018@vienna(Austria)
10~13/9/2018

「錯覚で無限にまっすぐ歩ける廊下を作る Unlimited Corridor」

rekimoto lab
redirected walking
magic pot
人間の古典的感覚モデル
クロスモダリティ多感的相互作用
HMDleap motion
危機感を持たせて壁を触らせれる
自己移動感覚(ベクション)
文脈が感覚を作る
Unlimited Corridor
省スペースで大規模マップの体感

「AI Labにおける広告配信技術の研究開発について」

Response Prediction
RTB
DSP(広告主と契約していてオークションに参加)
予算を元に決済
どういう風に画像あるいはテキスト広告をだすか
「100ms」
広告表示までの時間
performanceが鍵
画像自体の情報
Logistic regression
field aware factorization machines
bandit algorithm
画像選択
表示回数やimp実績などの要素から判断
表示回数すくないもの = 探索
一番いいもの(impおおい)= 活用
活用と探索のバランスから判断
counterfactual <- problem
評価ができない,が課題
Inverse Probability Weighting
確率の約数を重み付け
出現確率の高いものを低くして評価する
LR,SVM,RFで評価比較
さらにABテストして評価

スマートフォンから遠隔操作可能なデジタルサイネージの開発とその応用」

静的ー動的ーインタラクティブインタラクティブ(個人の端末に統合)
Parraらの実験
広告に気づいた人のうち0.4%のみがCVした
public/privateの衝突
ex. 大衆の中で大型サイネージを触る
携帯端末の利用
wall shop
遠隔操作によって商品詳細をスマホから操作

「メルカリにおける画像認識の応用」

CtoCなのでデータ量膨大
SysML(システムの基盤整備)力入れいる
creating modelとsupporting MLで分ける
サーベイ時間確保
論文書く時間
データサインエンティストに対してエンジニア必要
実用例
image recognition
感動出品,出品改善,不正出品の判定
出品のフェーズにとる写真を認識
CNN(inseption v3)
generate title
category recg
brand recg
古典的な手法であるのは2ヶ月で実装するため
k8s
cluss activation mapping
色推定
use HSV
不正検知
2段階のベクターで抽出
TF-IDF
CNN
maxpool
MLP
テキストと画像のマルチモーダル学習

必読書

東京はようやく台風が過ぎ去り安堵もつかの間,再び猛暑の予感.

よしたかはノマドしようと土曜日に,気になっていたカフェ rompercicci (ロンパーチッチ) さんにふらっと向かいはじめた瞬間に豪雨遭遇.
macを抱えて慌てて中野ブロードウェイに駆け込みおやつを買い込みそそくさと帰宅.かなしい.

まだ行けずにいる rompercicciさんの情報はこちら.

tabelog.com

rompercicciさんせっかく台風でもやっていたのになぁ,来週こそ.

さて,今週のネタは特にないので最近本当の意味で必読書と感じた2冊を紹介します.
エンジニアとして入社してOJTの方から紹介された技術書です,今更紹介するのもおこがましいですしご存知の方がほとんどだと思います.

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

「リーダブルコード」はコードが自分だけ読めればよい,動けば良いという考えを正してくれます.
アプリケーションにおいてとりあえず動く,はむしろ奨励されることですがその前に知っておくべきことがたくさん載っています.
コーディングが行き詰まったときの気分転換代わりによしたかは読んでいます.

「コーディングを支える技術」はプログラミングの成り立ちから解説が始まります. 学生時代にはじめてC言語でコードを書いたとき,なぜ forwhile 文が同じような役割を持っているか,そもそも使い分けがわからなかったときのモヤモヤを解消してくれました.

どちらも特定のプログラミング言語で構成されていませんし, 大変丁寧な文章で,リーダブルコードはイラストも多く飽きてしまうことはないでしょう.
実は自分の研究室や大学の図書館でよくみかけていたのですが,ここまで早く読んでおくべきだったと後悔すると思いませんでした.
研究内容がニューラルネットワークの理論や統計,解析学を中心に学んでいたのでコーディングは二の次三の次と考えていたのかもしれません.
よくプログラミングのチュートリアルなどで「そういうもの」と飲み込んで,立ち止まる前に新しいものは俯瞰する目的とした進め方をとることがあります.
しかし,リファクタリングを後回しにしてしまいなかなか取り組まないときがあるように,正しい理由と使い方はなにを学ぶにしても土台で,後回しはだたの機会損失になることがあります.

とにかくこちらで多くを語る必要はなく,まさに”まずは読んでください”に尽きる本当の意味での必読書です.
エンジニアとしてでなく,少しでもコードに触れる機会のある方は全員読むべきです.

slackbotでポケモンガチャ作った

Why

仕事はslackメインだし学生時代の研究室メンバーと今もslackでやりとりするようになりました.
ていうか卒業したら大学のOBOGのワークスペースに強制収容され,遊び道具にも使うようになったからbot活用していきたくなりました.
そもそも会社で治安の悪いslackスタンプMEGAMOJIが横行していたので,スタンプ作って遊んでいたらポケモンスタンプ見つけてしまいました.
ポケモンは小学生のときにキモオタして以来なので,記憶は金銀あたりで止まっています.
でも最近暑くて虫取り少年スタイルで出勤しているせいか,ポケモンゲットしたくなりました(夏バテ).
詳しい導入方法は以下を参考にしました.
qiita.com

What

適当にポケモンとか投稿するとこうなりたい.

f:id:thenocchinochi08:20180722180717p:plain

slackbotガチャは下のようなワークスペースのカスタマイズ画面で簡単に設定できます.ガチャ結果(おみくじ結果)は「slackbotの返信」に入力します.

f:id:thenocchinochi08:20180722172654p:plain

ワークスペースのカスタマイズ画面

スタンプ名は :pokemon: の形に整形して同様に入力すればいいのですが,ポケモンスタンプは何十個もあって相当だるい...のでPythonで文字列加工しました.

How

きっともっとスタイリッシュなやり方があるでしょうが,仕事の片手間でやった処理を紹介します.
こうしたらよかったやん,はコメントいただけると助かります.

1. スタンプ名の取得

普通にターミナルから ls コマンドでemojiディレクトリの中身みてみた.

➜  github.com git:(master) ✗ ls slack-emoji-pokemon/emojis
abra.png       electrode.png  kingdra.png    parasect.png   sneasel.png
aerodactyl.png elekid.png     kingler.png    persian.png    snorlax.png
aipom.png      entei.png      koffing.png    phanpy.png     snubbull.png
alakazam.png   espeon.png     krabby.png     pichu.png      spearow.png
ampharos.png   exeggcute.png  lanturn.png    pidgeot.png    spinarak.png

......

多分あと10倍くらいこの png ファイルの羅列が続く.
とりあえずこの羅列をコピペして txt ファイルに保存.

2. ファイルを読み出す

保存したスタンプ名ファイルpoke.txtを読み出す.

f = open("poke.txt", "r")
raw =  f.read()
f.close()

3. 文字列の加工

読み出した文字列を加工し,変数pokelist にリストとして格納する.
このときファイル名を要素として取り出し,各要素の.pngが邪魔なので:の文字列で置換する.

pokelist = raw.replace('.png', ':').split()

変数pokelistの中身(一部)はこんな感じ.

['abra:',
 'croconaw:',
 'gastly:',
 'jynx:',
 'meowth:',
 'pikachu:',
 'seel:',
 'togepi:',
 'aerodactyl:',
 'cubone:',
....
 'pidgey:',
 'seaking:',
 'tentacruel:']

4. まだ文字列の加工

ゴールはこのカタチ:pokemon:なので,各要素の先頭の文字列に:と,最後に改行が必要. 新しくリストpokeを用意して格納する. Pythonだと文字列連結が演算子でできる.

poke = []
for i in range(len(pokelist)):
    poke.insert(i,':'+pokelist[i]+'\n')

5. ファイルに書き出す

文字列をそのままテキストファイルからコピペして「slackbotの返信」に貼り付けたい.

f = open('result_poke.txt', 'w')
f.writelines(poke)
f.close()

slackbotに登録

あとはresult_poke.txtというファイルが作成されているはずなのでこんな感じでslackbotに登録する. f:id:thenocchinochi08:20180722180420p:plain

まとめ

これで今後slackスタンプを一括大量追加しても,すぐガチャ作れます.
Pythonでそんなに難しい文字列処理することなくできました.
せっかくなのでPythonでslackbot作ろうと思います.

無題その1

おひさしぶりの.
最近連絡関係は会社から大学時代の友達にいたるまでslackで完結してしまうようになったよしたかです.
もうLINEで連絡してこないでください(嘘

冗談はさておき,とうとう学生生活を卒業し新卒というレッテルを貼られ社会進出してしまいました.
今年の春に上京し,某広告屋さんでwebエンジニアとして働きはじめました.
人生で今後もう受けることのないシンソツケンシュウや先輩エンジニアたちの出現に,学生時代と比べられないスピードで毎日を送っていました.
名刺交換や電話対応ゲキムズ(そもそも電話自体になぜか慌ててしまう習性が身についているのでニガテ).
総合職の同期たちはコミュ力おばけだらけ.
これまで機械学習系の論文を読んで数式に起こしてアァでもないコォでもないしてたので,技術研修ではweb系の知識少ないマンの自分はのびしろォ!
そんな感じであっという間の3ヶ月が経過しました.
最近やっと実務に入り,OJT制度のもと業務効率化を目的にしたwebアプリを開発しはじめました.

...とここまでみてきた景色をかいつまんでみましたが(相当ざっくり),何が言いたいかってアウトプット不足なんです.
こうして久しぶり(かなり)にブログを更新しているモチベーションの話です.
ニガテな電話対応研修では,完結に言葉でまとめることが全くできなかった.
コミュ力おばけたちからは「伝える」と「伝わる」の違いを教わりました.
なによりweb初心者の自分はわからないことがわからない(コーディング初学でよくあるアレ).
そんなことを感じ,シンプルに文章化したり考えをまとめたりする時間ほぼなかったと痛感しました.
このブログ自体も備忘録目的で始めたつもりが最初の備忘録 - よしたかのぶろぐしかなくて草しか生えない.
もはや今書いていることも読者に伝わっている文章かどうかすら謎な気持ち.

ということでこんな拙すぎる記事ですが,今後は技術系に限らず些細な所感を駄文ながら残していこうと思います.
何年後かに読んだら恥ずかしく感じるんだろうなあ.
なまあたたかい気持ちで見守っていただけると幸いです.
以上,初心表明的なやつ.

最初の備忘録

today’s trouble

備忘録,めちゃめちゃ大事だなと今更気付きましたこんにちわ.

コンピュータサイエンスにおける知能系の研究が本分,新しいもの好きな性格から中途半端にサービスを利用しては飽きの繰り返しをしがちな東北の田舎で大学院生を生業とする者です.
初めて備忘録ブログ始めたわけですが,ブログ自体は高校生から,アメブロ→zozo→tumblr→hatenaという編纂で季節のようにネット上を移りゆく.というかそもそも備忘録なのにこんな自己紹介いるのって感じ.
追々備忘録などという形式に慣れていくつもりです,どうぞお手柔らかに.

cannot use pip3

よくpythonっていう蛇さんがロゴに可愛いくてライブラリが豊富でバズるプログラミング言語を研究で利用するのですが,生きた化石のように

➜  notebooks git:(master) ✗ python -V
Python 2.7.11 :: Continuum Analytics, Inc.

で頑張っていました.こないだ後輩にバカにされました.アップグレードしました.minicondaで管理しています.

➜  notebooks git:(master) ✗ python3 -V
Python 3.5.2

3系にしてから半年経った12月.知識処理特論という授業の課題でコーパスの文字種に対するエントロピーやバイト数を求めることになりました.開発環境はipython notebookです.起動しよう.

➜  notebooks git:(master) ✗ ipython3 notebook
[TerminalIPythonApp] WARNING | Subcommand `ipython notebook` is deprecated and will be removed in future versions.
[TerminalIPythonApp] WARNING | You likely want to use `jupyter notebook` in the future
Traceback (most recent call last):
  File "/usr/local/bin/ipython3", line 11, in <module>
    sys.exit(start_ipython())
  File "/usr/local/lib/python3.5/site-packages/IPython/__init__.py", line 119, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "<decorator-gen-109>", line 2, in initialize
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/IPython/terminal/ipapp.py", line 300, in initialize
    super(TerminalIPythonApp, self).initialize(argv)
  File "<decorator-gen-7>", line 2, in initialize
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/IPython/core/application.py", line 446, in initialize
    self.parse_command_line(argv)
  File "/usr/local/lib/python3.5/site-packages/IPython/terminal/ipapp.py", line 295, in parse_command_line
    return super(TerminalIPythonApp, self).parse_command_line(argv)
  File "<decorator-gen-4>", line 2, in parse_command_line
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 514, in parse_command_line
    return self.initialize_subcommand(subc, subargv)
  File "/usr/local/lib/python3.5/site-packages/IPython/core/application.py", line 236, in initialize_subcommand
    return super(BaseIPythonApplication, self).initialize_subcommand(subc, argv)
  File "<decorator-gen-3>", line 2, in initialize_subcommand
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/traitlets/config/application.py", line 445, in initialize_subcommand
    subapp = import_item(subapp)
  File "/usr/local/lib/python3.5/site-packages/ipython_genutils/importstring.py", line 31, in import_item
    module = __import__(package, fromlist=[obj])
ImportError: No module named 'notebook'

!???????????

どうやら3系にあげてから僕はpythonと仲良くなれてなかったみたい.まだ生きた化石だった.
というわけでリファレンスあさりスタート.
以下を参照します.
pipコマンドでPython2、pip3コマンドでPython3が使われるようにしたい-stackoverflow

https://github.com/yyuu/pyenv#installation

➜  notebooks git:(master) ✗ pip install --upgrade pip
equirement already up-to-date: pip in /Users/yoshidatakayuki/miniconda2/lib/python2.7/site-packages

続いて,i wanna install pip3.

“➜  notebooks git:(master) ✗ pip3 -V
pip 8.1.2 from /usr/local/lib/python3.5/site-packages (python 3.5)”

……installed

next,i try to run “pip3”

(➜pip3 install requests)
.
.
.
   100% |████████████████████████████████| 583kB 549kB/s
Installing collected packages: requests
Successfully installed requests-2.12.3
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
➜  notebooks git:(master) ✗

whats ‘pip install –upgrade pip’ ?

➜  notebooks git:(master) ✗ pip install --upgrade pip
Requirement already up-to-date: pip in /Users/yoshidatakayuki/miniconda2/lib/python2.7/site-packages

……ignore,haha
一旦こちらも無視します.

pip3’s libraryを確認します.

➜  notebooks git:(master) ✗ pip3 list
appnope (0.1.0)
decorator (4.0.10)
ipython (5.1.0)
ipython-genutils (0.1.0)
Jinja2 (2.8)
MarkupSafe (0.23)
numpy (1.11.2)
pexpect (4.2.1)
pickleshare (0.7.4)
pip (8.1.2)
prompt-toolkit (1.0.9)
ptyprocess (0.5.1)
Pygments (2.1.3)
pyzmq (16.0.2)
requests (2.12.3)
setuptools (28.7.1)
simplegeneric (0.8.1)
six (1.10.0)
tornado (4.4.2)
traitlets (4.3.1)
wcwidth (0.1.7)
wheel (0.29.0)
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

oh,there not exist ipython!
続いて以下のブログを参照しました.
nsbioの備忘録

“you must install jupyter when cannot run ‘ipython notebook’.”

stack overflow says same message.

“  notebooks git:(master) ✗ ipython3 notebook
[TerminalIPythonApp] WARNING | Subcommand `ipython notebook` is deprecated and will be removed in future versions.
[TerminalIPythonApp] WARNING | You likely want to use `jupyter notebook` in the future
[I 13:11:56.681 NotebookApp] Serving notebooks from local directory: /Users/yoshidatakayuki/gitrepository/workspace/notebooks
[I 13:11:56.681 NotebookApp] 0 active kernels
.
.
.
.
”

ふぅ…無理やり感でなんとか復旧….
はてなで備忘録の書き方も覚えて行こう!

エシカル

エシカル消費ってことば,最近知りました.

エシカル(Ethical)」とはそもそも倫理という意味を持ちますが,この要素を価格,品質,安全に加えようとする消費者基本計画のひとつです.http://www.nhk.or.jp/kaisetsu-blog/700/245208.html

 

自身はエンジニア志望でしたが,広告系企業のインターンで営業体験したときの話です.ユーザによって異なる購買履歴から広告主となる企業を選んでプレゼンするという内容でした.そこで感じたこととして,果たして購買履歴情報だけで判断していいのか,その商品を広告し買ってもらったとしてそのユーザのためになっているのか,大きく2点がありました.

 

前者の購買履歴について,cookie情報である性別,年代,地域,検索履歴,利用時間などからどういったものを欲しているのか,どのようなものを提供するべきか考えます.正直購買履歴だけの要素では,エシカルという観点を取り入れることは難しい所感を得ました.

なぜなら各カテゴリによる”ある程度”の特徴付けができてしまうためです.「海外旅行を調べる20代女性」という単純な情報から卒業旅行,ハワイ,留学といったような単語を予測することはできます.ですがここからエシカル消費につなげるためには,そのユーザがどんなことを考えて検索を行ったかを得る必要があります.

例えば,「海外旅行を調べる20代女性」は両親への親孝行としてプレゼント選びをしているとします.すると旅行先は50代周辺のユーザが好み,かつ旅費をなるべく抑えた若者にとって現実的なプランを販売する代理店などの条件があげられます.

例えであげた条件は割とありそうなケースだと感じますが,得られるcookie情報から”ある程度”予測されるケースに入るのか疑問が残ります.

こういった点から,果たしてユーザのための最適な提供を,エシカルな観点から行うことは難しいと,今回の経験から感じました.

 

インターンではエシカルというワードを主張しませんでした.しかし,こうなのではないか,という”勘”ベースの予測モデルが人間的に構築されます.この勘をもとに営業する商品と広告主を決め,広告するわけです.もちろん全てがそうではありません.あくまで自身がインターンを経て感じた経験則の一部です.

しかしそういった人間的予測をもとにした営業は,社会的に必要とされいるのか,どういった方法で予測モデルの精度向上が図られているか,さらに知りたくもなりました.

 

私個人は広告代理店のエンジニアとして大学院卒業後働いていこうと考えています.来年度は博士前期課程2年という立場から研究を重ねていくわけですが,それと並行して今回の「エシカル」など様々な検討要素,可能性を掘り下げていきたいと思いました.