読者です 読者をやめる 読者になる 読者になる

覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。 twitter: @yyoshikaw

PostgreSQL - トリガーの確認

PostgreSQL

PostgreSQLでトリガーに関する情報を取得するための各種操作についてのメモ


トリガーの一覧取得

トリガーの一覧は以下のSQLで取得できます

SELECT * FROM pg_trigger;

■実行例

SELECT * FROM pg_trigger;
 tgrelid |       tgname   | tgfoid | tgtype | tgenabled | tgisinternal | tgconstrrelid | tgconstrindid | tgconstraint | tgdeferrable | tginitdeferred | tgnargs | tgattr | tgargs | tgqual 
---------+----------------+--------+--------+-----------+--------------+---------------+---------------+--------------+--------------+----------------+---------+--------+--------+--------
   20646 | sample_trigger | 159097 |     23 | O         | f            |             0 |             0 |            0 | f            | f              |       0 |        | \x     | 


トリガーに紐づく関数名の取得

トリガーに紐づく関数の関数名(proname)は以下のSQLで取得できます

SELECT tgname, proname FROM pg_trigger t, pg_proc f where t.tgfoid = f.oid and tgname = '{トリガ名}';

■実行例

SELECT tgname, proname FROM pg_trigger t, pg_proc f where t.tgfoid = f.oid and tgname = 'sample_trigger';
       tgname   |      proname    
----------------+-----------------
 sample_trigger | user_id_padding


関数の中身の確認

関数の中身は以下のSQLで取得できます

SELECT prosrc FROM pg_proc WHERE proname = '{関数名}';

■実行例

SELECT prosrc FROM pg_proc WHERE proname = 'user_id_padding';
                                    prosrc                                
--------------------------------------------------------------------------
                                                                         +
     BEGIN                                                               +
         IF NEW.user_id_padding IS NOT NULL THEN                         +
             IF length(NEW.user_id) < 5 and length(NEW.user_id) > 0 THEN +
                 NEW.user_id := lpad(NEW.user_id, 5, '0');               +
             END IF;                                                     +
         END IF;                                                         +
                                                                         +
         RETURN NEW;                                                     +
     END;                                                                +

エンジニアリングでレガシーな世界に革新を起こす。既存産業に切り込む4社合同MEETUP

カンファレンス・勉強会

エンジニアリングでレガシーな世界に革新を起こす。既存産業に切り込む4社合同MEETUP に参加してきました。

以下自分用のメモです。


概要

金融、人事、医療、不動産といった専門性の高いレガシーな領域で新しい顧客体験や社会システムを生み出そうとしているイノベーターによる発表

  • 日時: 2017/03/22(水)20:00〜
  • 場所: 株式会社ツクルバ


SmartHR × OSS

内藤研介 氏(株式会社KUHU) @kakipo

  • SmartHR
    • 労務手続きの面倒さを解決する
    • 書類を自動作成
    • 役所のAPIと連携しているので役所に行く必要がない
    • 脱Excel管理
  • SmartHR × OSS
    • 多くのOSSを利用している
    • OSSとして公開しているものも多くある
      • kiji
        • e-Gov APIの複雑な使用を隠ぺいするクライアントライブラリ
      • kirico
        • 年金機構の公開する「届書作成プログラム」の利用を容易にするためのライブラリ
      • tsubaki
        • マイナンバーのチェックディジット算出ライブラリ
    • なんでわざわざ公開するのか?
      • 車輪の際発明したいし、させたくない
      • IT化を推進したい、市場を広げたい
      • 多くの人の目に触れることによって品質を向上したい


ハッカーと、家

中村圭佐 氏(株式会社ツクルバ)

  • cowcamo
    • 中古物件のオンラインマーケット
  • 世界的に見て新築流通数は中古物件に劣るが、日本は違う
  • 約1.4兆円の中古市場住宅
    • 多様過ぎて人間ではすべてを把握できない。そこにエンジニアの力が必要
  • 初回内見から購入まで平均3カ月
    • Repeating O2O (OnlineとOfflineを行ったり来たり)
    • Offlineも含めてシステムと考えている
  • 人が家を買う意識をハックする


マネーフォワードが創る未来

中出匠哉 氏(株式会社マネーフォワード)

  • マネーフォワード
  • キャッシュレス社会を創る
    • 日本はキャッシュレス後進国
    • キャッシュレス決済の普及には現金決済を上回るUXが必要
    • 決済手段の多様化によりアグリゲーション(集約)のニーズが高まる
    • スマホがあればサイフはいらないという未来を創っていく
  • 業務効率化のその先へ
    • 中小企業の大きな悩みは資金繰り
    • 資金調達には貸す側と借りる側で大きなギャップがある
    • クラウドデータサービスの利用で最短2,3日で融資が可能となっている


テクノロジーで加速する医療ヘルスケアとそれを支える技術

平山宗介 氏(株式会社メドレー)

speakerdeck.com

Healthcare × Deep Learning

その他

医療 と Deep LearningやAI分野 を組み合わせたサービス等を提供する企業で個人的に気になったものをメモしておくためのリンク集です。(日々増減します)


