kintone hack で勝つためにこだわったもう 1 つのポイント

はじめに

kintone hack で勝つためにこだわった 5 つのポイントでは書ききれなかった内容について触れたいと思います。

blog.r3it.com

私が kintone hack に出たいと思ったのは、2018 年の kintone hack で登壇者の皆さんが自分の好きな曲をバックに登場してくるシーンがとてもかっこよく羨ましく感じたためで、「来年こそは鈴木愛理ちゃんの曲を幕張メッセで流したい」という一心で準備をしてきました。

当初の候補曲

上記のようにかっこよく登場することに憧れていたため、鈴木愛理ちゃんもしくは℃-ute(2017年の解散まで愛理ちゃんが所属していたたグループ)の楽曲の中で特にかっこいいと思う曲にする予定でした。

1 つは℃-ute 時代の曲である「Kiss me 愛してる」です。 この曲はライブでもイントロがかかった瞬間に場内が興奮に包まれるぐらいファンの間でも人気の曲で、私が℃-uteの曲の中で一番好きな曲です。 2017年の解散コンサート(さいたまスーパーアリーナ)でもまだ2曲めにも関わらずこの曲のイントロがかかった瞬間に「あ~、この曲を二度と聴けなくなるのか」と思って涙を流したものです。

www.youtube.com

もう 1 つは鈴木愛理ちゃんの 1st アルバム「Do me a favor」に収録されている SCANDAL とのコラボ曲「STORY」です。 この曲は今のライブでの定番曲となっており、「ソロになってからのかっこいい曲」と考えるとこの曲が一番でした。

www.youtube.com

他にも良い曲はたくさんありますが、登場曲はあまり長くかからないためイントロのかっこいい曲が良いなと考えるとこの2曲が有力で、予選が終わった直後は本戦の準備そっちのけで登場曲をこの 2 曲のうちどちらにするかで悩んでいました。

本番で流した曲とその理由

もともとは上記の 2 曲が有力候補だったのですが、実際に本番では「IDENTITY」という曲を選びました。

www.youtube.com 理由は 3 つほどあります。

かっこよさ??

まず1つめに、落ち着いて考えてみれば「かっこよく」というのは自分のキャラに合っていないことに気づきました。曲を決める時点ではアイドルオタク全開の T シャツを着て登場することに決めていたため、曲もアイドル全開、オタク全開の曲の方が合っているんじゃないかな?と思うようになりました。

歌を聴いて欲しい

2つめに、「会場に来る人には愛理ちゃんの曲を聞いて欲しい」という想いがありました。「Kiss me 愛してる」や「STORY」はかっこよく登場できますが歌い出しまで15秒~20秒かかるため、会場に来た人はイントロを聞いただけであとは司会のお二人のコメントに集中するので殆ど歌は印象に残らないのでは?と思いました。

本人のイチオシ

3つめには愛理ちゃんの言葉があります。単独でのコンサートであればバンド系の曲、ダンス系の曲、バラードなどいろいろな曲を歌いますが、フェスなどファン以外の観客が多いときには盛り上がるようにバンド系の曲を中心にセトリが組まれます。その中でも、Buono!(℃-uteと並行して所属していたサブユニット)の楽曲である「初恋サイダー」は多くの地下アイドルがカバーしていたり、愛理ちゃんが過去に携わった曲の中でもフェスなどの外仕事では一番盛り上がる曲でした。

しかし、愛理ちゃん自身はこの状況をあまりうれしく思っておらず「初恋サイダーより盛り上がる曲を作りたい」と常々思っていて、そういったオーダーの下「初恋サイダー」と同じしほりさんに制作を依頼して出来上がったのが「IDENTITY」でした。

これらのことを考えると、曲の頭から歌が始まり、曲のイメージからもアニソンぽい雰囲気で、愛理ちゃん自身も喜ぶ曲、ということで「IDENTITY」を選びました。

本番当日まで「オイ!オイ!」と声を出しながら登場することまでは考えていませんでしたが、結果的にこの曲を選んだおかげで気合を入れて登場することができたと思います。

おわりに

今日の握手会で愛理ちゃんにイベントでの登壇報告とともに「IDENTITY」を流したことを話したらとても喜んでくれて、「一緒にもっと頑張ろう!」と言ってくれました。これからも愛理ちゃんの歌声を多くの人に届けられるように頑張ります。

私が応援する鈴木愛理ちゃんの素晴らしさ

はじめに

