ゆーかん

徒然日記

linuxに、root userでも使えるpyenv環境の構築

ほとんどPyenvによるPython3.x環境構築(CentOS, Ubuntu)のモノマネですので、環境構築をしたい人は上記を参考にしてください。メモです。

背景

  1. ansibleをpipでインストールしようとする
  2. pyenvで管理されてるpythonとシステム pre-install pythonが呼ばれたり呼ばれなかったりでうまくいかない。
  3. 全部pyenvでインストールしてるものを使ってしまいたい。

やったこ

ec2上にpythonのインストール。systemにもともとインストールされているpythonに何もかも突っ込んで言って辛い思いをした過去があるので、できればバージョン切り替え用のパッケージをかませたい。

結果pyenvを導入した。多くのプロジェクトが同一サーバー化で動くことは想定していないので、仮想環境構築はしない。(virtualenv等)

やらなかったこ

virtualenv/pyenvなど仮想環境構築ツールの導入。

コード

pyenvインストール

PyenvによるPython3.x環境構築(CentOS, Ubuntu)にある通りです。下記コマンドで起動スクリプトを作成。

export PYENV_ROOT="/home/ec2-user/.pyenv"
export PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"

この後に設定を反映させるために下記コマンドを実行。

source /etc/profile.d/pyenv.sh

ログインし直した時も、この設定は反映されるようなので、一度実行すればきにする必要はなさそうです。

豆知識程度に補足をすると、/etc/profile.dにはアプリケーション毎の設定を記述していくそうです。ここに設定を書いておくと、ログインユーザに関係なく起動時に読み込んでくれます。(下記手順)

  1. /etc/profileを実行
  2. /etc/profileによって、/etc/profile.dディレクトリ配下のすべてのファイルを実行
  3. ログインユーザーのホームディレクトリにある~/.bash_profileを実行
  4. ~/.bash_profileによって、~/.bashrcを実行
  5. ~/.bashrcによって、/etc/bashrcを実行

sudoでもuserのパス設定を引き継げるように設定

あとは、ログインユーザからsudoで実行した時に、path情報とかを引き継げるように設定をする。

これをやらないと、なんかしらのscripthがpythonコマンドを叩こうとした時に、pyenvが呼ばれないことがある。visudoを利用して設定ファイルを書き換える。

$ visudo 

~~~  編集モードに入るので、下記のように変更  ~~~

# Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin  コメントアウト
Defaults    env_keep += "PATH"  # 追加
Defaults    env_keep += "PYENV_ROOT"  # 追加

fabricでデプロイ自動化

独学マンなので、書き方等ご指摘頂けますと幸いです。

背景

までできていた。デプロイ作業を失敗しそうなので、自動化した時の備忘録。自動デプロイツールとしてfabricを利用。

ちなみに現状、fabric本家はpython3系をサポートいません。参考: FabricのPython3への対応についてそのためforkされたprojectから、インストールする必要があります。

pip3 install fabric3

ディレクトリ構成はこんな感じ。シンプル。

...
├── fabfile
│   ├── __init__.py  # module読み込み
│   ├── deploy.py    # 基本処理の記述
│   ├── envs.py      # 基本設定を記述
...

基本処理の記述

from fabric.api import run, abort, env, cd, local
from fabric.decorators import task


class LocalHandler(object):
    """localでのデプロイ周りの処理"""

    def push(self):
        """localの変更をgithubへpushする
        commitまではされている想定
        """
        self.__check_has_commited()
        self.__check_on_master()
        self.__update_requirements()
        local('git push origin master')

    def __update_requirements(self):
        """requirements.txtをupdateするスクリプト"""
        req_txt = 'requirements.txt'
        local('pip freeze > {}'.format(req_txt))
        res = local('git ls-files -m', capture=True)
        if res == req_txt:
            local('git add {}'.format(req_txt))
            local('git commit -m "update requirements.txt"')

    def __check_has_commited(self):
        """変更がちゃんとcommitされているかを確認"""
        res = local('git ls-files -m', capture=True)
        if res:
            abort('there are some diff on git supervised files')

    def __check_on_master(self):
        """master branchにいるか確認"""
        branch = local('git rev-parse --abbrev-ref HEAD', capture=True)
        if branch != 'master':
            abort('you should call this on master branch')