imagia

http://imagia.com/

  • AIによる医用画像解析


Mindshare Medical

https://mindsharemed.com/

  • 臨床医および医療機関の臨床決定を支援するための技術を開発。放射線科医が重度の疾患を検出および特徴付けするのを支援する。


Bay Labs

https://baylabs.io/

  • 心血管イメージングと治療の技術を開発している


Insilico Medicine

http://insilicomedicine.com/

  • Deep Learningを用いた創薬や老化防止の研究


Butterfly Network

https://www.butterflynetinc.com/

  • 小型の超音波装置を開発している。その超音波装置で取得した医用画像の読影を行うためのDepp Learningシステムを開発している?


Deep Genomics

https://www.deepgenomics.com/

  • 遺伝子変異の解析にDeep Learningを利用


Atomwise

http://www.atomwise.com/

  • 新薬の候補物質を発見するのにDeep Learningを使用


Zebra Medical Vision

https://www.zebra-med.com/

  • 医療画像診断研究プラットフォームを提供


Pathway Genomics

https://www.pathway.com/

  • IBMのWatsonを活用し、予防医学の観点から各ユーザーに応じたアプローチを行うためのアプリ開発など


Avalon AI

http://avalonai.strikingly.com/


MedyMatch

https://medymatch.com/


Enlitic

http://www.enlitic.com/

  • CRやCT、超音波検査、MRIなどの画像から悪性腫瘍を検出する


Lunit

http://lunit.io/

  • マンモグラフィ画像をより高精度に分析するためのサービス(偽陰性および偽陽性の結果を減少させた検出モデル)などを開発中。


SigTuple

https://www.sigtuple.com/

  • AIを利用して血球検査の精度を向上するための自動スクリーニングソリューションShonit


エルピクセル株式会社

https://lpixel.net/

  • 人工知能を活用したライフサイエンス画像解析クラウドサービス「IMACEL(イマセル)」を提供


Preferred Networks

https://www.preferred-networks.jp/ja/

  • 人工知能(AI)を活用した統合的がん医療システム開発プロジェクトを開始


株式情報医療

https://micin.jp/

  • スマホ診療アプリのcuron等を提供




関連エントリ

機械学習エンジニア3社合同MeetUp!〜MICIN・DATASECTION・LPixel〜

カンファレンス・勉強会

機械学習エンジニア3社合同MeetUp!〜MICIN・DATASECTION・LPixel〜 に参加してきました。

以下自分用のメモです。


概要

機械学習を活用した技術開発を行う株式会社情報医療・データセクション株式会社・エルピクセル株式会社3社のCTO/研究開発部長が、
各社の最先端の機械学習を活用した技術開発に関する講演を実施い

  • 日時: 2017/03/15(木)19:00〜
  • 場所: 東京大学伊藤国際学術研究センター


機械学習による動画像認識

今井真宏 氏 (データセクション 研究開発部部長)
TFUGコアメンバー

  • 動画像認識とは?
    • Spantial features × Temporal features
    • 画像認識との違いは画像の動き(フレーム間での関係性を解析する必要がある)
    • データのギャップ
      • 研究の戦場と実際の戦場(汚い、ノイズが入っている)
    • 様々な予測と組み合わせる
      • 推定進行方向、推定スピード、推定運転状態、危険な物体を警告
      • 全ての予測をRGB動画から行う
  • 動画像の認識方法
    • フレーム間の関係を表現しなければならない
    • フレーム間の関係の記述をする必要がある
    • フレーム間の関係
      • 移動平均
      • 確率過程
        • ガウス過程
      • パーティクルフィルタ
      • ニューラルネットワーク
        • CNN, RNN, Gated CN
    • フレーム間の関係の記述(特徴量)
      • ニューラルネットワーク
        • CNN, RNN
      • Color
      • HOG
      • Haar-like
      • LBP
      • SIFT, SURF, ORB, A-KAZE
      • Flow
    • Follo me
      • Tracking by Detection
      • 特徴量を使って前後のフレームに存在する物体をリンク
      • メリット
        • 理論が明快
        • タスクに合わせてカスタマイズしやすい
      • デメリット
        • 物体検出が前提
        • ノンリアルタイム
    • Rolo
      • CNNとRNNの組み合わせ
      • メリット
        • 物体のいい移動がスムーズ
        • 中間表現によって隠れにも強い
        • End2Endでニューラルネットワーク
      • デメリット
        • マルチトラック(大量の物体の追跡)で時間がかかる
  • これからの動画像認識
    • さらに多くの人に役立つソフトウェア
      • データ量
        • 速度
      • 精度
        • 補完、予測
        • 最適な組み合わせ
    • モデル圧縮
      • Smaller CNNs
      • 蒸留
    • 生成モデル
      • Generative Adversarial Networks(GAN)
      • 条件付きGAN
      • 実際の複雑な状況には、かなり複雑な確率分布が必要
    • 組み合わせ最適化
      • Neural Combinatorial Optimization
        • Encoder・Decoderを利用
        • アテンションを結果にしている
  • データセクション社で取り組んでいる動画像認識機能を実際の自動車への組み込んでいるか?
    • まだ実際にはデプロイできていない
    • 今後、計算量の削減が必須。現時点では一般的なGPUが必要