kintone hack 本戦まで約 1 ヶ月となり気合いを入れて準備をしなければいけないのになかなか気持ちが入ってきません。文字にして吐き出すことで気持ちを高められるのではと思い、久しぶりに blog を書いてみました。

それから、愛理ちゃんのことを「かわいい」と言ってくださる方はたくさんいらっしゃいますが、本当の魅力はルックスではないということをちゃんと理解していただきたく書いてみました。

鈴木愛理ちゃんとは?

2017 年 6月11 日に解散した ハロー!プロジェクトのアイドルグループ ℃-ute(キュート:給湯器と同じイントネーション)のエースにしてハロプロの至宝℃-ute 解散以降はソロアーティストとして活動。歌手としては 2018 年 6 月 6 日に 1st アルバム「Do me a favor」をリリースしソロデビュー。2020 年 4 月 21 日には横浜アリーナでの単独コンサートが決定。

また、雑誌「Ray」の専属モデルとしても活躍。他にもテレビ東京系ドラマ「I ターン」に出演するなど幅広いジャンルで活動中。

ray-web.jp

では、そんな鈴木愛理ちゃんの素晴らしさ、私が鈴木愛理ちゃんを応援する理由させていただきます。

パフォーマンス

現役・OG 含めてハロプロでは 100 人以上のアイドルを輩出してきていますが、愛理ちゃんの歌唱力はその中でも TOP3 に入ると思います。これはファンの私の妄想ではなく、ハロプロファンの総意と言えると思います。

ハロプロ出身ということでどうしてもアイドル曲が多くなってしまい歌唱力を取り上げられることが少ないのですが、生放送・生歌で様々な歌を歌わないといけない NHK のうたコンにも数多く出場していることからも、評価の高さが伺えると思います。

個人的に好きな曲 TRICK を貼っておきます。ちなみにこの曲はまだ音源化されていません。

www.youtube.com

また、パフォーマンスの高さはソロになる前から言われていたことで、高いヒールを履いてバリバリ踊っていた℃-uteは「アイドルが憧れるアイドル」と言われ、他のアイドルから尊敬される存在でした。

youtu.be

まずはルックスだけではなく、歌って踊れるアイドルであることがおわかりいただけたけと思います。

プロ意識の高さ

これはどんな職業でも重要なことだと思いますが、1 つ 1 つの仕事に対する真面目に取り組む姿勢も愛理ちゃんの大きな魅力と言えると思います。

今年の典型的なエピソードとしては、5 月 5 日の千葉ロッテマリーンズ北海道日本ハムファイターズ戦での始球式の話があります。愛理ちゃんは基礎体力はあるのですが、球技などは上手ではなく、スポーツをする姿は以前より「キモイ」とメンバーにも言われるぐらいでした。そんな愛理ちゃんが初めて始球式でマウンドに立つにあたって、GW の前半を始球式の練習に充て、その結果とてもきれいなフォームで始球式をこなしました。

また、投げ終わった後には「どちらのチームのファンの方にも喜んでいただきたかった」とレアード選手(日本ハム千葉ロッテへ移籍)の寿司ポーズを真似て球場を沸かせていました。

www.youtube.com

ちなみに、私はこの始球式を見るためだけに球場に行き、5 回の表で帰りました。(選手の皆さんごめんなさい)

また、私自身が愛理ちゃんの真面目さを一番感じたエピソードとして解散後の活動に関する blog があります。

℃-ute の解散発表は 2016 年 8 月 20 日に行われたのですが、当初発表された解散後の愛理ちゃんの活動内容は「キャスターなどマルチタレント」であり、それを聞いた私は「あ~もう愛理ちゃんの歌は聴けないのか・・・」と残念に思ったものでした。

しかし、解散を目前に控えたある日の blog で以下のようなコメントとともに解散後も歌い続けることを発表しました。

いつか話したかもしれないけど 本当に好きなことだからこそ 自信持って、『これがやりたいんです!』って言えなかったんです。 無理だろって言われるかもしれない。 アイドルやってればよかったのにねって もしかしたら言われるかもしれない。 そんなことばっかり頭に浮かぶし 負けず嫌いなのに、どこか弱気な所がそういうときだけ垣間見えちゃって。

でも、好きなことに自信を持てるようになったら、それは無敵だって思ってて。 技術とかそういうことじゃなくて その気持ちがあればやれるって思って。 歌の世界は広いから、 厳しい世界なのも十分わかっています。 でも 解散発表したあとに 今後の活動を考えていく機会がある度に やっぱり私から音楽捨てたところが 想像できなかったんです。

