TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

ECxメディアの領域固有の技術要素を考えてみた

今年も残り2ヶ月なので、今年のはじめからどんなことをしてきたのか何となく振り返りをしてたのですが、気づいたら今年の初めから、ECとかファッション色の強いメディアっぽい領域のサービスに関わるような仕事をずっとやってます。

今年のはじめに、ファッションxEC みたいな領域に特化したメディア色の強いアプリのバックエンド側の開発をして、その後にファッション要素の強いスマフォアプリのバックエンド側(主に管理機能)の開発のお手伝い。

そして現在は、以下2つをやってます

  • ファッションxメディアのスマフォとWebアプリみたいな所で、バックエンド全般+管理画面のフロント全部という感じで開発
  • ECxメディアで割りと有名(少なくともうちの家族の中では)な会社さんで開発

Webアプリの開発をする上で共通の技術要素というのはあるかと思うのですが、ECとかメディア系で固有の技術要素みたいなものが大きく3つあるのかなと実感してるので、少しまとめてみようと思います。

想定するWebメディアのイメージ

スタートアップな人達で何らかのメディア系のサービスをやろうとしてる場合とかを割りとイメージして書いてます。運用を長年してるような大手のサービスとかはそもそも内情知らないので、あまりそういうのはイメージしてないので、そういう前提で読んでもらえればと思ってます。

3つの技術要素

自分の中では

  • 画像処理
  • 日本語の解析
  • InstagramAPI

という3つが欠かせない技術要素かなと思ってます。特にここ2,3ヶ月は割とこの辺りの領域の技術検証含めて作業してる感じがしてるのでそれぞれもう少し掘り下げて書いてみます

画像処理

これはファッションxECみたいな所では絶対に欠かせない気がしてます。

箇条書きにするとこんな感じでしょうか。

  • 画像の収集のためのクローラーの開発
    • 最近気づいたのですが、ファッション系のECサイト向けのASPサービスがある。
    • それを使ってる場合だとスクレイピングする時に同じパターンで対応できて作業がだいぶ捗った
  • 収集した画像データーをサービスで扱いやすくするためのデーター構造の検討
    • 収集した画像に対するメタデーター(色とか在庫)をどう定義すると後で扱いやすくなるのかみたいな話
  • ストレージサービスの検討
    • AmazonS3が基本何だろうけど画像の転送に係る料金x予算考えると色々検討の余地がありそう
  • 画像解析
    • ImageMagickOpenCVとかを利用して画像内で利用されてる色数とか類似色の判定処理みたいな所。
    • どういうアプローチをとればいいのかここはまだ試行錯誤してる段階

日本語の解析

ファッション系の場合

  • 季節固有の単語
  • 最近のトレンドになってる単語

みたいな単語に対して、何らかの処理を行いたいケースというのが出てきます。

例えばですが毎年秋から冬にかけてスエードはおしゃれ女子の必須アイテムですが、今年も多くの海外セレブがスエードアイテムをコーデに取り入れていますみたいな文書があった場合に、

  • 管理画面上で上記文章を入力する
  • 上記の文章とは別に最近のトレンドになってる単語を別途登録(例:スエード)
  • 最終的に表示する文章では最近のトレンドになってる箇所に対して何らかの処理(例:その単語に関連する商品ページへのリンクを貼るなど)

というのが必要になってきます。

kuromoji.js使って構文解析したを見てたらkuromoji.jsも面白そうなのでちょっといじってみたいなぁと思いつつも、1,2年ほど前に趣味と実益兼ねて作ったアプリと連携するBotで使ったことがあるTinySegmenterを今回も採用してうまいこと処理が行えました。

どうでもいいけど最近の仕事を通じてガウチョパンツとかミモレ丈みたいな単語を見ても、「あ、あれねー」って理解できるし、「今なぜMA-1が??」という疑問を持ちつつもトレンドとなる単語が何かはだいたいイメージが付くようになりました。

InstagramAPI

記事中にこんな形で写真を引用するケースというのが割りとあるみたいで、こういうのをInstagramAPI通じてどうやって処理するのか最近色々調べてます。

f:id:h5y1m141:20151002192726p:plain

FacebookとかTwitterとかGoogleみたいなサービスのAPIの活用事例は割りと情報見かけるのですが、それらと比較するとInstagramAPIの活用事例ってそれほどないような印象をうけてます。

Instagramのusernameとuser_idの違いがわからずAPIドキュメントを見てて、投稿された写真データーを取得するのにだいぶハマりました・・

特定のユーザーが投稿した写真を取得する時にはuser_idの情報が必要になるが、このIDを知るために、まずは/v1/users/search?q=usernameを利用してuser_idを調べる必要があるので

https://api.instagram.com/v1/users/search?q=muji_global&access_token=取得したアクセストークン

というのをした上で

{
  "meta": {
    "code": 200
  },
  "data": {
    "username": "muji_global",
    "bio": "Share your MUJI Life with #muji \nMUJI official Instagram. 無印良品公式Instagramです。",
    "website": "http://muji.lu/1IuQyfp",
    "profile_picture": "https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379928_1598841523719305_1744704265_a.jpg",
    "full_name": "MUJI無印良品",
    "counts": {
      "media": 59,
      "followed_by": 56251,
      "follows": 9
    },
    "id": "1771059415"
  }
}

という処理で、username: muji_globalは user_idは1771059415であるのを確認した上で

https://api.instagram.com/v1/users/1771059415/media/recent?access_token=取得したアクセストークン

としないといけないんですよね・・・

それ以外にも、後々また自分で探しそうな情報はQiitaにまとめていたりします