時系列データ処理の最前線 ~医療データは健康増進にどこまで寄与できるのか~

巣籠悠輔 氏 (情報医療(MICIN) CTO)
東大でDeppLearningの講義を担当している。Gunosyの創業メンバー。
「Deep Learning Javaプログラミング 深層学習の理論と実装」の著者

  • 情報医療 - 情報と医療の隔たりを無くしたい
    • スマホ診療・遠隔診療
    • 医療×人工知能
    • curon
      • 医師と患者をつなぐプラットフォーム
      • 医療スタッフAIが医者が欲しい質問を代わりに患者にする
      • 2015年に規制が緩和され、全国で遠隔診療ができる
      • β (新しい領域なので新しい技術を積極的に取り入れている)
        • Webpack + Angular2
        • ReactNative
  • ディープラニングと最も相性がいいのが画像認識分野
    • 人間の視覚野⇒脳内での処理がモデル化しやすい
  • ディープラーニングの変遷と今後
    • 画像からの特徴抽出 ⇒ ・・・ ⇒ 言語からの特徴抽出 ⇒ 言語からの知識獲得
  • 機械学習 / 深層学習の段階分け
    • Level1:認識, Level2:予測, Level3:実行
    • 医療分野の現状
      • 画像診断、知識ベースの病名予測(Level2に入ったぐらいの状態)
  • 深層学習のこれまで / これから
    • 自然言語処理
      • 機械の「言語の理解」が飛躍的に発展
      • シンボルグラウンディング問題も解決されつつある
        • 記号空間 ⇒ パターン空間 ⇒ 記号空間
        • 自然言語処理の発展 ⇒ 時系列データの処理の発展
      • 時系列データの処理
        • 時系列データ処理の手法は、画像分析・生成にも使える
        • Bi-diractional RNN
          • 過去も未来も分かっているデータから欠損などを予測したりするのに使う
        • RNN Encoder-Decoder
    • One-shot Learning
      • いかに少ないデータで学習・予測を行えるようにするか
      • 機械のより「メタ」な知識の獲得
      • 個々の時系列のデータからいかに深く分析する
  • 医療データへの活かし方
    • 服薬順守の予測を良い精度でできている


ライフサイエンス領域における機械学習を活用した画像解析

朽名夏麿 氏 (エルピクセル CTO)

  • 生命現象のスケールと画像
    • ライフサイエンスの分野ではイメージングの技術が欠かせない
  • 画像自動分類の必要性
    • イメージング技術の進歩によって、画像の多様化・多量化
    • 可塑性・適応性のある仕組み⇒機械学習・パターン認識
  • LPixcel
    • IMACEL
    • LP series
    • LP-exam series ・・・ 論文画像不正検出
    • LPX plugins
  • 画像から得られる特徴の例
    • 輝度
    • 形状
    • 模様
  • 決定木(Decision Tree)による分類では特徴空間では斜めの線が引けない
    • 決定木はなぜ分類精度が低いのか
      • 単純すぎる。バイアスが大。表現力不足
    • 集団学習。異なる学習データを利用して多数決を行う
      • bagging
      • RandomForest
      • ExtTree



関連エントリ

Kotlinの特徴

Java Kotlin

「Kotlinスタートブック」を読み始めたので、とりあえずKotlinの特徴として押さえておきたい点をメモしておきます。

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング


開発元

JetBrains社


JVM言語である

KotlinはJVM言語であるため、JVM上で動作する。また既存のJava用のライブラリやフレームワークといった資産を利用できる。
JetBrains社は、"KotlinとJavaの相互運用は100%“と謳っている。
Kotlinで記述したプログラムから、Javaで記述されたプログラムを呼び出すこともできるし、その逆もできる。


簡潔さ

Kotlinはコードの見た目とそのはらきの面で簡潔である。
セミコロンや型の指定の省略、データクラスや拡張関数等の機能を提供している。また記述されたコードは直観のままに動く。
簡潔であることで学習コストが小さく、プログラマの習熟レベルの違いによるコードのばらつきを抑えることができる。


安全性

KolinはJavaよりも安全に設計されている。型やnullの扱いが厳格。
特にnullにまつわる安全性確保の仕組みを「Null安全」と言う。


静的型付け

Kotlinで記述したソースコードはJavaバイトコードに変換される。


オブジェクト指向

KotlinはJクラスベースのオブジェクト指向言語である。Javaと同じように定義されたクラスのインスタンスを生成することができる。
ただし、intやcharなどのプリミティブ型は存在しない、全てがオブジェクトである。


関数型

第一級オブジェクトとしての関数が存在する。関数を通常の値と同様に関数の引数にしたり、戻り値として返したりすることができる。
これにより小さな粒度での再利用が可能となる。

ただし、Kotlinは関数型言語ではない。


採用実績

国内外に採用実績が広がっている。特にAndroidアプリの開発での利用が目立つ。