Denen blog

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

Swift 4 の WKWebView で alert や confirm に対応してみた

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

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

最近 Swift 4 で WKWebView を使う機会が有ったのでメモ的投稿です。

 

WebView を使うとアプリが簡単に作れて便利なのですが、 JavaScript の alert や confirm にデフォルトでは対応してくれていませんでした。

というわけでざっと調べてみたのですが Swift 4 で対応している記事が見つからなかったので書いてみました。

早速コードになります。

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
    
    let wkWebView1 = WKWebView()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let urlString1 = "https://www.google.co.jp/"
        let encodeUrlString1 = urlString1.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
        
        let url1 = NSURL(string: encodeUrlString1!)
        let request1 = NSURLRequest(url: url1! as URL)
        
        let userAgentStr = "My Browser App"
        wkWebView1.customUserAgent = userAgentStr
        
        wkWebView1.uiDelegate = self
        wkWebView1.navigationDelegate = self
        
        wkWebView1.frame = view.frame
        view.addSubview(wkWebView1)
        wkWebView1.load(request1 as URLRequest)
    }

    // alert対応
    func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
        let alertController = UIAlertController(title: "", message: message, preferredStyle: .alert)
        let otherAction = UIAlertAction(title: "OK", style: .default) {
            action in completionHandler()
        }
        alertController.addAction(otherAction)
        present(alertController, animated: true, completion: nil)
    }
    
    // confirm対応
    func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
        let alertController = UIAlertController(title: "", message: message, preferredStyle: .alert)
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) {
            action in completionHandler(false)
        }
        let okAction = UIAlertAction(title: "OK", style: .default) {
            action in completionHandler(true)
        }
        alertController.addAction(cancelAction)
        alertController.addAction(okAction)
        present(alertController, animated: true, completion: nil)
    }
    
    // prompt対応
    func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) {
        
        // variable to keep a reference to UIAlertController
        let alertController = UIAlertController(title: "", message: prompt, preferredStyle: .alert)
        
        let okHandler: () -> Void = {
            if let textField = alertController.textFields?.first {
                completionHandler(textField.text)
            } else {
                completionHandler("")
            }
        }
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) {
            action in completionHandler("")
        }
        let okAction = UIAlertAction(title: "OK", style: .default) {
            action in okHandler()
        }
        alertController.addTextField() { $0.text = defaultText }
        alertController.addAction(cancelAction)
        alertController.addAction(okAction)
        present(alertController, animated: true, completion: nil)
    }
    
}

WKUIDelegate を継承して、alert / confirm / prompt を引っ掛けてあげる感じですね。

参考になれば幸いです。

 

それでは。

 

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

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

ブリ最高!

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

気付けば1ヶ月ぶりの更新になりますね・・・

 

今回はブリのお話をしたいと思います(笑)

弊社には昔から大量のふるさと納税を行っているマネージャーがおりまして、ブリが届くという連絡をいただき先日お邪魔してきました!

 

早速ですが、捌いていただいている姿です(笑)

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

丸々1匹届くのでその写真を撮っておけば良かったのですが忘れていました・・・ 

しばらくするとお刺身がやってきました!

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

見るからに美味しそうですね!

実際、脂が乗ってとても美味しかったです。

f:id:yasuaki-sakai:20190208170024j:plain
他にもブリシャブや鯖のピザもご馳走になりました!

ご馳走になるばかりで申し訳ない思いもあるのですが、マネージャーいわく「実質タダなので大丈夫!」とのことでした(笑) 

 

こういうのを体験するとふるさと納税を自分もしてみたい!と思いますが、ブリは家で捌けないのが難点ですね(笑)

以上、ブリのお話しでした(笑)

 

それでは!

 

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

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

Amazon Linux 2環境にPython 3.5.2とPostgreSQL 10をインストールしたお話

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

Denen blog をご覧の皆様、あけましておめでとうございます。