だから、決めました。 わたしは、歌い続けます!!!!

このように歌に対しても真摯に向き合う気持ち、これも愛理ちゃんの素晴らしい魅力だと思います。

全文はこちら

ameblo.jp

ファンサービス

エンターテイナーとしても愛理ちゃんはすごいと思います。

例えば、2018 年 7 月 9 日に開催されたソロとして初の武道館ライブ。武道館ライブのときはこのように看板が掲げられると思います。

f:id:dsstsukky:20191006213852j:plain

この看板よく見ていただくと、右上に QR コードが貼られていると思います。

これは、愛理ちゃんが℃-ute解散からソロ活動開始の間に様々なアーティストのライブやフェスに行った際、「グッズ購入待機列は暇だなぁ・・・」と思い、グッズ列に並んでいる際に閲覧するように動画を作ってくれており、この QR コードを読み込むと Youtube でオリジナル動画が再生されます。

また、購入するグッズにも愛理ちゃんのファンを想う気持ちが大量に詰め込まれています。

例えば、ファンクラブ限定で行われるバースデーなどのイベントではオリジナルTシャツやタオルが販売されることが多いのですが、多くのアイドルは無機質な名前入り T シャツになります。わかり易い例で 2017年にモーニング娘。を卒業した工藤遥ちゃんのファンクラブインベントの T シャツ・タオルはこんな感じです。

f:id:dsstsukky:20191006204923j:plain

f:id:dsstsukky:20191006204940j:plain

一方、鈴木愛理ちゃんのバースデーイベントの Tシャツ・タオルはこうなります。

f:id:dsstsukky:20191006205012j:plain

f:id:dsstsukky:20191006205106j:plain

この T シャツ・タオルはともに愛理ちゃんが自分自身でデザインしたものです。他にも愛理ちゃんのライブ、イベントでのグッズは愛理ちゃん自身のアイディアがたくさん詰め込まれており、グッズからもファンを楽しませようという気持ちが伝わってきます。

それから、ライブでもファンを楽しませようという愛理ちゃんの気持ちをたくさん感じることができます。

例えばこの曲「No Live,No Life」はライブでファン(オタク)と一緒に盛り上がりたいという目的で自身も作詞作曲に携わり(山崎あおいさんと共同)、曲中ではタオルをブンブン回したり、ペンライトを振り上げたりと、ファンが参加することを前提の曲を作っていたりします。

www.youtube.com

動画を見ただけで楽しさが伝わるとは思いますが、是非ライブ会場でこの楽しさを味わっていただきたいと思います。

f:id:dsstsukky:20191006211653j:plain

おわりに

「愛理ちゃんの曲を幕張メッセで流したい」その一心で勝ち抜いた kintone hack 予選。

改めて気合い入れて頑張ります!

Cybozu Days 2019

DataSpider でやり残したこと(不真面目)

はじめに

「退職まであと数日か」と考えると会社を辞めることより DataSpider を気軽に触れなくなることにとても寂しさを感じました。そこで最後に DataSpider で何か作って遊ぼうかなと思っていたところ、二郎 AI のニュースが流れてきて「これだ!」と思い二番煎じで遊んでみました。 withnews.jp

作りたいもの

テレビでもリアルでも良いのですが、初めての人を見たときに「あっ、あの人 AKB にいそうだな」とか「ジャニーズ っぽいな」とか思うことありませんか?ありますよね?もしそれが共感できない人でも、女優やタレントでも所属事務所ごとに系統(〇〇っぽさ)があることはなんとなく理解できるかと思います。

ヲタ界隈でも「○○っぽい顔」みたいな考え方があって、自分自身でも「あ~、この子は典型的なハロプロ顔だな~」とか思うことがあります。 この○○っぽいというのは中々言語化が難しいもので、それだったら AI に学習させて AI に判断してもらおうと思いまして、DataSpider + 画像認識 AI を使って遊ぶことにしました。

下準備

正直これが一番大変でした。 今回はとりあえず「ハロプロ顔」「AKB 顔」「乃木坂顔」の判別ができれば良しとしてそれぞれのスコアリングをしたいと思います。そのためにはそれぞれのグループごとに画像を集めて AI に学習させる必要があります。 当然まずはハロプロから。オフィシャルページに行って総勢 58 名分の画像を取得してとりあえずローカルに保存します。(豆知識:funaki(2).jpg,morito(2).jpg というように同じ名前が2つありますが、この子達はハロプロ内で複数のグループを掛け持ちしているので両方の写真を使いました)

