たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

IFTTT

webサービスを組み合わせて、自分だけの自動化ツールを創り出せ!
というのがIFTTT(イフト)

3 ways to build

  • Maker
  • Partner
  • Partner Plus

applets & services

  • Applets: bring your services togather to create new experiences
  • Services: the apps and devices you use every day. Each service has useful applets you can turn on.

類似サービス

思ったこと

マイクロサービスに似てるよね.

用語

用語ががっつりと変わったのではないかな…?

古そうな用語

  • レシピ/recipes: Applets (formerly known as recipes) are the predicates made from Triggers and Actions IFTTT - Wikipedia
  • チャンネル/channels: Services (formerly known as channels) are the “basic building blocks of IFTTT” IFTTT - Wikipedia

目覚ましシステム

ボタンpush => IFTTT webhook => AWS API Gateway => AWS lambda => AWS S3 => view site (pooling)

ボタンpush

IFTTT Button widget Do more with Button widget - IFTTT
amazon dash button改造して物理ボタンに置換したいところ.

IFTTT webhook

http request
ifttt.com

AWS API Gateway

lambda連携. access key認証にとりあえずしたい。現在開放中

AWS lambda

API Gateway連携.
access keyでAWS S3認証中. IAMで認証にしたいところ.

AWS S3

public readなsleepLog.jsonにデータ保存. アクセス制限かけたいね.

view site

html.
xhrしたjsonをVue.jsでリスト化.
rawデータの加工と表示を取り入れたい.

AWS lambda

  • event (1st arg): arguments by caller
  • context (2nd arg): runtime information
  • callback (3rd, optional arg): return information to caller
    • callback(error, results)
      • error: null(success) or any
      • results: must be JSON.stringify compatible

When the callback is called (explicitly or implicitly), AWS Lambda continues the Lambda function invocation until the Node.js event loop is empty.

起動法

ライフログの保存と表示

集めたデータの可視化

上ほど低レイヤー

前提として集める意味があるか?

集めること自体に情熱を感じる-> good! 楽しんで!

何かに使えるか

Google Home

実はすごい使える。
ログの手動記録がいかにログを阻害していたかよくわかる

睡眠ログ

人類が寝ない日は来るか

寝ないと今のところ死ぬ
-> 死ぬ理由が解明されたら寝なくていいかも

睡眠は(今のところ)人間の本質
-> 睡眠ログの記録は使える

先駆者の皆様

hiroga.hatenablog.com

構築したシステム

Misfit -> IFTTT -> Google Calendar
なんとアプレットがもうあったので、オンにするだけ、hoooo!!!!
IFTTTはあまりに偉大なのじゃ…

かつてfor文というものがあった

for(let i; i < array.length; i++){ 
  print(array[i]); 
}

for文の改善ポイント

配列の要素を取り出して操作したい=>配列の何番目の要素を弄っているかはどうでもいい という場合でも、番号を渡される

for(let i; i < array.length; i++){ // いやiは別に知りたくないんだけど…
  print(array[i]); // i番目、ってのは別に知りたくないんだよなぁ…
}

改善策1

そう、i番目って情報は不要な場合が多い。要素を取り出して、操作したいわけ
=> 要素を取り出す

for (element of array){
  print(element);
}

ひゅー、i番目とか言う、(今回は)無駄な情報が無くなったぜ、coolだ.

  • JavaScript: for(elem of array){}
  • Python : for elem in array:
  • C# : foreach(int elem in array){}
  • Java : for(int elem: array) 拡張for文

考え中

for(elem of array){print(elem);}
array.forEach(elem=>print(elem));

情報量変わらない.

// forタイプ
let newArray = [];
for(elem of array){ array.push(elem*2);}

// mapタイプ
let newArray;
newArray = array.map(elem=>elem*2);

pushしたいわけじゃない. 各要素を倍にしたいだけ.
=> pushの情報いらなくね?
=> map (…おいmapの情報増えたぞ)

newArrayを空arrayとして用意するってのも、したいことではないんだよな.

for文を発展的に解消する利点の1つは、
無駄な手段(道具)を減らす…に見える.
最終目的の為に、道具としてiを使ってたけど、道具無しでもいけるやん、的な…
code長を減らすのではなくて、意識しなきゃいけない要素(道具)を減らす.

大会社はスモールビジネスを出来ないのか

  1. 中小企業と比較して、大会社は総売上の小さい商売をしづらいか否か

販管費(バックヤード)

per製品なら、むしろ大企業が安いくらい
3.中小企業の販管費比率|商工業実態基本調査|経済産業省

大商売向けのバックヤードを整備したら、小商売をするには立派過ぎる
→総売上あたりの共通バックヤード固定費が高過ぎる
…固定費なら、大商売が支えられる.
→バックヤード費用が人数に比例するからでは?
→ バックヤード総費用増えるのに、売上増がそれに見合わない的な