イノベーションオフィスの吉田です。

本年もよろしくお願いいたします。

 

早速ですが新年1発目ということで昨年末の話をさせてください(笑)

 

昨年末、訳有って EC2 環境に Python 3.5.2 と PostgreSQL 10 をインストールしたのですが、意外とためになったのでメモとして残しておこうと思います。

時期によってパッケージのバージョンが変わってしまうので、2018年12月時点のお話として読んでいただければと思います。

 

前提

OS:Amazon Linux 2

YUM 上にある Python 3 のバージョン:3.7.1

YUM 上にある PostgreSQL のバージョン:9.6

 

Python 3.5.2 のインストール

Python をバージョン指定してインストール手法は幾つかありますが、ここでは自分でビルドすることにしました。

まずは必要なライブラリをインストールします。

$ sudo yum groupinstall 'Development tools'
$ sudo yum install openssl-devel
$ sudo yum install sqlite-devel

次にパッケージをダウンロードしてきてビルドします。

$ mkdir work
$ cd work
$ wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
$ tar vxzf Python-3.5.2.tgz
$ cd Python-3.5.2
$ sudo ./configure --prefix=/usr/local
$ sudo make
$ sudo make install

これで python3 コマンドが使えるようになります。

こちらは簡単ですね!

 

PostgreSQL 10 のインストール

さて、問題はこちらです。

実は Amazon Linux 2 には Extra Library と呼ばれるパッケージ群が存在しまして、新しいバージョンのパッケージがインストール出来たりします。

dev.classmethod.jp

しかし、細かいパッケージを指定する方法がいまいち見つからなかったので力技でやってみました。

 

Extra Library も YUMリポジトリの1つのような形なので、まずは YUM からパッケージをインストールします。

$ sudo yum install --enablerepo=amzn2extra-postgresql10 postgresql postgresql-server postgresql-libs postgresql-contrib

はい、リポジトリを指定してあげればいいんですね。

そしたら後は PostgreSQL のセットアップを行っていきます。

$ sudo postgresql-setup initdb
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql

これで完了です。

 

というわけで Amazon Linux 2 の小技でした。

どなたかの参考になれば幸いです。

 

それでは!

 

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

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

Azure Resource Manager テンプレート作成時に独自のファイルを展開させる方法

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

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

 

みなさんは Azure を使ってらっしゃいますでしょうか?

最近知ったのですが、Azure には Azure Resource Manager(ARM)テンプレートというものが用意されていまして、色々な構成のインスタンスを簡単に作成することが出来ます。

以下をご覧いただければ分かると思いますが、既に様々なテンプレートが公開されているんです。

github.com

例えば「wordpress-mysql-replication」なら、Master-Slave 構成の MySQL が動いている Wordpress 環境を作成することが可能です。

 

この ARM テンプレートでは Azure 上に用意されたリソースを組み合わせて JSON 形式に記述していく仕組みになっています。

で、とある事情でこのテンプレートを作ってみていたのですが、リソースとして用意されていない特定のファイル群を特定の場所に配置したい!みたいな時にどうすればいいか困ってしまいました。

色々調べた結果シェルが実行出来るようなのでそちらを使ってやりたいことを実現出来たのでご紹介したいと思います。

※他にこんなやり方有るよ!って方は教えてください(笑)

 

それではまず、配置したいファイル群を tar.gz 形式に固めて Web から閲覧出来る場所に配置してください。

今回は URL を http://www.example.com/download/resource.tar.gz とします。

 

次に、ファイルをダウンロードして展開するシェルを用意します。

コードは以下の通りです。

#!/bin/sh

mkdir -p /opt/my_resource
wget -P "/opt/my_resource/" http://www.example.com/download/resource.tar.gz
tar xvzf /opt/my_resource/resource.tar.gz -C /opt/my_resource

シンプルですね。

ディレクトリ作ってダウンロードして解凍するだけです。