f:id:dsstsukky:20190325140215j:plain

続いて、乃木坂 46。ここで問題発生!ハロプロのページは右クリックで保存できたのに、乃木坂 46 と AKB48 のページは右クリックが禁止されていて画像が保存できませんでした。早くも暗礁に乗り上げたか?と思いましたが、調べてみたら Chrome 拡張で右クリックを有効化するものがありました。

chrome.google.com

これを使ってなんとか乃木坂 46 の画像を取得。続いて、AKB 48 のページも右クリック保存ができなかったけど「Enable right click」のおかげで解決!どうしても画像保存したかったらスクショ撮れば良いですし、正直右クリック禁止して意味あるのかな?とか思いました。制限かけてないハロプロ最高!

ハロプロのファイル名は全部その子の名字にしていたのですが、AKB48 は名前を変更するモチベーションが無かったので、ファイル名そのままです(ごめんなさい)。しかも何故か 1 人だけ png の子がいました。

f:id:dsstsukky:20190325141323j:plain

とりあえずそんなこんなで画像を集めました。精度を高めるためにはもっとたくさん集めた方が良いでしょうが、とりあえずは ハロプロ:58名、乃木坂46:47名、AKB48:115名の画像を使って学習させていこうと思います。

IBM Watson Visual Recognitionでやってみる

画像認識 AI は Microsoft(Face API)も IBM Watson (Visual Recognition)も両方使ったことはあるのだけれど、今回やりたい「グループ化してそのグループ化に属するか判断する」というのは Watson でやったことがあって比較的すぐできそうな感覚があったのでまずは Watson でやってみました。

やること

  1. Create a classifier でカスタム分類器を作成する

  2. 判別したい画像を分類器に渡して結果を取得する

これだけですね。 API リファレンスを見ながらまずは カスタム分類器を作ります。カスタム分類器というのはチュートリアルでの直訳(英語では classifier )なのですが、「判定エンジン」みたいに置き換えたほうが理解しやすいかもしれません。デフォルトで用意されている判定エンジンにアイドルの画像を渡すと「women」や「person」などと判定されてしまうので、カスタム分類器を作成しましょう。

Visual Recognition - IBM Cloud API Docs

カスタム分類器の作成は非常に簡単で、Curl コマンドにするとこんな感じです。

curl -X POST -u "apikey:{apikey}" -F "helloproject_positive_examples=@helloproject.zip" -F "akb48_positive_examples=@akb48.zip" -F "nogizaka46_positive_examples=@nogizaka46.zip" -F "name=idol" "https://gateway.watsonplatform.net/visual-recognition/api/v3/classifiers?version=2018-03-19"

フォームパラメータで classname を指定して、その class の positive_examples (つまり、今回だとハロプロの画像の塊 zip)を渡します。同様に、akb48,nogizaka46 というクラスを作成して、一緒にそのクラスのサンプル画像を渡しています。{apikey}は実際の APIKEY に置き換える必要があります。あと、思ったんですが他のクラウドサービスはヘッダーで認証が多いと思うんですが、Watson は Basic 認証なんですね。 これを DataSpider で実装するとこんな感じで、アイコン 2 つだけで実装できてしまいます。

f:id:dsstsukky:20190325143649j:plain

f:id:dsstsukky:20190325143701j:plain

f:id:dsstsukky:20190325145829j:plain

f:id:dsstsukky:20190325150215j:plain

これで「idol」という名前のカスタム分類器が作成できたので、ここに画像を送り込んでみましょう。上手く行けばその画像がどのグループっぽい画像か判断してくれるはずです。使う画像はアイドルが憧れるアイドル鈴木愛理ちゃんの画像を使います。

www.airisuzuki-officialweb.com

使う APIClassify an imageです。これを使ってカスタム分類器に対して画像を送信し結果を取得します(とても簡単なので説明は省きます)。

戻ってきた結果を確認すると

                "classifier_id": "idol_1176938397",
                "name": "idol",
                "classes": [
                    {
                        "class": "helloproject",
                        "score": 0.892
                    }
                ]

としっかりと鈴木愛理ちゃんの顔がハロプロ認定されたようです。

続いて、AKB の元エース前田あっちゃんの画像を送ってみたのですが・・・結果がこれまたハロプロ顔。

