Denen blog

株式会社電縁の社員によるブログです。

リックテレコムセミナーにて「IoT×ブロックチェーン」について取締役の石原が講演を行いました

f:id:yasuaki-sakai:20180622183201j:plain

こんにちは、イノベーションオフィスの吉田です。

先日、リックテレコムセミナーにて弊社取締役の石原が講演を行いました。

「3つの先駆けプロジェクトから学ぶ IoT×ブロックチェーン」というタイトルで getherd の紹介をメインに IoT での応用事例などを話させていただいています。

 

blockchain.denen.com の方で記事にしておりますので是非ご覧下さい。

blockchain.denen.com

 

電縁では引き続きブロックチェーンに力を入れておりますので、出演のご相談やその他お問い合わせなど有りましたら以下までお願いいたします。 

株式会社電縁 コンサルティングチーム 石原 玲一
Mail:r.ishihara@denen.com
TEL:03-4500-4913

 

以上、お知らせでした!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain

東京FM局のラジオ番組『ピートのふしぎなガレージ』に取締役の石原が出演します

f:id:yasuaki-sakai:20170405150908j:plain

こんにちは、イノベーションオフィスの吉田です。

今日はお知らせをさせていただきます。

 

明日、6月16日(土)17時より、弊社取締役の石原がラジオ番組に出演いたします。

出演するのは東京FMの「ピートのふしぎなガレージ」という番組です。

www.tfm.co.jp

 

今回のテーマが「仮想通貨」ということで、「ブロックチェーンって最近よく聞くけど実はよくわかっていない」という方や、「仮想通貨って危ないの?」と思っている方などに向けてお話ししておりますので、ぜひご聴取ください

 

電縁では引き続きブロックチェーンに力を入れておりますので、出演のご相談やその他お問い合わせなど有りましたら以下までお願いいたします。 

株式会社電縁 コンサルティングチーム 石原 玲一
Mail:r.ishihara@denen.com
TEL:03-4500-4913

 

以上、お知らせでした!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain

GoogleアラートをGoogle Hangouts Chatに連携する

こんにちは、イノベーションオフィスの吉田です。

 

皆さんは G Suite ってご存知でしょうか?

gsuite.google.co.jp

G Suite は Google の各種サービスの企業向けの有料サービスなのですが、今年になってから G Suite 向けに Google Hangtouts Chat というサービスがリリースされました。

こちらがいわゆるチャットツールで、Slack の対抗みたいな感じなんです。

G Suite ユーザなら追加料金無しで使えるということで早速使ってみていたのですが、さすが Google だけあって Bot が簡単に作れるようでした。

 

というわけで、試しに Google アラートの更新を定期的に Google Hangouts Chat に投稿する Bot を作ってみましたのでご紹介したいと思います。

 

Google アラートの作成

ではまず Google アラートにアクセスしてアラートを作成してみましょう。

f:id:yasuaki-sakai:20180611185306j:plain

「アラートを作成」欄に取得したいキーワードを入力します。

今回は「ブロックチェーン」というキーワードを入力し、「配信先」を「RSSフィード」に、「件数」を「すべての結果」に指定しました。

入力・選択が完了したら「アラートを作成」ボタンを押してアラートを作成します。

f:id:yasuaki-sakai:20180611185645j:plain

作成したアラートの RSS のアドレスをコピーしておいてください。

 

Google Hangouts Chat の準備

続いて Google Hangouts Chat に移動し、投稿を行いたい部屋に入ります。

f:id:yasuaki-sakai:20180611190350j:plain

画面上部のメニューから「Webhook を設定」を選択します。

f:id:yasuaki-sakai:20180611190417j:plain

着信 Webhook の設定画面が開くので、「+ WEBHOOK を追加」を選択します。

f:id:yasuaki-sakai:20180611190506j:plain

「名前」の部分に Bot の名前を入力してください。

アバターの URL は空でも問題ありません。

入力が終わったら「保存」をクリックします。

f:id:yasuaki-sakai:20180611190554j:plain

無事着信用の Webhook が作成され、URL が発行されました。

こちらもコピーしておいてください。

 

スクリプトの作成

いよいよこれらを連携するスクリプトを作成したいと思います。

流れとしては以下の感じです。

  1. Google アラートの RSS を取得
  2. 更新が有ったら件数分 Google Hangouts Chat に投稿

簡単ですね。

RSS のパースや、更新記事が有るか無いかは SQLite を用いて URL をキーにして判断しており、以下の記事を参考にさせていただきました。

imabari.hateblo.jp

また、URL を urldecode する為に以下の記事も参考にさせていただきました。