今回は http://www.example.com/download/download.sh に配置することとします。

 

で、一番のキモがここになります。

ARM テンプレートは azuredeploy.json という JSON 形式のファイルに記述するのですが、Linux でシェル実行するには以下の形で記述する必要があります。

    { 
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "name": "[concat(variables('vmName'),'/downloadResource')]",
      "apiVersion": "2017-03-30",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
      ],
      "properties": {
        "publisher": "Microsoft.OSTCExtensions", 
        "type": "CustomScriptForLinux", 
        "typeHandlerVersion": "1.2", 
        "settings": {
          "fileUris": [
            "http://www.example.com/download/download.sh"
           ],
           "commandToExecute": "sh download.sh"
        }
      } 
    },

variables() や parameters() は任意の値を設定する仕組みなのですが、今回の内容と関係ないので説明は省かせていただきます。

この記述で気にしていただきたいのは以下になります。

  • dependsOn で OS イメージの起動を待つよう指定する
  • properties.publisher で Microsoft.OSTCExtensions を指定する
  • properties.settings.filterUris で実行したいシェルファイルを指定する
  • properties.settings.commandToExecute で実行するコマンドを指定する

これで実際にデプロイしてみるとファイルが展開されるようになるかと思います。

 

ARM テンプレートは慣れるとデプロイも早く、便利なので自分でももっと使っていこうと思います。

それでは!

 

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

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

1食で1日に必要な栄養の1/3が摂取できるBASE RAMENを食べてきました!

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

皆さんは完全食というものをご存知でしょうか?

 

Wikipedia によると

完全食(かんぜんしょく)とは、健康を維持するために必要な栄養をすべて含んだ食品、あるいは食事である。

だそうです。

で、最近ラーメンでも完全食が有るというネタを見つけました。

そのラーメンは BASE RAMEN という名前で、BASE FOODさんが開発したそうです。

basefood.co.jp

元々は完全食のパスタを販売されていたんですね!

今回はラーメン凪とコラボしたとのことで、ちょうど会社の近くにあるので食べてきました!

こちらのお店は食券を先に買うタイプなのですが、よく見てみると・・・

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

「店内現金で注文承ります!!」とのことでした。

早速入店して注文します。

通常であれば味の濃さや麺の固さなどが選べるはずですが、こちらのBASE RAMENに限ってはそういうものは有りませんでした。

 

そして到着!

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

麺の色が特徴的ですね!

食べてみるとだいぶ歯ごたえの良い麺でした。

スープは煮干の効いたいつもの凪のスープで、美味しくいただきました!

 

ちなみにどこまで食べれば栄養が摂れるのだろう?と思ってTwitterで呟いたところ、公式アカウントさんからお返事をいただきました(笑)

だそうです。

1週間コレだけ食べたらどうなる?的なことも気になるので誰かチャレンジしてみてください(笑)

 

それでは!

 

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

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

トイレの空き状況をリアルタイムに確認できる「トイレIoTシステム」の提供を開始

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

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

本日、以下のプレスリリースを出させていただいたのでそのお知らせです!

www.denen.com

 

皆様の会社で「トイレに行ってもトイレの個室がなかなか空いていない!」みたいなことが有ったりしないでしょうか?

このサービスは個室トイレの空き状況をトイレに行かず確認できるものとなっています。

詳しくは毎度の事ながらリンク先をご覧いただければと思います。

 

ちなみに弊社のトイレにも以下のような感じで早速設置しています。

※画面デザインは社内用のサイネージ向けにカスタマイズされたものとなります。

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

導入後は以前よりも個室が空いていない事が減ったように感じます。

可視化されることで長居する人が減ったのかもしれませんね!

ご興味有る方は是非お問い合わせいただければと思います!

 

それでは!

 

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

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

今年も社内ハッカソンを開催しました!

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

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

寒くなったかと思ったら、急に暖かくなったりして服装が難しい季節ですね。

 