class RemoteHandler(object):

    def pull(self):
        """master branchに移動してソースコードの更新"""
        with cd(env.app_path):
            self.__check_no_change()
            run('git checkout master')
            run("git pull origin master")

    def restart_daemon(self):
        """svcを使って、restartさせる"""
        self.__install_required_package()
        res = run('supervisorctl restart {}'.format(env.daemon_name))
        if res.failed:
            abort('REMOTE: fail restart daemon {}'.format(env.daemon_name))
        return res

    def __install_required_package(self):
        req_txt = 'requirements.txt'
        with cd(env.app_path):
            run('pip3 install -r {}'.format(req_txt))

    def __check_no_change(self):
        """変更がちゃんとcommitされているかを確認"""
        res = run('git ls-files -m')
        if res:
            abort('REMOTE: there are some diff on git supervised files')

@task
def deploy():
    LocalHandler().push()
    rh = RemoteHandler()
    rh.pull()
    res = rh.restart_daemon()
    if res.succeeded:
        print("SUCCESS!! WELL DONE")
    else:
        print("TRY ONcE MORE :D")

基本設定を記述

from fabric.api import env
from fabric.decorators import task

@task
def production():
    """ 本番 """
    env.environment = "production"
    env.app_path = '/path/to/project_root'
    env.daemon_name = 'supervisor daemon_name'
    env.user = 'ec2-user'
    env.hosts = ['host_name']
    env.key_filename = '~/.ssh/key.pem'

module読み込み

このままだと、プロジェクトルートからfabricのタスクを呼べない。init.pyにimport書いてモジュール化する。

from fabfile.envs import production
from fabfile.deploy import deploy

実際に自動デプロイをする

下記のコマンドをローカルで叩く。

$ fab production deploy

Facebookグロースハックチームが行った、グロースハックチームを会社全体で行うための試行錯誤

過去に作っていたメモをブログを作ったのでまとめてあげています。

QuoraにまとめられたFacebookのグロースチームに所属するAndy Johns人物が直接回答した有名なWhat are some decisions taken by the “Growth Team” at Facebook that helped Facebook reach 500 million users.というスレッドがある。

Andyの回答は日々の意思決定に焦点をあて、戦術・雇用・戦略・文化作りの4つの軸から、如何にしてたったの4年間でユーザー数を5億人にまで伸ばしたかについて具体例を交えながらまとめていた。

Andyのまとめだけもとても秀逸なのだが今回は、先輩からのリクエストを元にして以下の3つの異なる軸からこのスレッドを切り取ってみたい。若干、掲載するプラットフォームが変だっていうツッコミが入りそうな感じはするけど、こういうのはエンジニア主導で行われていくべきものだし、見ていて損は無い情報だろうから恐れずポストした。

  1. KPI策定に必要な要素とは
  2. PDCAサイクル高速化のためには
  3. 彼らの行った具体的な施作

運営するブログはこちら:努力1mm

本題に入る前に、、

本題に入る前には2010年時点でのFacebookのグロースチームに関する情報とFacebookの現状ユーザー数について少し触れておきたいと思う。

Facebookのグロースチームは当時、国籍のバラバラな30人ほどのメンバーが所属していた。このグロースチームが買収やパートナーシップ、FBページのマルチリンガル化も含めた、最適化の全責任を負っていた。その中には、なども含まれていた。残念ながら現在のグロースチームの情報は探せなかったので、知っている人がいたらどなたかFacebookかコメントにて教えて頂けたらとても嬉しいです。。

2006年に誕生したFacebookは2010年までにユーザー数5億人を達成。そこから2015年末までで、ユーザー数を3倍の15.9億人までに伸ばした。直近の2016年7月までに更に1億人を獲得し、17億人を超えた。これにはLGBTの人の要請を請けてFacebookが実名ポリシーを緩和したことなんかも影響しているのかもしれない。

01.jpg

出典:TechCrunch:facebook earnings Q4

それでは本題へ!

グロースチームのKPI 策定方法

実際に何かしらのサービスの最適化を行うとなっても、その第一段階である問題設定からKPI策定までの手順が分からなかったりすることが多い。中にはKPI策定した段階で「買収がベストプラクティスだ」という答えが出ることもあるが、ここではショートカット無しの自力での成長戦略に関するKPI策定手順をまとめてみる。

Facebookユーザー数増加のためのKPI策定の手順について

この場合のKPI策定の第一ステップは、課題をいくつかの小さな問いに分割していくことから始まる。今回はユーザー数増加を大きな課題としているので、KPIは少なくとも未登録・登録したて・利用中・利用停止の4段階のユーザーを対象に設定される必要がある。