qiita.com

というわけで出来上がったコードが以下になります。

# -*- coding: utf-8 -*-

import feedparser
import sqlite3
import json
import datetime
import sys
import io
import re
import urllib.parse
from html.parser import HTMLParser
from httplib2 import Http

FEED_URL    = 'https://www.google.co.jp/alerts/feeds/XXXXX/XXXXX'
WEBHOOK_URL = 'https://chat.googleapis.com/v1/spaces/XXXXX/messages?key=XXXXX&token=XXXXX'
DATABASE    = '/home/user/data/rss.sqlite'

class MyHtmlStripper(HTMLParser):
    def __init__(self, s):
        super().__init__()
        self.sio = io.StringIO()
        self.feed(s)

    def handle_starttag(self, tag, attrs):
        pass

    def handle_endtag(self, tag):
        pass

    def handle_data(self, data):
        self.sio.write(data)

    @property
    def value(self):
        return self.sio.getvalue()

# フィード取得
fdp = feedparser.parse(FEED_URL)

# SQLite接続
con = sqlite3.connect(DATABASE)
con.row_factory = sqlite3.Row
c = con.cursor()

# テーブル生成
c.execute('CREATE TABLE IF NOT EXISTS RSSEntries (entry_id INTEGER PRIMARY KEY AUTOINCREMENT, title, link, published);')

for entry in fdp.entries:
    # リンクの重複チェック
    c.execute('SELECT entry_id from RSSEntries WHERE link=?', (entry.link,))

    if len(c.fetchall()) == 0:
        # 新着情報
        c.execute('INSERT INTO RSSEntries (title, link, published) VALUES (?,?,?)', (entry.title, entry.link,datetime. datetime.strptime(entry.published, '%Y-%m-%dT%H:%M:%SZ')))

        # Hangouts Chat に投げる
        tmp_url = re.search('url=(.*)&ct=', entry.link)
        url = urllib.parse.unquote(tmp_url.group(1))
        message = {'text': ''.join([MyHtmlStripper(entry.title).value, '\n', url, '\n', MyHtmlStripper(entry.content[0].value).value])}
        headers = { 'Content-Type': 'application/json; charset=UTF-8' }
        http_obj = Http()
        response = http_obj.request(
          uri=WEBHOOK_URL,
          method='POST',
          headers=headers,
          body=json.dumps(message),
        )

con.commit()

# 過去データ削除
scope = datetime.datetime.now() - datetime.timedelta(days = 14);
c.execute('DELETE FROM RSSEntries WHERE datetime(published) < datetime(?);', (scope,)) 

con.commit()
con.close()

FEED_URL、WEBHOOK_URL に先ほどコピーした URL をそれぞれ設定してください。

そして SQLite のパスを DATABASE に設定してください。

これを実行すると以下のように Google Hangouts Chat の方に投稿されるかと思います。

f:id:yasuaki-sakai:20180611192214j:plain

最後に cron で定期的にこのスクリプトが実行されるようにすれば完了です!

私は試しに5分間隔にして動かしていますが、問題なく動作しています。

 

最後に

記事が長くなってしまいましたがいかがだったでしょうか?

今回は着信 WEBHOOK だけしか使っていないので、今度はもうちょっと Bot らしいものを作ってみたいと思います。

 

それでは!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain

社内のボードゲーム大会に参加しました!

はじめまして、つむじが2つの高野です。

社内でボードゲーム大会が開催されたので、参加させて頂きました。

 

今回、持ち寄って頂き集まったゲームはこんな感じです。カタンとPANDEMIC以外見たことない…!

f:id:yasuaki-sakai:20180606124537j:plain

今回はダンジョンオブマンダム、FORBIDDEN DESERTの二作について書いていきます。

 

ダンジョンオブマンダムは、プレイヤーがカードを引いてダンジョンを作るか、プレイヤーの分身となる冒険者の装備を剥ぐか、パスをしていき最後に残ったプレイヤーが冒険者となりダンジョンを攻略していくというチキンレース的なゲームです。

詳しくはwebで。

oinkgms.com

ダンジョンを攻略するとお宝がもらえ、二つ集めるとクリアできるのですが、ダンジョンの作成がとても難しい…。

強いモンスターを配置して、装備を剥ぎ取り過ぎると、ダンジョンが難しくなり過ぎて、自分が冒険者になってしまった時には、ダンジョンクリアができなくなってしまう、けれど簡単にして他のプレイヤーにお宝は取られたくない…そんな考えをしながらプレイしていました。

今回は装備を剥きすぎて、ダンジョンを攻略することができずに散っていく冒険者が続出していて面白かったです。

 