ここで気づいたのですが、元々の画像写真がアーティスト写真(通称:アー写)を使っているためグループごとに衣装が偏ってしまい、私服っぽいとハロプロで学生服っぽいと AKB48、OL っぽい服装だと乃木坂と判定されてしまうようです。

・・・ということでここで方針転換。 とはいってもこれ以上画像を集めるのは大変なので、「同一人物だと判断する」という機能に特化した Microsoft の Cognitive Services (Face API) を使うことにしました。

(その 2 へ続く)

DataSpider でやり残したこと(不真面目)-その2

ここまでのおさらい

これをやりきらないと退職できないと意気込んで作り始めた「アイドル顔判定器(仮)」。IBM Watson で作り始めたものの、服装によって分類が分けられてしまう結果となったため、Microsoft Cognitive Services Face API を使って再チャレンジ(いまここ)。

API を調べてみる

Face API は以前使ったことがあったものの、かなり機能が多くそれがゆえにどの API を使ったら良いのかがなかなかわからない(難しい)。API リファレンスと格闘した結果、恐らく以下の流れでできそうだと思い作り始めてみる。1 つ 1 つ が 1 つの API に該当しているので、IBM Watson に比べると使う API の種類が多い印象です。

  1. PersonGroup の作成(Create)

  2. PersonGorup に所属する Person の作成(Create)

  3. Person に対して画像を追加(Add)

  4. PersonGroup の学習(Create)

PersonGroup /Person の作成(Create)

先述の通り「どの API を使ったら良いか?」は悩みましたが、API 自体はドキュメントもわかりやすく殆ど躓く箇所がありませんでした。

まず使うのは PersonGroup - Create です。Curl コマンドだとこんな感じ。

curl -v -X PUT "https://westus.api.cognitive.microsoft.com/face/v1.0/persongroups/{personGroupId}" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {subscription key}"

使う JSON もシンプルです。userData は任意項目なので、実質は name だけ渡せば良いですね。

{ "name": "idol", "userData": "Japanese Idol Group" }

DataSpider でもアイコン 2 つです。 f:id:dsstsukky:20190325160345j:plain

続いて、ほぼ同様の手順で PersonGroup Person - Create で新しい Person を作成します。本来は同じ人物を判別するための機能ですが、今回は「helloproject」「akb48」「nogizaka46」という人物を作成して、それぞれのグループの画像をその Person に学習させてみます。

Person の作成に成功すると以下のレスポンスがあります。この personId は次で使います。

{"personId":"52f8b199-812c-457f-8976-c2e84969da8a"}

Person に対して画像を追加(Add)

ここまでの手順で、idol という Group とその Group に所属する「helloproject」「akb48」「nogizaka46」という Person の作成が終わりました。あとはそれぞれの Person に対して画像を与えて学習してきます。

使うのは PersonGroup Person - Add メソッドです。

curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/persongroups/{personGroupId}/persons/{personId}/persistedFaces?userData={string}&targetFace={string}" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {subscription key}"

指定した personGroupId(今回は idol) に所属する person (helloproject/akb48/nogizaka46)に対して、json もしくは octet-stream で画像を渡します。ここで先程取得した personId を使用します。

IBM Watson では画像を一括で zip 形式で渡せたのですが、それができないようです。手作業でやると大変ですが DataSpider では指定したフォルダ以下にあるファイルをリスト化し、順に処理する仕組みがあるので(左から 2 番めの list というアイコンです)、苦労せずに実現できました。

f:id:dsstsukky:20190325163812j:plain

途中、wait アイコンがあります。これは最初置いていなかったのですがない状態で実行したところ途中で「429 too many requests」が返されました。調べてみたところ、1 時間 1,200 件を超えると制限がかかるようです。ただ、今回は 1,200 件はどう考えても送っていないので、短時間にアクセスしすぎて怒られたと思い 10 秒のウエイトを置いたら上手くいきました。

こんなウエイトの処理もアイコン 1 つでできるとか DataSpider とハロプロ最高ですね(コード書いても一行でしょうけど)。

上記を 3 つの person それぞれで行い、その後 PersonGroup - Train を実行して与えた画像を元に AI にトレーニングをしてもらう必要があります。

curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/persongroups/{personGroupId}/train" -H "Ocp-Apim-Subscription-Key: {subscription key}"

この PersonGroup Train は非同期のようなので、大量の画像を学習させた後は念の為 PersonGroup - Get Training Status を実行してステータスが「succeeded」になっているのを確認してから次に進むのが良いでしょう。