対象が明確になれば、以下の4つをKPI策定への細分化された問いとして定義できる。 1. どうやって新規ユーザー獲得率を増やすか 1. 新規ユーザーをできるだけ早くアクティブユーザーにするための方法 1. アプリ使用時間を高めるためのトリガーはを引っ張る方法 1. 流出したユーザーを引き戻すためにどんなことができるのか

これはAndyが実際に作ってくれたカスタマージャーニーと、各段階のユーザーに対する課題に対する図で、なんとなくイメージをつけるのに最適かもしれない。

02.png

出典:Quora:What are some decisions taken by the "Growth team" at Facebook that helped Facebook reach 500 million users?

大抵の場合は、これらの問題の解を探しているうちに「新規ユーザー獲得にはFacebookの写真をアップロードできる機能を拡張すればいいんだ!」といった具体的な答えが見つかる。その答えが見つかったら、次の2つの手段からどちらが効率良いか考える必要がある。

  • 既存のユーザー接点の価値を高める
  • 新しいユーザー接点を0から作る

例えば写真の例でいくならば、既存の写真アップロード手順の簡易化と、Google Photoからのインポート機能を作成といった、2つのチャネルについて考えることができる。

ユーザーに登録を促すようなサービスを提供しているのであれば、Facebookのグロースチームが実際に見つけた次の例から、ユーザー接点最適化のヒントを得ることができるかもしれない。

  • 招待メールの絶対量を増やす
  • 既存ユーザーによる招待メールの送信を促す
  • 招待メールのCTRを高める
  • 既存ユーザーによる招待メールのCTRを高める
  • ログアウトページのデザイン性
  • 登録フォームの最適化
  • 登録前のアカウント認証メールの改善

ユーザー獲得のためのKPIの策定は積み上げ棒グラフのようなもので、それぞれのチャネルが少しでも改善すれば、全体としては莫大な効果を発揮することになる。チャネルの数を増やせば増やすほど、全体のユーザー数もどんどんと増えて行く。

もちろんただ単にチャネルを増やせば成功する訳ではない。増やしたならば最適化をしなくてはいけないし、そのチャネルの評判が悪ければ逆効果になるかもしれない。

チャネルを増やし、それぞれの質を高めるためには、失敗を恐れずにチャレンジを繰り返し、リスクを取りながらPDCAサイクルを高速で回していくことが必要とされる。もちろんFacebookのグロースチームもPDCAサイクル高速化のための工夫を行っていた。

PDCAサイクル高速化のための取り組み

僕は本田圭佑が好きで、彼に関する記事などは頻繁に目を通している。彼のまっすぐな姿勢というか折れない精神とかは天性のもので自分には無いものだし、何より有言実行だしかっこいい。サッカー選手でありながら自分で経営もしてるあたりもとても好き。そんなビジネスにも手を伸ばしている本田圭佑が、目標達成に関することでこんなことを述べていた。

挫折は過程、最後に成功すれば挫折は過程に変わる。

だから成功するまで諦めないだけ。

成功をいち早く獲得するためにはできるだけたくさんチャレンジすることが必要で、そのためにはリスクテーキングは欠かせない。誰しもリスクを取ることはなるべく避けたいと願うが、企業として成功するためにはリスクを取りチャレンジをたくさんして、PDCAをできるだけ高速で回すことが必要だ。

上記のことを叶えるためにAndyは、Facebookで実践していた3つのポイントを挙げている。それは小手先の短期的な努力で結果の見えることではなく、長期間継続的に続けていく必要のある組織作り的な面が多かったことが印象的だった。

  1. 経営陣とグロースチームの距離感
  2. カルチャー作り
  3. M & A

経営陣とグロースチームの距離感

memeboxのデータサイエンスによる業務改善例で述べたようにデータによるグロースチームは経営陣に近い距離にある必要がある。Andyもグロースチームと経営陣が近い関係にあったことに写真までつけて触れていた。これはグロースチームのリーダーであるChamathザッカーバーグを含めた経営陣が仲良く話している瞬間が切り取られている。

03.png

出典:Quora:What are some decisions taken by the "Growth team" at Facebook that helped Facebook reach 500 million users?

グロースチームが経営陣と近い距離を必要としている理由には、成長(グロース)の特性が影響している。成長は1部門として認識される実行されるべきことではなく、経営者のような視点から全ての部門に対して、企業ミッションを達成するために実施される必要がある。この写真からも分かるようにFacebookのグロースチームも、経営陣からの手厚いサポートを受け、部門横断的な視点から成長のための最適化を行っていたようだ。