FORBIDDEN DESERTは、プレイヤー同士で協力しあって、砂漠から部品を集めて、船を作り脱出するゲームです。

f:id:yasuaki-sakai:20180606124951j:plain

水がなくなると死んでしまうため、水がとても重要なゲームです。今回は残る部品は1つだけという状況で、メンバーの残りの水の量が2で、2回連続で水を失うことはそうそう起きないから凌げるだろうと考えていたのですが…、まさかの2回連続で水を失うイベントが発生してしまい。あと少しというところで負けてしまいました…。

次回があるならリベンジしたいです!

 

普段はオンラインゲームやTRPGを友達とボイスチャットをしながら遊んでいますが、実際にプレイヤーが集まり、一緒の空間でゲームをすることは、声だけだと伝えられない表情や仕草なども判断のポイントとなってゲームの戦略性が高まり、また場の楽しい雰囲気を共有することができて良いですね。

 

次回のボードゲーム大会も是非、参加したいです!

 

書いた人:テレコム第2チーム 高野

f:id:yasuaki-sakai:20180606143111j:plain

本日、Schoo放送です!

f:id:yasuaki-sakai:20170405150908j:plain

こんにちは、イノベーションオフィスの吉田です。

今日はちょっとだけお知らせです。

 

4月よりSchooで放送されてきました「ニーズ爆発中の職種『ブロックチェーンエンジニア』にキャリアアップしよう」の第3回目が本日放送になります!

schoo.jp

放送は21時からになっておりまして、ゲストとして弊社エンジニアの小沼が出演いたします。

生放送であれば無料ですので是非ご覧ください!

 

内容等詳しい情報は上記ページ、もしくは以前の投稿をご覧下さい。

denen.hatenablog.com

 

電縁ではブロックチェーンに力を入れておりますので、出演のご相談やその他お問い合わせなど有りましたら以下までお願いいたします。 

株式会社電縁 コンサルティングチーム 石原 玲一
Mail:r.ishihara@denen.com
TEL:03-4500-4913

 

以上、お知らせでした!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain

Oculus Go は想像以上に買い!

f:id:yasuaki-sakai:20180529104932j:plain

こんにちは、イノベーションオフィスの吉田です。

皆さんは Oculus Go をご存知でしょうか?

www.oculus.com

VRヘッドセットで、ネット上でも紹介記事が多数有るのでご存知の方も多いかと思います。

先日、後輩が Oculus Go を買って会社に持ってきてくれたので試させてもらったら、想像以上に楽しかったのでちょっとだけ感想を書きたいと思います。

 

私自身、展示会等で少しお試し程度でしかVRを体験したことは有りませんでした。

ああいうところだと行列が出来ていたりしてなかなか気軽に試しづらいんですよね・・・

というわけで今回は非常にいい機会だったのでわざわざ会議室を押さえてみました(笑)

早速、セットアップしてくれるのを待ちます。

f:id:yasuaki-sakai:20180529105101j:plain

はたから見るとどうしてもシュールに見えますよね・・・

 

Wi-Fiに繋げばセットアップ完了!ということで以下のコンテンツを触らせてもらいました。

altvr.com

こちらはVR空間内で世界のユーザとコミュニケーションがとれるサービスだそうです。

ちゃんとアバターが居る方向から声が聴こえてくるので、ちょっと応用すれば社内の会議とかもこれで出来るのでは・・・なんて思いました(笑)

 

そして以下のコンテンツも体験しました。

www.oculus.com

いわゆるホラー系ですね。

音がした方を見るとなんか変なのが居る!みたいな体験が出来て面白かったです。

ちなみに持ち主の子はそういうのがダメでほとんど遊んでないそうです(笑)

 

というわけで実際にじっくり試してみたところ、とても面白くてワクワクして、何かアプリを作ってみたいと思ってしまいました。

しかも Oculus Go は 32GB モデルなら 23,800 円で買えてしまいます!

オススメしている方も多いと思いますが、これは買いですよ!

 

そうそう、VRといえばVRZONEの記事も有りますのでそちらも是非ご覧下さい。

denen.hatenablog.com

denen.hatenablog.com

 

というわけで Oculus Go が欲しくなったというお話でした。

会社で取り組むかどうかは分かりませんが、アプリを作った際にはご紹介したいと思います。

それでは!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain

Trip In Bali Part3

テレコム第2チーム大内です。

気づいたら3年目になっていました。といったタイミングで昨年9月、同期と後輩と夏季休暇にバリ島へ行ってきたお話第3弾をします。