curl -v -X GET "https://westus.api.cognitive.microsoft.com/face/v1.0/persongroups/{personGroupId}/training" -H "Ocp-Apim-Subscription-Key: {subscription key}"

↓ こんな感じに出力されたら準備完了です。あとは画像を渡してみて確認に移りましょう。

{"status":"succeeded","createdDateTime":"2019-03-26T03:29:08.8868775Z","lastActionDateTime":"2019-03-26T03:29:09.1433051Z","message":null}

(その 3 へ続く)

DataSpider でやり残したこと(不真面目)-その3

ここまでのおさらい

「アイドル顔判定器(仮)」の作成も大詰め。Microsoft Face API を使って学習させるところまでできたので、あとは実際に画像を送信して AI にどのアイドルグループに属するか判断してもらいましょう。

愛理ちゃんでやってみる

改めて、愛理ちゃんの画像を送ってみます。 Face API では Face - Identify という API でどの登録済み Person に類似度が高いか判断してくれるのですが、Identify に送るためには FaceId というものが必要となります。そのため、まず Face - Detect で FaceId を取得して、その後に Face - Identify を使って結果を取得します。

まずはこちらが Face - Detect。json で URL を渡すか octet-stream で直接ファイルを渡すこともできます。

curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes={string}" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {subscription key}"

結果がこちら。この ca6d25e2-e68d-4c6b-a273-6bf416b27f0b というのがいま送った画像の FaceId になります。

[{"faceId":"ca6d25e2-e68d-4c6b-a273-6bf416b27f0b","faceRectangle":{"top":109,"left":243,"width":141,"height":141}}]

この Face Id を使って Face - Identify に送るといよいよやりたかったことが実現できます。

curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/identify" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {subscription key}"

Detect - Identify の流れを DataSpider のスクリプトで組むとこんな感じですね。

どれどれ、結果を見てみましょう。

[{"faceId":"e9f1ae5f-cef7-4e82-ad7d-33f3c2350d44","candidates":[{"personId":"16e0a696-ffcc-4b9f-a51f-f96571231a59","confidence":0.55153}]}]

この personId(16e0a696-ffcc-4b9f-a51f-f96571231a59)は その 2 で person を作成したときに生成されたものでしてその時のログを確認してみます。

  • ハロプロ:52f8b199-812c-457f-8976-c2e84969da8a

  • AKB 48 :6ea1ef83-0940-4fc3-a9b1-a9294d4b26dc

  • 乃木坂46:16e0a696-ffcc-4b9f-a51f-f96571231a59

愛理が乃木坂46 と判定されている・・・。

confidence(信頼度)が 0.55153 と低いですし、やはり学習が足りなかったかもしれませんね。 画像集めるのはめんどくさいのでやりたくないのですが、仕方ないので学習させましょう。

学習方法 - 1

すでに「指定したフォルダ内の画像を Person に Add する」という機能は作っているので、あとは DataSpider のファイルトリガーという機能を使って、そのフォルダにファイルが置かれたら自動的にそのスクリプトを実行するように仕掛けておきます。

DataSpider の歴史の中でハロプロというディレクトリが作られたのは史上初かもしれませんね。ハロプロ最高!

f:id:dsstsukky:20190326235937j:plain

学習方法 - 2

しかし、ここで気づきました。DataSpider は私の業務用 PC にインストールされており、上記の方法だと業務用 PC でアイドルの画像を集めることとなり、あと数日で会社を辞めるとはいえこれは非常によろしくない!

ということで私物のスマホで画像を集めて学習させる方法を考えました。仕組みとしては kintone で画像と一緒に所属グループを登録すると Webhook で通知を受け取った DataSpider がその画像を取得して PersonGroup Person - Add の API を叩いて学習させてくれます。また、画像をファイルとして渡すモードとで画像の URL を渡すモードを作って切り替えるようにしました。(フィールドの表示・非表示の切替は gusuku Customine でやりました)

使用イメージ

f:id:dsstsukky:20190326193805g:plain

DataSpider のスクリプト

f:id:dsstsukky:20190326234910j:plain

f:id:dsstsukky:20190326234922j:plain

ここまで来たらあとは頑張って画像を集めて学習あるのみですね!

最後に

そんなこんなでハロプロ画像を中心に学習させていたところ、ついにその時が来ました!

f:id:dsstsukky:20190326203941j:plain

まだ confidence は 0.55686 と低めですが、愛理ちゃんが無事ハロプロ顔と認定されました。