今日は、先週開催した社内ハッカソンのご紹介をしたいと思います。

※「社内」と言っても社内で開発する訳では無く、社内の人間だけが参加という意味合いです。

 

ちなみに去年の記事はこちらです。

denen.hatenablog.com

 

去年は山梨県石和温泉でしたが、今年は千葉県に行ってきました。

場所はこちら!

合宿スペースについて | コワーキングコミュニティまるも

南房総、金谷に有るコワーキングコミュニティまるもさんです。

こちらはJR内房線浜金谷駅から徒歩で行けるので車が無くても安心です!

徒歩圏内にはスーパー、コンビニ、飲食店、フェリー乗り場(!) 等が有り、食料等の調達も困りません。

しかもコワーキングスペースだけあってホワイトボードや電源タップ、Wi-Fi、液晶ディスプレイなども揃っており至れり尽くせりな感じです。

 

というわけで着いたら早速準備&開発開始です!

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

皆さん頑張ってますね!

私は運営側なので気楽です(笑) 

 

実は、まるもさんの合宿プランでオススメなのが夕食のBBQです!

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

コワーキングスペースの真ん前でBBQが楽しめるんです!

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

皆さん非常に楽しんでました!

夕食が終わったらまた開発に戻り、皆さん夜中まで頑張っていました!

 

そして浜金谷でもう1つオススメしたいのがアジフライです!

テレビなどでも取り上げられているので知っている方もいらっしゃるかと思いますが、黄金アジが有名で特にさすけ食堂さんが有名なようです。

sasukeshokudou.com

というわけで行ってきました(笑)

今までアジフライ定食を自ら頼んだことなど無かったのぐらいアジフライを食べたことは無かったのですが・・・こちらのアジフライは絶品でした!

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

刺身も美味しかったですし、この為に来る人が居るというのも頷けます。

お昼を食べたらまた開発に戻り、夕方まで皆さん頑張っていました。

 

場所を変えて気分を変えて開発を行うのは楽しいのでまた来年も開催したいと思います。

そろそろ社外の人も巻き込んで・・・なんて考えていますが、どうなることやら。

このブログをご覧になっている方にご参加いただける日が来たらいいなぁなんて思っています。

 

それでは!

 

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

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

Evolv を体験してきました!

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

はじめまして!山﨑です。

 

最近は飲み会で「体が重たくなってきた気がする、、運動するわ、!」と口だけだった僕がついに!!なかなか重かった腰をどうにかあげたぞ!というお話です。

 

今回は11/19(月)に五反田店がオープンしたEvolvというトレーニングジムの体験レッスンに行ってきました。

www.evolv-ems.com

本社から徒歩2分ほどなので、アクセスのしやすさは抜群ですね。

 

イケイケのクラブミュージックが流れ、キラキラしたスタッフの爽やかな笑顔に場違い感を感じつつ、初入店。

 

まずはアンケートの記入等、書類に目を通しました。来店目的を選ぶ項目で「ダイエット」と「ボディメイク」にチェックを入れて、体のどの部位を引き締めたいかを選びます。(これがこのあと悲劇を呼ぶ)

体重計にのり、体脂肪率やらを計測してくれました。

 

体験レッスンというのもあり、トレーナーの方がマンツーマンでついてくれました。

今回はサーフィンしてそうなお姉さん(しているかどうかは知りませんが。

以下、SAWAさん)が担当。

そこで、このお店の趣旨と、どんなことができるのかを説明してくれました。

  • EMS搭載スーツを着ることで自重の7倍の負荷をかけたトレーニングができる
  • 2ヶ月でめちゃめちゃ痩せる(HPに写真がある。回数にすると10回はレッスンを受けたそう)
  • EMS搭載のスーツの中でもワイヤレスになっているスーツは最先端
    (有線タイプだとコードが繋がっている状態でトレーニングをすることになる)
  • 一回のトレーニングはたったの20分
  • シャワー、ロッカー完備
  • 会社帰りに手ぶらで気軽にレッスンを受けられる