最後にAndyは、企業の成長のために経営者がするべき意思決定で、何よりも大切なものがあることに触れた部分を引用したいと思う。それは壮大な企業ミッションの策定でもなく、グロースチームの会社内でのあるべき姿に触れる象徴的な内容だった。

グロースをエンジニア・オペレーション・企画チームの日々の活動において、最も根本的な要素と位置付ける。経営者がするべき最も大事な意思決定は、企業でのグロースのポジション設定にあるのかもしれない。

カルチャー作り

国際色豊かなグロースチームのオフィス天井には、メンバーの出身国の国旗が掲げられている。

04.png

出典:Quora:What are some decisions taken by the "Growth team" at Facebook that helped Facebook reach 500 million users?

グロースチームのオフィスの天井には、これらの国旗と並んで2つだけ、どこの国にも属さない旗が掛けられていたという。そこに掲げられていたのはグロースチームのメンバーが胸に刻むべき使命であり、リスクテーキングに恐怖を抱く人を奮い立たせるような内容になっていた。

GO BIG OR GO HOME

UP AND TO THE RIGHT

他にもありとあらゆる場所にメッセージは散りばめられていて、有名なDONE IS BETTER THAN PERFECTなんかは、オフィスの壁に書かれていたメッセージのうちの1つであった。

05.png

出典:Quora:What are some decisions taken by the "Growth team" at Facebook that helped Facebook reach 500 million users?

このような文化作りや経営陣によるサポートのような組織作りの取り組みが、高速でPDCAサイクルを回すためには役に立つのかもしれないなー、、と思ったりもした。続いて少し違ったPDCAサイクル高速化(というかショートカット?)の例を挙げてみる。

M&A

何かしらの目標があってなおかつ資金が潤沢にあるならば、企業を買収することもPDCAサイクル高速化の1つの手段かもしれない。Andyは実際にFacebookのグロースチームが主導で、企業の買収やパートナー提携が行われたと述べていた。

ここではFacebookが実際に行った、友人レコメンド機能拡張に向けた、企業買収によるサイクル高速化の具体例を挙げる。

Octazenの買収

Facebookのミッションは世界中の人を繋げることだ。そのためにはソーシャルグラフのような人間関係のリストを作成することは必須だった。そしてこのゴールに向かうためにFacebookが選んだのは、自前でのソーシャルグラフ作成ではなく、その情報を持っているOctazenというマレーシアのスタートアップを買収だった。

Octazenは、友人情報などを引き出せる権利をユーザーに認めてもらい、その情報を元にユーザーの連絡先リストやソーシャルグラフを抜き出して人間関係の繋がりのリストを作っていた。

Facebookは買収したOctazenの情報を元にして、自社で取り組んだら数年はかかるソーシャルグラフを数ヶ月で完成させた。拡充した友人レコメンド機能によって、継続的なユーザー数の増加を可能にしたのだ。

目的達成のためにPDCAの高速化を図ることは確かに大切なのかもしれない。でもサイクルを回し続けるのは工数もかかるし、精神的にも骨の折れる仕事だ。このような目標が現れた時、買収によるPDCAプロセスのショートカットも1つの手段として有効なのだろう。

具体的な施作

ユーザー5億人獲得のためにはいくつもの最適化を実践し、中には特別な施作もあったようだ。しかしAndyが強調して述べていたことはとてもシンプルなことで、memeboxのデータサイエンスによる業務改善例でも書いた、教科書通りのことを淡々とやり続けることだった。

僕たちが取り組んだ施作で、伝えていかなきゃいけないことは山ほどあるよ。でもね、そのほとんどは特別なものじゃなくて、マーケティングの教科書に載ってる内容なんだ。テストして、本番で試してみて、フィードバックを元に洗練する。これを繰り返していただけさ。

実際にAndyが上げていた具体例を挙げる前に、ここに書かれていることを愚直に実行してもうまくいく訳がないということには注意しておかなきゃいけない。プラットフォームだけでなく、時代によってもユーザーの行動は変化していく。これらを参考に、自社サービスで最も有効なように最適化を図っていくことが大事だと肝に銘じておきたい。

