5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

iftttみたいなのを作ろうと思います [転載禁止]©2ch.net

1 :1 ◆6.No/n6pLw :2015/04/25(土) 23:43:03.63 ID:lf8XOo8x
ifttt でオリジナルのチャンネルを登録しようと思ったのですが、iftttは自由にチャンネルの登録ができないようです。
チャンネルを作るための api があるのかどうかよくわかりません。

そこでオープンな ifttt みたいのを作りたいと思いました。

以下がリポジトリです。プロダクトの名前は chainub です。

https://github.com/chainub/chainub

2 :1 ◆6.No/n6pLw :2015/04/25(土) 23:50:27.79 ID:lf8XOo8x
まだざっくりとした設計しかできてないのですが、ご意見ご質問ありましたらコメントお願いします〜

https://github.com/chainub/chainub/issues/2

3 :デフォルトの名無しさん:2015/04/26(日) 01:07:44.07 ID:3etctGOZ
http://www.dotup.org/uploda/www.dotup.org282969.jpg
http://www.dotup.org/uploda/www.dotup.org282972.jpg
http://www.dotup.org/uploda/www.dotup.org282976.jpg

4 :デフォルトの名無しさん:2015/04/26(日) 09:10:07.85 ID:iwtiONPD
言語何

5 :1 ◆6.No/n6pLw :2015/04/26(日) 11:31:50.67 ID:U5250NY9
>>4

https://github.com/chainub/chainub/issues/2#issuecomment-96219785

こんな感じで rails(ruby) と nodejs(javascript) で考えています

6 :1 ◆6.No/n6pLw :2015/04/26(日) 22:38:20.26 ID:vP0YkYec
とりあえず、チャンネル用の api の仕様を以下のように決めました

https://github.com/chainub/chainub/issues/3#issuecomment-96200864

https://github.com/chainub/chainub/issues/4#issuecomment-96202992

7 :1 ◆6.No/n6pLw :2015/04/26(日) 23:49:04.32 ID:vP0YkYec
ifttt について簡単に説明すると

https://ifttt.com/dashboard

色んなwebサービス等からの通知を受けて、それをまた別の色んなwebサービスにその通知を
渡す事ができるプラットフォームです。
ユーザーは通知を受け取るwebサービスと通知を渡すwebサービスの組み合わせを
色々と作る事ができて、組み合わせによってはとても便利に使うことができます。

ただ残念なことに通知を受け取ったち渡すwebサービスはあらかじめ ifttt で決められており
自由に開発者が追加することができません。。。

なので自由に開発者が追加できる ifttt のようなプラットフォームを作ろうとしています。

8 :名無しのプログラマー:2015/04/27(月) 21:08:16.22 ID:mVcTc3Q4
これ一緒に作る人さがしてんの??
それとも実況なの??

9 :1 ◆6.No/n6pLw :2015/04/27(月) 23:01:29.46 ID:haxso2ws
>>8

一緒に作る人が欲しいですが、なかなか難しいと考えてます。
それよか、僕が出す仕様、設計、実装について突っ込んで欲しいですね。

そんな感じで盛り上がったらいいなあと思ってます。

10 :1 ◆6.No/n6pLw :2015/04/27(月) 23:11:52.43 ID:haxso2ws
railsとnodejs使おうと思ってましたが、railsのみにしようと思います。
理由はわざわざわけるだけ無駄だなあと思ったからです。

11 :デフォルトの名無しさん:2015/04/28(火) 23:59:07.01 ID:hgRX4HSJ
面白そう

12 :デフォルトの名無しさん:2015/04/29(水) 01:39:37.69 ID:fhdhSpNr
IFTTT登録したばかりで頓珍漢なこと言ってるかもしれないけど

> 条件分岐等の処理はアクションチャンネルからイベントを受け取ったwebサービス側で行う事を想定します。
これだと、ありがちな共通の条件/加工処理を
Webサービス側で個別にそれぞれ実装する必要が出てきて無駄が多いような。
Webサービス側で実装することのメリットは分かるけど

13 :デフォルトの名無しさん:2015/04/29(水) 01:42:00.44 ID:fhdhSpNr
ここでいうWebサービスって外部サイト(FBとかTwitter)またはそのAPIそのものではなくて
外部サイトが提供するAPIを使ってアクションを起こすコンポーネント郡を指しているという認識であってますよね?

14 :1 ◆6.No/n6pLw :2015/04/29(水) 10:14:18.87 ID:eyWGQUR+
>>11