(いつ完結するんでしょうね。笑)

 

denen.hatenablog.com

denen.hatenablog.com

 

3日目は1日カーチャーターをしてバリ観光!

有名なものやお土産などについて書かせていただきます。

 

有名な寺院を巡るコースや、ケチャという伝統芸能をみるコースなどされているのですが…

今回ツアーの内容は事前に私たちの希望を聞いて関さんがコーディネートしてくれました!!

さすがですね( ˙³˙)

 

最初に申し上げておくとこのカーチャーター。

現地の日本語がお上手なガイドさんと親切な運転手さん、快適な車を1日貸し切りなのですが…

約5000円。別途通行料やガソリン代はかかるものの破格です!

 

もちろんお寺も!

こちらはティルタ・エンプル

f:id:yasuaki-sakai:20180524103018p:plain

 

もちろんお買い物も!

バリは村々によって絵画だったり、織物だったり、シルバーだったりと、有名な工芸品が決まっているようです!

私の希望でチュルックという村のシルバーアクセサリーのお店へ

f:id:yasuaki-sakai:20180524103041p:plain

一つしか載せてませんが…実際結構ご購入してます。すごく細かい細工ですが手作りです!

 

"ellips"というモロッコ脂のヘアトリートメントも有名です。

f:id:yasuaki-sakai:20180524103108j:plain

 

大平くんも爆買いしてますね!

f:id:yasuaki-sakai:20180524103132p:plain

 

コーヒーも有名で。

f:id:yasuaki-sakai:20180524103208p:plain

このジャコウネコちゃんが作り出すコーヒーの美味しいこと。

高級なこと。気になった方はググってみてください!

 

バリといえばサンセットですよね!

旅行のパンフレットでみたことのある景色が広がっているわけです!

f:id:yasuaki-sakai:20180524103244p:plain

砂浜でディナーなんていただいちゃいました。

おしゃれです。インスタ映え

 

と。至福の夏期休暇について

また行けたら。と思い返しました。

 

書いた人:テレコム第2チーム 大内

f:id:yasuaki-sakai:20170710100743p:plain

Google Apps Script でログインしているユーザごとに表示を変える

こんにちは、イノベーションオフィスの吉田です。

以前、Google Apps Scriptに関して以下の記事を書きましたが、また別のツールを作成したのでご紹介したいと思います。

denen.hatenablog.com

 

今回は「ログインしているユーザごとに表示を変える」方法になります。

社内向けのツールなどを作っていると、ログインしているユーザごとに表示を切り替えたい場合が出てきますよね?

実はログインしているユーザ(Googleアカウント)を取得するのは非常に簡単です。

  var user = Session.getActiveUser();
  var email = user.getEmail():

はい、これだけです。

とはいえ記述する場所には注意が必要で、コード.gsの中のdoGet()内に記述してください。

 

ユーザの情報が取得できたので、今度はそれに紐付く関連情報を取得したいと思います。

関連情報に関しては以下の様にGoogle Spreadsheets上に表形式で登録されているものとします。

f:id:yasuaki-sakai:20180521151208j:plain

メールアドレスをキーに検索を行うわけですが、いい感じの記事が有りましたので以下を参考にさせていただきました。

tonari-it.com

結果、以下のコードでスプレッドシートから値を取得することが出来ました。

  // スプレッドシートを開く
  var spreadsheet = SpreadsheetApp.openById('XXXX-XXXXXXX');
  // シートを選択
  var sheet = spreadsheet.getSheetByName('シート1');
  // 該当の行を取得
  var row = findRow(sheet, user.getEmail(), 1);

  function findRow(sheet,val,col){
    // 受け取ったシートのデータを二次元配列に取得
    var dat = sheet.getDataRange().getValues();
 
    for(var i=1;i<dat.length;i++){
      if(dat[i][col-1] === val){
        return i+1;
      }
    }
    return 0;
  }

最後はこれを画面に表示してみましょう。

Google Apps Scriptで画面を表示する為にはまずHTMLを用意する必要があります。

プロジェクトのメニューからファイル⇒新規作成⇒HTML ファイルを選択すると、index.html が追加されるかと思います。

あとはこれを以下のように表示するだけです。

  // テンプレート生成
  var tpl = HtmlService.createTemplateFromFile('index'); 
  // 社員名
  tpl.employee_name = sheet.getRange(row, 2).getValue();
  // 役職
  tpl.employee_position = sheet.getRange(row, 3).getValue();
  // テンプレートを表示
  return tpl.evaluate(); 

こちらもdoGet()の中で記述するようにしてください。

 