ここではその最適化の例を箇条書きでまとめていく。どのようなプロセスでこれらの具体例が導かれたかも丁寧に説明されているのだが、既に内容的には盛り沢山だし、また別の機会にそのプロセスについてはまとめたいと思う。以下が最適化の具体例だ。

  1. 文章よりもボタンを使おう
  2. ボタンの位置と言葉には気をつけよう
  3. 位置だけじゃなく、サイズ・色・影なども大切!
  4. 速さは正義。速度の遅いサイトはCV率を意識していないも同然
  5. 価値のあるコンテンツを作るために、見出しやサブ見出しを充実させよう
  6. 文字を使いすぎないこと。シンプルで簡潔なサイトを
  7. 色使いはグロースハッカーのたしなみ
  8. 画像はCV率を高める。効率良く使う方法をテストしよう
  9. ユーザーへの感謝を上手に述べれば、CV率もアップ
  10. 正しく使われれば、商品説明の動画はとても効果的だ
  11. ユーザー登録ホームはシンプルに。自動入力が可能な構成にしよう
  12. 所属欲求などの人間の欲求を上手に使おう(ex. 友達N人がサービスを使ってます!)
  13. メールの件名・送信元アドレス・日時のABテストは抜かりなく
  14. htmlメールよりもテキストメールの方がCV率が高かった!
  15. 広告を上手に使おう。更にランディングページを効率化すると3倍もCV率があがることもある
  16. 広告の画像やメッセージを数日間隔でローテーションさせると更に効果が上がる
  17. Facebook広告をクリックするための手段もシンプルに
  18. AdwordsのCTRを上げるには動的にキーワードを入れられるようにしよう
  19. SNSシェアボタンの位置もABテストを
  20. SEOメタデータの最適化も忘れずに
  21. 2万件以下のAdwordsキャンペーンしかもたないなら、1キーワード対して1つの広告グループを作成しよう。これによって狙いのキーワードに対して重複なく広告を打てるし、Adwords広告のCTRを上げるにはこれが一番手っ取り早かった

ソース

What awesome top strategies for conversion optimization

What are some decisions taken by the Growth team at Facebook that helped Facebook reach 500 million users

人工知能搭載ヘルスケアサービス「Health Tap」についてのまとめ

次に作るサービスについて考えているのですが、せっかくなら調べたことを後悔してしまおうということでまとめた。

health tap とは

health tapは、人間の、健康に関する関わり方を再開発するものとして、2010年にローンチされたサービス。医者と、利用者がプラットフォーム上でやり取りしあうサービスみたい。

2013年の状態で、登録している医者の数は3万5000人、毎月1000万件の質問が投稿され、累計アプリダウンロード数は200万を超えてるんだとか。医師も無料で回答しているし、患者も無料で利用できるのか?? どうやってお金稼いでるんだこの人たち。。

患者側の使い方は簡単で、主に以下の手順に沿って利用されている。

  1. 健康状態に疑問をもった人が、自分の症状を投稿する。(発疹がある、喉が腫れてる、とか)
  2. 人工知能がその症状に関して詳しい、適切な医者とマッチング
  3. 24時間以内に、その症状に対する対処法が回答される
  4. みんなハッピーになる<3

ここで疑問に思ったのが、以下の2点。順に調べてまとめてみる。

  • どうやってその回答の厳密さを担保してるんだろう
  • 医者の参加メリットは?
  • 該当する国内サービスってあるのかな?

医者の参加するメリット、インセンティブ

health tap自身が発表している内容によると、医者が一回のログインで費やす時間は60分以上。激務なはずのお医者さんがなんで、こんなにたくさんの時間を割くのかは素直に不思議だなぁと、、

でもやっぱりお医者さんにもたくさんメリットはあるみたい。流行り(?)のゲーミフィケーションが使われているとかの他に、実務的な面でも。

  1. 受診不要な患者さんを減らすことによる、業務の効率化
  2. 潜在患者からの認知度
  3. 同業者からの認知度

があるらしい。いや、確かに。全部良さそうだけど、個人的には3が結構メリットありそう。医者ってなんだかんだ紹介ビジネスなところもあるだろうし。個人的な経験からもよく行く医者なんて、口コミで全部決めちゃうしね。。

類似の国内サービス

M3のアスクドクターズ?モデル的にはこれが似てるのかもしれないけど、個人的にはこれは流行らない気がする。というのも、月額でお金かかるのも結構しんどいし、怪我したってわざわざカードの登録とかしてから質問するようなサービスなら気持ちも萎えてやらないと思う。

自分がこれをやるなら、ビデオチャットでやるだろうなぁ、、 医者だけに限らず、働けていないママさん専門看護師/歯科衛生士/介護士/獣医といった層にアプローチをすると思う。

ただし、最近の医療サービスに対する風当たりからなかなか厳しい感じはするが。。

想像できる日本でできない困難さ