最後の最後に本当に頭のおかしいものを作りましたが、大好きなものを組み合わせて楽しめたので大満足でです。

これからも DataSpider と 鈴木愛理ちゃんと築山をよろしくお願いします。

kintone Café JAPAN 登壇で得たもの

この記事は kintone Advent Calendar 8 日目の記事です。担当させていただきます「つっきー」と申します。 qiita.com

すでにアスキーさんより素敵な記事「kintone Café Japan 2018に親子で参戦してきた」が上がっていて、しかも開催から 1 ヶ月も経ってしまいましたが、kintone Café JAPAN で登壇させていただいた私が得たものについて書かせていただきたいと思います。

kintone Café JAPAN とは

kintoneを学ぶための勉強会コミュニティkintone Café。kintone Caféの年に1度の全国イベントそれが「kintone Café JAPAN」です。当日はいくつかのセッションが用意され、この週に開催されいた Cybozu Days Tokyo と合わせて全国からたくさんの kintone ファンが集まりました。

f:id:dsstsukky:20181207194534j:plain

私が登壇させていただいた背景

その中で、私は「ノンコーディングで簡単実現 gusuku Customine ではじめての画面カスタマイズ(ハンズオン)」というセッションを担当させていただきました。

f:id:dsstsukky:20181207191401p:plain

私自身、仕事として gusuku Cutomine の販売や導入に携わっているわけではないのですが、gusuku Cutomine が 3月にプレビューリリースされて以来、その魅力に取り憑かれて日々触ってあちこちで魅力を人に伝えていたところ、「非プログラマーであるつっきーに講師をして欲しい」ということで登壇の依頼をいただきました。

「はじめての~」と銘打ったことで私のセッションに参加された方はバリバリの開発者やシステム担当者というより、普段業務で kintone を使っていてより便利な使い方を求めている実務担当者という方が多かったと思います。

元々、私が講師を担当をさせていただいたのも「開発者目線」ではなく「プログラムがかけない私でも実現できる」ことを伝えたかったからなので、参加していただきたいと思っていた方々にご参加いただけたと思っています。

お伝えした内容

当日の発表資料は Slideshare にて公開させていただいています。

gusuku Cutomine は「継続的業務改善をみんなのものに」という壮大なテーマのもとにアールスリーインスティテュートさんから提供されているサービスであり、従来 JavaScript を書いて実現していた「画面の色を変える」「計算をする」「入力できるフィールドに制限をかける」などの画面カスタマイズをノンコーディングで実現するものです。

当日は、実際私自身がプロジェクトで kintone を導入する際に(kintone の基本機能だと少し物足りないなぁ・・・)と思っていた部分を次々と gusuku Cutomine で解決できたのでそれを実際に皆さんに触っていただきながら学んでいただくためのセッションとさせていただきました。

アスキーさんの記事にあるように中学生のお子さんも参加されていたのですが、参加されたほとんどの方が用意していたコンテンツを全て消化してくださり、少しでも身になったと感じていただけると幸いです。

講師として得たもの

さて、少し話は飛んでタイトルに戻りたいと思います。少し個人的な話になってしまいますが、お伝えしたいことに関連するので触れさせてください。

私自身は新卒からずっと IT 業界に身をおいているのですが、元々 IT に限定して仕事をしたかったわけではありません。情報系の学部を出たわけでもない私が就職のときに考えていたのは「教育関連の仕事に就きたい」ということでした。

その中で、新卒の時に入社した会社は Windows に特化したビジネスを行っている企業で Windows の教育(MCP / MOT)を事業の 1 つとして持っていて、その事業に関心があったため、志望し採用いただきました。しかし!入社直前にその会社が当該事業から撤退していたため、私が配属されたのはソフトウェアのサポート部門でした。その後、様々な経験をさせていただき「教育」を専門に仕事をしたことは未だに無いのですが、今回の kintone Café JAPAN のように講師をやらせていただく機会は数多くあり、その機会は常に楽しめた気がします。

それはわかりやすい言葉でいうと「人に教える」ということですが、その先にあるのは「ツール、サービスを活用することで自身の課題解決を自身で実現できるようになる」ということだと思っていて、その手助けをできることが自分自身の喜びなんだということに改めて気づかされました。

私自身は kintone エバンジェリストの皆さんのように開発力があるわけでもなければ新しいサービスを考える企画力はありませんが、kintone Café のようなコミュニティを通じて皆さんが自分自身で課題解決をできるようになる手助けができれば良いと思います。