メニューから公開⇒ウェブ アプリケーションとして導入と辿って、「最新のコード」と書いてあるリンクから動作が確認出来るかと思います。

なお、実際に公開する際は「次のユーザーとしてアプリケーションを実行:」という項目で「ウェブ アプリケーションにアクセスしているユーザー」を選択してください。

これを選択しないと誰がアクセスしてもスクリプトの作成者の情報が表示されてしまいます。

 

いかがでしたでしょうか?

結構簡単だったのではないかと思います。

また良さげな使い方があったらご紹介したいと思います。

それでは!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain

ブロックチェーンブログのご紹介

f:id:yasuaki-sakai:20180509143540p:plain

当ブログをご覧の皆様

 

はじめまして、絶賛インターン2年目の福徳です。

安否確認サービスgetherdのマーケティングや開発を行っています。

www.getherd.jp

 

今回は先月開設したブロックチェーンに関する専門メディアblockchain.denen.comについてご紹介させていただきたいと思います。

blockchain.denen.com

 

blockchain.denen.com は先日 Schoo に出演した弊社イノベーションオフィスの吉田室長が手がけたブロックチェーンに関する専門のメディアです。

 

弊社がブロックチェーン事業に意欲的に取り組んでいることを社外へ発信することを目的とし、ブロックチェーンに関する基礎知識や最新のニュース、技術的な知識まで様々な記事を掲載していく予定です。

 

まだまだ記事数自体は少ないのですが、随時更新されていく予定ですのでぜひご覧ください!

 

書いた人:インターン 福徳

f:id:yasuaki-sakai:20180509143659j:plain

AI・EXPOも行ってきました

こんにちは

自社製品開発チームのフーフンです。

4月に開催されたAI・人工知能EXPOも行って来ました!!!(レポートは怠けていたが。。。)

自分の関わる業務にAIを適用する可能性があり、いまAIの知識全くない自分はそろそろ調査しないといけないと考えています。このきっかけで今回の展示会に行ってみました。

 

さて、気になっているのを紹介したいと思います。

展示内容

まずロボットです!!

f:id:yasuaki-sakai:20180507154049j:plain

気になっているのいつもこういうファンシーなところですよね。

f:id:yasuaki-sakai:20180507154121j:plain

AIの技術を使い、画像・音声認識でロボットを開発している。既存のデータから学習し、人の名前、声などを十分に理解出来る程度でした。(人間形のロボットに入れ込むのはさすが日本!)

 

それから、機械学習分野の中に流行っている製品の一つ、チャットボットです!

f:id:yasuaki-sakai:20180507154202j:plain

 

f:id:yasuaki-sakai:20180507154242j:plain

今回の展示会にて5割ぐらいこれらみたいなブースですかね。まあ、多すぎて面白いところも見えないですが、言語処理・画像認識のAI技術が日本にかなり進んでいると感じられています。

 

では、今回みてよかったところはこちらです。

SalesforceのEinstein

f:id:yasuaki-sakai:20180507154326j:plain

f:id:yasuaki-sakai:20180507154401j:plain

世界CRM(Customer Relationship Management)最強のセールスフォースさんのサービスで、AIを使ってセールス支援ツール、アインシュタインといいます。

 

企業の既存マスタ(業界、規模、営業プラットフォームなど)及び顧客データ(取引履歴、インバウンド履歴など)から分析し、点数をつけ、戦略をアドバイスできるツールです。

こういうことできたから、単にアシスタントではなく、コンサルタントですよね。

 

※説明を聞いたあとの感想ですが、このサービスを使えば、論理的な判断がアインシュタインに任せ、営業のやる仕事はほぼ接客だけではないだろうか。

AI開発支援プラットフォーム・ABEJA

f:id:yasuaki-sakai:20180507154503j:plain

当日、展示されているものの中で、自分たち開発の人間にとって一番役に立つブースです。

 

いざAIを取り込もうとなったときに、どこからってかなり悩んでいます。やはりゼロからだと辛い、データ保守やモデルバージョン管理などのタスクはかなり面倒です。

ABEJAプラットフォームはそれらを一貫して実装できる環境を提供しているため、これを使えば自分のビジネスだけに集中することができます。

 

AIビジネスの提供を早く行えるようにこのようなプラットフォームを活用したいと思っています。

今の時点はAIについての知識がまだ浅いですが、こういったプラットフォームに魅力を感じられました。

まとめ

短い時間で参加したが、新しい技術を見えて結構モチベーションが上がっていました。

以上となります。

 

書いた人:innopm担当 フーフン

f:id:yasuaki-sakai:20170822115442j:plain