日本とアメリカの大きな違いは以下の通り

  • 日本は医療費が格安
  • 日本は病院に医者がいけば診察を受けれる(アメリカはファミリードクターの紹介状が必要)

とか。これは大きな違いな気がしますね

海外の最新事例でみる、Machine Re-enginereeing(マシン・リエンジニアリング)

はじめに

仲良い先輩に機械学習の業務改善に関する事例を調べてーと言われたので、せっかくなのでまとめることにした。

ちなみに表題にある Machine Re engineering とは、機械学習を用いた業務の自動化による改善のこと。日本語に訳すとなんなんだろう。範囲はだいぶ狭いけど、マーケティングオートメーションとかは割とこの領域かもしれない。

実際のMachine Re-engineering はもっと範囲の広い話で、ビジネスプロセス全体を指す。クライアントとのメールのやり取りとか、日本ではあまり知られてない単語だけど、チャーン(churn)防止とかも機械学習用いると、圧倒的に改善できたりする。もうちょっと詳しく、改善できる範囲についてまとめてみる。

機械学習で改善できる範囲とは?

機械学習を用いた業務改善では、大別して以下の3つの領域で改善をすることができる。

  • コスト削減
  • CRM
  • 売上高最大化

いくつか具体例を使って見ていくことにする。紹介する例としては以下の4つ。

  1. カナダの銀行の音声照合による事例
  2. Londonのスタートアップによる、「ドキュメント作成の自動化」
  3. サンフランシスコベンチャーによる製造プロセスにおける、アラートの検知
  4. 賄賂・インサイダー取り引きを事前に検知する人工知能

などなど。どれも割とびっくりした内容があったのでそれをまとめてみる。

カナダに籍を置くNuanceって銀行

カナダにあるNuanceっていう銀行が、人の声紋を認識する音声照合を使って、1人あたりの対応時間を40秒も削減した事例。

音声照合での生体認証を導入

手順としてはこんな感じ。

  1. お問い合わせの電話がかかってくる
  2. 自然な会話の中から、音声照合
  3. 本人確認をこの音声称号で済ませる

その成果は?

1人あたり40秒くらい対応時間が減少したとか。自然な会話の中で音声照合を済ませて、気付いたら本人確認がなくなってるってすごく嬉しい。あのやりとりすごくめんどくさいんだよなぁ。。

日本でこれが可能なのか

音声照合は言語ではなく、人間の声紋をしっかり認識できるかどうかの問題なので、これはできない理由はないはず。音声認識っていう話だったら、日本語でやるのはなかなか難しいはずなんだけど(言語構造的な問題、日本語の優秀な音声認識サーバーは存在していないなど)。

ドキュメント化、データ入力(Arria : Londonに拠点を置くスタートアップ)

日頃よくあるドキュメント作成とか、データ入力。こういう単純作業に死ぬほど時間を取られると、1日が30時間あっても十分じゃない。しかも、こういう無駄で単調な作業は、かなりやる気も削がれる。できればやりたくない。

レポートの自動作成をする手助けをする

レポートの自動作成をする手助けをしてくれるやつ。自動作成といっても、完全に自動で文章が書きあがる訳ではない。この機械学習を利用したサービスは、自分の書いたテキストの編集をしてくれると思ってた方がいい。

具体的になにをしてくれるのか

バラバラで箇条書きにしたような文章を入力データとして、一個の完成度の高いドキュメントを書き上げる。箇条書きにした文章を入力としては、ちゃんとした一個のドキュメントを作ってくれるんだとか。顧客の業種の幅は広く、ヘルスケア企業から、ファイナンス、石油会社なども含まれる。結構ドキュメント化の多い大企業なんかだとすごく歓迎されるサービスなのかな。

どれくらい生産性があがるのか

生産性は25%くらい上昇したらしい。身近な数値に置き換えると、レポート作成のタスクの時間を40時間/月削減することに成功している。1日あたり2時間くらいフリーな時間ができるくらい。これはすごい。

日本でもできるのか

これまた日本語で、ラテン語系と同じクオリティで完成するとは思っちゃいけないはず。日本語は文章的なルールが崩壊しているので、文章を組み立てるのとかはすごく苦手だっていう話をよく聞くので。。

品質管理における問題解決 ( Sight Machine )

品質管理っていうよりもちゃんと言うならば、製造プロセスをしっかりと監視する必要がある。大きな倉庫でお互いの部署同士が連絡を取れない、そんな状況で部門横断的にアラートが鳴ったとしたら、原因究明には時間がかかってもしょうがない。