ありがとうござます!!

>>12

>これだと、ありがちな共通の条件/加工処理を
>Webサービス側で個別にそれぞれ実装する必要が出てきて無駄が多いような。
>Webサービス側で実装することのメリットは分かるけど

まことにその通りだと思います。なのでチャンネルが増えてきたら chainub側で設定できるような
仕組みを用意する予定です。
直近そのような仕組みを用意しないのは、チャンネルが増えるかどうか、
そもそもchainubの需要があるかどうかもわからないので
条件分岐の設定をする仕組みを今作るのは割に合わないだろうという理由です。

>>13

はい、その通りです。
ただ、もし仮にFBやTwitterやそういった外部サービスがアクションAPI(https://github.com/chainub/chainub/issues/4#issuecomment-96202992)
をサポートして、 chainub にチャンネルとして登録してくれた場合、
ここでいうWebサービスとなります。

15 :デフォルトの名無しさん:2015/04/29(水) 10:22:50.46 ID:OGewk7qd
攻撃の踏み台だな

16 :1 ◆6.No/n6pLw :2015/04/29(水) 10:31:23.42 ID:eyWGQUR+
>>15

具体的にどのように攻撃が行われそうですかねえ?

17 :デフォルトの名無しさん:2015/04/29(水) 12:14:35.37 ID:fhdhSpNr
社内のネットワークでchainub立てて、社内プライベートなJIRAとかSlack, Github Enterprise等をつなげて
さくっと連携機能作ったりできたら便利だなー。
オープンソースなので、IFTTTのような一般向けより、そっち方向で需要ありそう

18 :デフォルトの名無しさん:2015/04/29(水) 14:02:47.62 ID:OGewk7qd
>>16
ユーザー定義のモジュールで他のサイトにリモートアクセスさせるんだろ

殺人予告は簡単にできるな

19 :1 ◆6.No/n6pLw :2015/04/29(水) 22:05:03.76 ID:eyWGQUR+
>>18

たしかにその通りなんですが、ユーザー定義のモジュールを使うかどうか他のユーザーは
選べるし、選んだとしてもそのモジュールに他のサイトのアクセストークンなりを渡す必要が
あります。
なので他のTwitterとかFacebookとかに連携する系のサービスと同じですね。

20 :1 ◆6.No/n6pLw :2015/04/29(水) 22:09:21.65 ID:eyWGQUR+
>>17

なるほど!団体向けの需要ありそうですね。
とりあえず、いかにchainub対応のチャンネルを増やせるかがポイントになりそう
な気がします。

21 :名無しのプログラマー:2015/04/29(水) 22:46:57.79 ID:6SHpDhMe
面白そう

22 :1 ◆6.No/n6pLw :2015/04/29(水) 23:34:20.06 ID:eyWGQUR+
chainub は rails engine にしてあります。
というのも chainub を Gem として配布できるようにするためです。

rspec でテストも用意します。

https://github.com/chainub/chainub

1個目のプルリクエストをマージしてソースツリーがそれっぽくなりましたw

23 :1 ◆6.No/n6pLw :2015/05/01(金) 08:31:34.14 ID:jPkGs4rB
https://github.com/chainub/chainub/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%80%E3%82%A4%E3%82%A2%E3%82%B0%E3%83%A9%E3%83%A0&%E7%94%A8%E8%AA%9E%E9%9B%86

システムダイアグラムと用語集を用意しました。
これを見ればどんな感じのシステムなのかわかるかと思います。

>>19 を書いてて思ったのですが、外部のトリガーサービス、アクションサービスとの
認証部分の実装どうするかが結構肝になりそうだなあと思いました。

24 :1 ◆6.No/n6pLw :2015/05/03(日) 09:47:57.88 ID:97K6tbpc
ver0.1 リリースまでのToDoリストを用意してみました

https://github.com/chainub/chainub/issues/8

25 :デフォルトの名無しさん:2015/05/04(月) 13:47:34.66 ID:V0zrhlGT
https://github.com/chainub/chainub/blob/master/MIT-LICENSE
ライセンス分をもう一度読み直しましょう

26 :1 ◆6.No/n6pLw :2015/05/04(月) 22:25:24.63 ID:7/NVBGZ6
>>25

はい、読み直しました

27 :デフォルトの名無しさん:2015/05/05(火) 00:14:04.85 ID:u2JBtWsq
いやあなたは読んでないよ。修正されてないよ。しないの?

28 :デフォルトの名無しさん:2015/05/05(火) 00:15:58.56 ID:u2JBtWsq
日本語でコミットログ書いてるぐらいのクズだからわからないのか残念
こんなんじゃ誰も参加したくないね

29 :1 ◆6.No/n6pLw :2015/05/05(火) 00:55:12.82 ID:YZOkCaTl
>>27,28

ご指摘ありがとうござます!
修正しました。
なるほど、コミットログは英語にしとくべきでした。今後は英語にします。
今後共よろしくお願いします!

30 :デフォルトの名無しさん:2015/05/05(火) 09:54:33.93 ID:Q+rmUI62
なんかお前いいわ
がんがれ

31 :1 ◆6.No/n6pLw :2015/05/05(火) 20:19:23.28 ID:YZOkCaTl
>>30

ありがとうござます、がんばります!

32 :デフォルトの名無しさん:2015/05/06(水) 09:14:19.15 ID:BKWSzYg/
俺は応援してるよ
まぁここは2ちゃん、罵倒もコミットと考えて頑張って欲しい

33 :1 ◆6.No/n6pLw :2015/05/06(水) 10:46:05.82 ID:70ZBbT17
>>32

ありがとうござます。
少なくとも見てくれてる人がいるとわかったので、とてもありがたいです。

34 :1 ◆6.No/n6pLw :2015/05/06(水) 11:30:21.05 ID:70ZBbT17
twitterと連携するアクションサービスを作って、

chainub -> twitterアクションサービス -> twitter

で連携できるようになりました。

https://github.com/chainub/twitter_service_sample

これがそのアクションサービスのレポジトリです。


curl -F "api_key=88f7013521cd716f9c869b3635644f17" -F "api_secret=e54d16646571e18ec46288fe9e7f1526" -F "body=テストだよ" http://chainub.com:3000/chainub/api/v1/chainub_trigger

"body=XXXXX" のXXXXXの部分が投稿する内容です。
試してみたい方はどうぞ〜

35 :1 ◆6.No/n6pLw :2015/05/06(水) 11:35:17.82 ID:70ZBbT17
twitter と連携するアクションサービスの情報は

http://chainub.com:3000/chainub/channels/1

こんな感じで chainub 内でチャンネルとして保持しています。

36 :1 ◆6.No/n6pLw :2015/05/06(水) 12:32:08.14 ID:f4SDkntr
あ、忘れてました

twitterと連携するアクションサービスは

https://twitter.com/chainub_bot

へ投稿します

37 :1 ◆6.No/n6pLw :2015/05/06(水) 21:09:51.39 ID:70ZBbT17
https://github.com/chainub/chainub/issues/10

chainub内のどのユーザーにイベント渡すか、アクションサービス内のどのユーザー
にイベントを渡すか指定するためにどうしてもユーザー認証の仕組みが必要です。
そこの認証どうするかとても悩ましい。。。。

普通にOAuthにするか、あるいはもっと単純で簡単な独自の仕組みにするか。。。

38 :1 ◆6.No/n6pLw :2015/05/06(水) 21:19:12.70 ID:70ZBbT17
そもそもトリガーサービスやアクションサービスの性質によってはどのユーザーか
指定する必要もないものがあるわけで、そういうのに対しては
ユーザー認証はしなくてもいいような設計にしたほうがよいなあと思うわけで
とても悩ましい。。。

39 :デフォルトの名無しさん:2015/05/07(木) 02:42:35.81 ID:dYpFI+mC
支援
本家iftttはOAuthだったけ

40 :1 ◆6.No/n6pLw :2015/05/07(木) 22:31:09.73 ID:WjM2gJoW
>>39
ありがとうござます!

iftttはチャンネル毎に外部サービスの認証にあわせてifttt側がカスタマイズ
しているようです。外部サービスの多くの認証が OAuth なので OAuth を使っている
ように見えます。

このように ifttt がサービスにあわせてカスタマイズするというスタンスなので
自由にチャンネルの登録ができないのです。

41 :デフォルトの名無しさん:2015/05/08(金) 20:52:14.46 ID:FZfyCV5b
プラグインみたいにチャンネル拡張とか出来たら夢があるな

42 :名無しのプログラマー:2015/05/09(土) 21:00:05.70 ID:6+Nb5JNo
今日は更新なし??

43 :1 ◆6.No/n6pLw :2015/05/10(日) 01:19:45.89 ID:LjI1LI/q
>>41
オープンソースなので、色々とできますよ!

>>42
https://github.com/chainub/chainub/issues/11
ちょっとこの件で色々と考えを巡らせてました。なかなか悩ましいです。。。

44 :デフォルトの名無しさん:2015/05/10(日) 23:22:50.12 ID:Wf0cvbBq
>>43
internal_class_nameの件は、よくあるプラグインの仕組みみたいですね
レコードのinsert/deleteに対応して、カラムが示すクラスを動的にロード/アンロードする感じですよね

意見ですが、プラグインのエントリーポイントとなるクラスのベースタイプは各拡張対象そのものではなく
PlugInとかにして、そのクラスがサブクラスに実装を要求する関数の中で
add_trigger_channel/add_action_channelとかして各拡張を登録する仕組みにすれば
- プラグインローダー部分はシンプルになる(今後拡張対象が増えてもローダーの修正は不要)
- 単一のパッケージとして複数の拡張を提供できる(Slackに関するトリガー/アクションのセット、みたいな)
というメリットがあるかなーと思いました

45 :デフォルトの名無しさん:2015/05/10(日) 23:33:51.04 ID:Wf0cvbBq
C, D系はchainubとはWeb APIか何かで結合するんですかね?

46 :1 ◆6.No/n6pLw :2015/05/12(火) 01:08:47.86 ID:ztUa1aSh
>>44

>internal_class_nameの件は、よくあるプラグインの仕組みみたいですね
>レコードのinsert/deleteに対応して、カラムが示すクラスを動的にロード/アンロードする感じですよね

はい、その通りです。
どうにかメタプログラミングにならない方法を考えていたのですが、C,D系との共存や
ActionChannelやTriggerChannelというモデルと紐付けるにはこれが一番合理的だろうな〜と考えました


>意見ですが、プラグインのエントリーポイントとなるクラスのベースタイプは各拡張対象そのものではなく
>PlugInとかにして、そのクラスがサブクラスに実装を要求する関数の中で
>add_trigger_channel/add_action_channelとかして各拡張を登録する仕組み

なるほど!いいですね、上記の方針で実装を進めたいと思います。
ありがとうござます!

>>45
はい、こんな感じのWeb API です
https://github.com/chainub/chainub/issues/4#issuecomment-96202992
https://github.com/chainub/chainub/issues/3#issuecomment-96200864

47 :デフォルトの名無しさん:2015/05/12(火) 01:14:34.73 ID:vriMx1NZ
iftttてdbどうなってんだろ。やっぱりサービス毎にテーブル分けてるんかな

48 :デフォルトの名無しさん:2015/05/13(水) 08:28:17.09 ID:LePt84pn
>>46
返信ありがとうございますー
ロードの仕組みと、chainubとやり取りするAPIが完成して
チャンネル系が作れるようになったら
他の人も開発に参加しやすくなって盛り上がりそうですね

49 :1 ◆6.No/n6pLw :2015/05/13(水) 23:38:23.02 ID:sR36UKv6
https://github.com/cantino/huginn

こんなものを見つけてしまいました。。。。
もしかしたら既に僕が作ろうとしているものと同等のものが
存在しているかもです。。

50 :デフォルトの名無しさん:2015/05/14(木) 00:43:07.35 ID:k91rAzE4
>>49
差別化を考えんとかんな

51 :デフォルトの名無しさん:2015/05/14(木) 22:32:13.62 ID:1a8gFr8k
>>49
ならやめんの??

52 :1 ◆6.No/n6pLw :2015/05/16(土) 01:05:59.77 ID:77e6xPUt
>>50,51

やめることも考慮にいれて考えたいと思います。
すみません。。。

53 :デフォルトの名無しさん:2015/05/16(土) 10:51:13.29 ID:vexfXpjP
Oh..

54 :名無しのプログラマー:2015/05/21(木) 18:09:53.68 ID:X6zs1nu6
開発おわったか

55 :デフォルトの名無しさん:2015/07/15(水) 04:10:25.99 ID:d2EsO7iS
>>49
同等のものでも日本語対応の別アプリがあるならそれはそれで助かるかも?

個人的にはメモリざんが⚪︎⚪︎MBを切ったらsysight起動とかWi-Fiが切れたら通知出すとか再接続の動作が自動でできたらいいなぁ
※仕様の制約とかなにも知らずに書いてますのでそもそもできなかったら諦めます

17 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)