kintone Café の魅力

kintone Cafe のようなコミュニティはそんな考えをしている人が多い(というかそんな人しかいない)ので、「自分自身で課題解決したい」と思う人はどんどん kintone Café に遊びにきていただきたいと思います。

f:id:dsstsukky:20181207195029j:plain

※私は体調を崩して早く帰ったのでこの写真にはいません。

では、またどこかの kintone Café でお会いしましょう!

(全ての写真提供:R3 金春さん)

ノンコーディングでも草を生やしたい

3 日目の危機

Low-Code/No-Code Advent Calendar 3日目。早くも自分自身で 2 回めの記事を書かなければいけない事態になりました。 かわいそうに思う方は参加お願いします。

qiita.com

ネタに困っていたところ、週末に参加してきた Mashup Awards 2nd STAGE ならびに FESTA で発表、受賞されていた作品で「Pixala」というサービスがとても面白かったので、これを使ってみたいと思います。

pixe.la

Pixala の紹介

GitHub における過去一年間の活動量を示す「Contribution Graph(通称:草 or 芝生)」というものがあり、これを GitHub での Commit 以外のときにも使いたいということで作られたサービスです。

Web API として公開されており、誰でも「過去一年間の活動量を示すグラフ」の作成が簡単にできるサービスとなります。これであればコードを書くことのない(書くことのできない)私であっても、開発者のみなさんと同じように草を生やすことができそうです。

何を作るか?

「1 年間の活動を示すものって何があるかな?」と考えるまでもありませんでした。

f:id:dsstsukky:20181203002626j:plain

これです。過去 1 年間に行った鈴木愛理ちゃんのコンサートチケットですね。

これを可視化してみたいと思います。

作り方

公式の手順がとてもわかりやすくて簡単でした。

1.ユーザーの作成

curl -X POST https://pixe.la/v1/users -d '{"token":"thisissecret", "username":"harukit", "agreeTermsOfService":"yes", "notMinor":"yes"}

token はこのあとの認証で使うために任意で設定

username は名前の通りユーザー名ですね。以降の URL にこの username が使われます。

2.グラフの作成

curl -X POST https://pixe.la/v1/users/harukit/graphs -H 'X-USER-TOKEN:thisissecret' -d {"id":"airi-graph","name":"airi-counter","unit":"airimania","type":"int","color":"momiji"}

X-USER-TOKEN ヘッダに 1 で作成した token を指定

id は このグラフに設定する一意の ID

name はこのグラフの名前。ここでは airi-counter としました

unit は単位ですね。ここでは airimania(あいりまにあ)としました

color はいくつかの中から選べるのですが、愛理ちゃんのメンバーカラーであるピンクに近くなるように momiji を選択しました

3.グラフの確認

ちゃんとグラフができているか確認しましょう。

URL は

https://pixe.la/v1/users/harukit/graphs/airi-graph

です。

f:id:dsstsukky:20181203003700p:plain

どうやらちゃんと作成されているようです。

4.データの登録

あとはひたすらデータを登録していきます。

curl -X POST https://pixe.la/v1/users/harukit/graphs/airi-graph -H 'X-USER-TOKEN:thisissecret' -d '{"date":"20180327","quantity":"8"}

quantity は直訳すると「量」です。開発された方に聞いたところ、GitHub と同様の仕組みとなっていてこの値に応じて色が変わるそうです。私の場合にはそのコンサートの満足度を 10 点満点で評価して値を入れることにしました。コンサートごとに座席が良かったりセトリが良かったりで満足度が違うので、あとでグラフを見た時にわかりやすいように独自のアルゴリズムでコンサートごとに満足度の点数を決めてそれを quantity として入れました。

5.完成

以上で完成です。こちらがわたしの「あいりまにあ度」を示すグラフです。

f:id:dsstsukky:20181203011432p:plain

一番赤く染まっているところは最前列が取れた日やバースデーイベントでセトリが特別だった日です。

終わりに

このように Pixela を使うとこんなくだらないことでも草を生やすことができました。

あとは公式でも紹介されているように、私が 1 日目で紹介した iPhone の「ショートカット」機能を使うと簡単に API を叩けるので、毎回 Curl コマンドを呼ぶ必要もありません。

qiita.com

コンサートだけだとあまり活動していないように見えてしまうので、あとは自宅で Blu-ray や DVD 鑑賞した日、カラオケに行った日などをカウントして来年は真っ赤なグラフを作りたいと思います。