そんな悩みを抱えるあなたに!諦めないで、あなたにはSight Machine があるじゃない!あっという間にアラートの原因を特定、しかも「アラートが鳴る前に、やばいところを教えてくれる」機能までついてるとあったら素晴らしい。

アラートの原因追求

製造業の現場とかだと、1つの品質の問題の問題によって、何百ものアラートを同時に引き起こされる。そのいくつものアラートの根源になる問題を特定するのには通常非常に時間がかかるし、なんなら製造のプロセスを止める必要さえ出てきたりする。

Sight Machineはそのアラートパターンを学習して、問題を特定する手助けをするんだとか。しかし、次はもっとすごい。

アラートが出そうなものを、事前に感知する

さらに問題が出現する前に起こった事例のパターンも学習して、このままエラーが出そうなことを知らせることもできるらしい。そして前もって、エラーが発生する箇所を対処することで被害を最小限に留める。まぁよくあるパターンの機械学習ってやつなんだろうけど、これを実際の現場でやるってのはすごいなぁ。僕の好きなコマツのIoT事例の進化版みたいな感じ。

シンガポール最大の銀行による汚職防止作戦:DBS

知ってる人は多いと思うけど、以前にもまとめたようにシンガポールは人工知能大国。国ぐるみで人工知能を導入して、未来の社会の実験室にしてみよう、みたいなことを大臣が言っているような国。自分的には、このシンガポールみたいな国はすごくかっこいいと思う。保守的であるよりも、ドラスティックに未来だけを求める感じ、素敵。

賄賂やインサイダー情報の漏洩などの不正を犯しそうな人を事前判定

銀行の業務は結構直に色々な人の欲望に関わる。インサイダー情報だったら事前に知れればこっそりボロ儲けできちゃうし、銀行からの融資を受けられるかどうかであれば直に会社の存続に関わってくる。こういう感じのところではもちろん、きな臭い話は存在するみたい。

やってること

emailや社内での行動、ミーティングでの行動を元に学習させて、「汚職をしそうな人」を検出する人工知能

銀行に関わる不正に関しては、前から検知する試みはあったみたい。そうなんだけど従来のやり方は、「詐欺・利回り」とかの外的要因についての研究だったとか。つまり会社ではなくて、第3者の機関が人工知能を使って市場を監視していたみたい。

DBSの例は結構有名なはずなんだけど、その上記の内容がその理由。社内の不正検出について活用された事例としては珍しいらしい。

日本でこんな例はでてくるのかなぁ。。

データ分析を始めるには、多額の初期投資が必要だったりする。データの分析をしたことがある人なら分かると思うけど、データの収集、クレンジングとかには死ぬほど時間がかかるし、専門家じゃないとできないくらい面倒臭くて難しい。しかも失敗するかもしれない。データ分析でいつも正しい結果が得られる訳がない。日本で機械学習を活用した成功例で話題に上がっているものはほとんど見ない。

そのような決断を日本の企業ができるのかなぁー、、と思うとすごくこう心が暗くなったりする。企業はできるかもしれないけど、その「機械にまかせよう」っていう素敵で合理的な無責任さを良しとしない社会も存在するような気がする。

僕は学ぶことが大好きで結構真剣にやったりしてる。だからこそその分感情を持つ人間の限界を感じる。感情が判断を鈍らせる人間である限り、100%合理的で理想的な行動をするなんて不可能だ。機械に任せて生産性を上げて暇を作って、趣味に時間を費やせるような世の中であるほうが素敵だなぁと思う。

Qiita:機械学習を用いた、業務改善最前線を追え!海外事例で見る、"Machine Re engineering" とは?

vimで検索した文字列から行末まで削除を、検索ヒットした文字列全てで繰り返す

メモリ8GB詰んでるmacを使ってるのですが、プラグインや便利なソフトウェアの入れすぎでPCが重くなりがちになってきたので、vimへの移行を検討中。

移行期なので、Visual Studio Codeのvimマッピングを使って、集中したい時はその恩恵を借りながら少しずつ勉強しています。

タイトル通りのことをするのに割とはまったので、メモ書くを残します。

やりたいこと

以下の文字列の,に続く部分を全て削除したかった。名前だけを抽出したかったんです。