などなど、、

 

至れり尽くせりだし、効果も期待できそう!とテンションが上ってきたところでさっそくスーツに着替えます。

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

ピッチリのスーツなので電極が体に密着するのでより効果を得られるのだとか。

電極がない部分は少しゆるいところもあり、苦しくはなかったです。

 

スタジオはInstagramでモデルが

パーソナルトレーナーと一緒に今日は下半身を中心に攻めました♡!!」

なんて投稿したらイイねが20,000くらいつきそうな雰囲気。

 

レーニングはまず体を温めるために、アップから(回数は意識が朦朧としていたため曖昧です、、)。

  • リズムよく、片方の肘と反対の脚のひざを交互にタッチを20回
  • ジャンプして脚を開いて閉じてと同時に頭の上で両手タッチ、これも20回
  • その場でもも上げダッシュ(30秒)

今年、入社したばかりなので余裕こいてましたが、なんだかクラクラしはじめました。

水飲もうとしたらまだダメと怒られました、、嘘でしょ、、(注:まだ電気流れてません

 

ここから本格的にトレーニング開始。トレーニングにはレベルがあって大きく分けると6段階。

今回は一番スタンダード(レベル1)で20分間、7種のトレーニングを行いました。

メニューはこんな感じ

  • 足を左右に開いてスクワット
  • 前後に開いてインラインスクワット
  • 片手片足で足上げ(ハム)
  • 腹筋(下腹部
  • ワイド腕立て
  • コア(腹筋よりと、背筋より)
  • もう一回スクワット

EDMが爆音でかかる中、ひたすらサボることを許されず、強制的に追い込まされました。

鍛えたい部位のトレーニングではその部分に流れる電気は「激強」です。

SAWAさんは電気の強弱を変えられるipad片手に「まだ行ける!あと○回!!息吐いて!!」

と声をかけながら苦しんでいる僕の周りをぐるぐる回ります。

さらに、アンケートに腹筋割りたいなんて書いたもんだから腹筋のときは電気の強さが尋常じゃない、、

 

途方もなく長いと感じた時間はジャスト20分、、。全身から汗が吹き出してました。

 

無事、トレーニングが終わると、トレーニング前に計測した体の情報がシートになっていました。

どの部位がグラマーなのかを丁寧に教えてくれます。おそらくトレーニングレベルによるのですが、

たった20分間のトレーニングで700キロカロリーを消費できるのだとか。おそろしや、、

 

それからトレーニングして二日間は筋肉が燃え続けるから食生活には注意が必要と教えてくれました。

栄養を欲しているところにコッテリしたラーメンとかお酒はまずいですよね、。意識が変わるきっかけかも。

 

これで体験レッスンは終了。ロッカーにあるシャワーを浴びて帰宅しました。

 

いまなら体験レッスン¥1,080を受けて、一週間以内に入会すると入会金無料だそうです。

興味のある方はぜひ、体験してみてください!次の日から筋肉が悲鳴を上げるので効果を実感できますよ!!

 

書いた人:テレコム第2チーム 山﨑

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

Google Cloud Platform で Deep Learning 環境を作成!

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

最近めっきり寒くなりましたね。

そんな中、弊社では今週末に1泊2日のハッカソンに行って参ります!

で、今はその準備中なのですが、 Google Cloud Platform(以下 GCP)で Deep Learning 環境を作成した際にちょっと躓いたので共有させていただきます。

 

GCPとは

ご存知の方も多いと思いますが、Googleクラウド上で提供するサービスの総称です。

AmazonAWSMicrosoft の Azure と同じ感じですね。

詳しくは以下のサイトが参考になるかと思います。

www.cloud-ace.jp

 

インスタンスの作成

というわけで早速 Deep Learning 環境を作ってみましょう。

今回は Google Compute Engine を使いたいと思います。

AWS で言うところの EC2 みたいなもんです。

Cloud Machine Learning というのも有るのですが、今回はわかりやすい Compute Engine の方を使います。

 

というわけでまずは以下ページにアクセスします。

console.cloud.google.com

Deep Learning VM」というタイトルと「COMPUTE ENGINE 上で起動」というボタンが見えるでしょうか?

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

こちらは GCP Marketplace 上のアイテムの1つで、数クリックで環境が作れてしまう便利機能になっています。

 

というわけで早速「COMPUTE ENGINE 上で起動」ボタンを押すとプロジェクトの紐付け画面が表示されます。

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

モザイクばかりで申し訳有りません(笑)

こちらでプロジェクトを選択して「開く」を押します。

 

するとデプロイの設定画面が開きますので、必要な項目を設定していきます。

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

Zone はできれば東京(asia-northeast1)にしたいところですが、GPUの割り当てが出来ないので asia-east1 辺りにするのが良いと思います。

あとは「Install NVIDIA GPU driver automatically on first startup?」にチェックをするのをお忘れなく。

で、「デプロイ」を押すとデプロイ処理が走るのですが・・・

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

はい、エラーが出ましたね(汗)

 

Quota 'GPUS_ALL_REGIONS' exceeded. への対応

エラーメッセージとしては「Quota 'GPUS_ALL_REGIONS' exceeded.」ということで、以下のサイトにも書いて有る通り GPU の割り当ての設定が必要なようです。

www.m0de.ml

というわけで「IAMと管理 ⇒ 割り当て」を開いてみましょう。

ここでサービス・指標を選択するのですが、多すぎて最初は迷います(笑)

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

サービス:Compute Engine API

指標:GPUs(all regions)

を選択し、チェックして「割り当てを編集」しましょう。

※ここで NVIDIA K80 GPUs とか選んでもダメで少しハマりました・・・

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

編集画面で使いたい GPU の数とリクエストの説明を入力して「リクエストを送信」するとリクエストは完了です。

誤差は有りますが私の場合は1時間ほどで承認されて以下のような内容のメールが送られてくれば準備完了です。

Changed Quota:
+------------------+------------------+
| GLOBAL Attribute | GPUS_ALL_REGIONS |
+------------------+------------------+
|     Changes      |      0 -> 4      |
+------------------+------------------+

あとは改めてデプロイしてみると・・・

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

出来ました!

あとはブラウザからコンソールが開けるので、SSH 等の設定をすればアクセス出来るようになります!

この環境は Python 2/3、tensorflow、Keras などが既にセットアップ済みなので後はガリガリ学習するのみです!

k_yoshida@tensorflow-1-vm:~$ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> print(tf.__version__)
1.12.0
>>> import keras
Using TensorFlow backend.
>>> print( keras.__version__ )
2.2.4

 

というわけで GCP についてでした。

社内ハッカソンに関してはまた別の機会にご紹介できればと思います。

それでは!

 

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

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

株式会社Scalarと分散型台帳ソフトウェア「Scalar DLT」での協業を開始

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

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

昨日、以下のプレスリリースを出させていただいたのでそのお知らせです!

www.denen.com

 

詳しい内容はリンク先をご覧いただければと思いますが、今回は株式会社Scalarの Scalar DLT という分散型台帳ソフトウェアでの協業を開始したとの内容になっています。

電縁では以前より Ethereum、Hyperledger Fabric 等のプラットフォームを使用してのブロックチェーン利用システムの開発を行ってきました。

その中で上がってきた課題を解決しうるソリューションとして Scalar DLT には非常に魅力を感じ、今回の協業に至った次第です。

 

これからもブロックチェーン/分散型台帳を盛り上げていく為に頑張っていきますので応援いただけると幸いです!

 

それでは!

 

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

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