Lauren Rhue, Wake Forrest University
Wael Jabr, Georgia State University
Jesse Bockstedt, Emory University
Arvind Malhotra, University of North Carolina
Pei-yu Chen, Arizona State University
Ben Fabian, Hochschule für Telekommunikation Leipzig
Mareike Möhlmann, University of Warwick
Ioanna Constantiou, Copenhagen Business School
Michel Avital, Copenhagen Business School
Young Bong Chang, Sungkyunkwan University
Wooje Cho, University of Seoul
Sangpil Han, Arizona State University
Byung Cho Kim, Korea University Business School
Seung Hyun Kim, Yonsei University
YoungOk Kwon, Sookmyung Women’s University
Gene Moo Lee, University of Texas Arlington
Hyelim Oh, National University of Singapore
Jaehong Park, Kyung Hee University
Sungyong Um, National University of Singapore
Ulrich Bretschneider, University of Siegen, Germany
Rob Gleasure, University College Cork, Ireland
Lorraine Morgan, National University of Ireland
Ivo Blohm, Universität St. Gallen, Switzerland
Keongtae Kim, City University of Hong Kong
Joseph Feller, University College Cork
Hanna Halaburda, bank of Canada

結論

下記の順番に実行すればできます。

/,  (<- , を検索)
qqnd$q  (qにマクロを登録)
100@q  (繰り返す)

nで次の検索結果に移レなくなったタイミングでエラーで抜けてくれるので、適当に大きい値をcountしてあげれば、ヒットするものが全て消せる

参考

Vimで編集を効率的に行うための繰り返し操作について

東大が大学ランキング首位から転落!? 人工知能が国を管理する近未来社会シンガポール

東大がアジア大学ランキング1位から7位に転落

イギリスの教育専門誌がアジア各国の大学の最新のランキングを発表し、シンガポールの大学がトップに立った一方、このランキングで3年連続でトップだった東京大学は7位に転落しました。 NHK NEWSより

って報道を見て、朝から「いや、待てよ1位がシンガポール?東大も負けてないっしょ、おいいい!?」と憤慨していた。

で、録画してあったNHKスペシャル人工知能は天使か悪魔か」シンガポールが取り上げてたのを思い出した。それを見て、シンガポールが1位ならしょうがないか。。」 って納得して思わず書いたエントリー。

いやシンガポールやばいっすよ、まじ。人工知能を国ぐるみで有効活用している、アジアの小さい巨人でしたわ。

シンガポール人工知能事情

シンガポールは国土が狭い。人口密度は世界第2位で、東京都の人口密度も軽く上回っている。そんな中国際社会で生き残っていくために、国ぐるみで人工知能を活用した効率化社会を実現しようとしている。

NHKスペシャルの「人工知能は天使か悪魔か」で、シンガポールのスマートシティ大臣みたいな人が

人工知能で国を効率化する。シンガポールはその実験室になる。

みたいなことを言ってて、すっげーやる気だな、、って感心した。。

実際の取組を見てみても、

  • 渋滞を未然に防ぐ
  • 国営マンションの住人の健康状態の把握
  • 銀行でワイロなどの不正を事前に察知!

など。これを国と企業が協力して進めているんだから、凄まじい。自国の国際社会での状況などをしっかり把握してやっててすごい。。

いくつか簡単に紹介。

人工知能で不正を監視!

シンガポールの銀行が取り入れている人工知能。従業員の行動やチャット、社内メールの内容を解析して、不正をしそうな人指数みたいなものを定義。それを元に、収賄とかインサイダー取り引きとかを未然に防いでるのだとか。

その的中率は約9割!!とんでもねぇ。。

老人の孤独死はさせない!

シンガポールの国営マンションには監視するためのカメラを全ての部屋に設置するらしい。監視と言っても悪い使われ方は一切していなくて、 - 普段とは違う行動をしている人の健康状態の把握 - 異常があればその緊急度を察知して、家族や医師に連絡するかを判別 - みんな幸せ!ばんざい!

ってなるとか。日本の老人を全てこういった国営マンションに住ませて、日常生活に困ってる度人工知能で計測。それが高い順に老人ホームとかに入れてあげるとかしたらもっと世の中は幸せになりそうだなぁ。。って思った

人工知能で渋滞改善

車の平均速度を測定、渋滞が起こる前兆の速度みたいなものを人工知能を活用して測定。それを検知すると、青信号の時間を延ばして渋滞を未然に防ぐらしい。。

こんな感じの社会は近未来だと思ってたのに、すぐ近くの国で実現されているなんておったまげた とんでもねぇな、シンガポール!!

qiita

東大が大学ランキング首位から転落!? 人工知能が国を管理する近未来社会、シンガポールが1位なら納得かも。。