nDiki : API

API - Application Programming Interface / Application Program Interface

関連情報

2018年10月30日 (火)

JavaScript コードで TaskPaper ファイルにノートを挿入する

ちょっとしたメモを Alfred for Mac から一発で TaskPaper ファイルに挿入したい。Packal 上に TaskPaper のための多機能な Alfred Workflow があるので入れたんだけれど、うまくタスク追加ができないことがあるので、自前でスクリプトを作って Alfred から呼ぶことにした。

TaskPaper ファイルはテキストファイルなので書き慣れている Perl でスクリプトを書いてもいいんだけれど、 編集の競合が避けられるし parser も書かなくて済むしということで TaskPaperAPI を使うことにした。

JavaScript for Automation (JXA) を使えば JavaScript コードで TaskPaper API を呼べるっぽい。

以下指定した TaskPaper ファイルに Inbox: プロジェクトがなければ追加した上でその子供としてノートを挿入するコード(エラー処理割愛。実際にはタイムスタンプとかもノートにつけるようにした)。

 #!/usr/bin/env osascript -l JavaScript

 function TaskPaperContext(editor, options) {
   let inbox = editor.outline.evaluateItemPath("//Inbox:")[0];
   if (!inbox) {
     inbox = editor.outline.createItem("Inbox:");
     let projects = editor.outline.evaluateItemPath('@type = project')
     if (projects.length == 0) {
         editor.outline.root.appendChildren(inbox)
     } else {
       editor.outline.root.insertChildrenBefore(inbox, projects[0]);
     }
   }

   let items = ItemSerializer.deserializeItems(options.text, editor.outline, ItemSerializer.TEXTMimeType)
   editor.setCollapsed(items[0])
   inbox.appendChildren(items, inbox.firstChild)
 }

 function run(argv) {
   Application('TaskPaper').open(argv[0]).evaluate({
     script:TaskPaperContext.toString(),
     withOptions: {text: argv[1]}
   })
 }

これを inbox.scpt というファイルで保存し実行権限を与えれば

 ./inbox.scpt $HOME/tmp/test.taskpaper こんにちはこんにちは!!

という感じで呼び出せるようになる。

あとは Alfred Workflow を作ってそこからこのスクリプトを実行すれば OK だ。

[ 10月30日全て ]

2019年2月22日 (金)

今日のさえずり: はやぶさといえば「手動サーチエンジンはやぶさ」

2019年02月22日

  • 07:59 はやぶさといえば「手動サーチエンジンはやぶさ」 #はやぶさ2
  • 09:49 平成31年2月22日 #朝の渋谷 222 DSC-RX0 #RX0 https://t.co/yn3AjA43te
  • 12:30 RICOH GR III の発表来たかー(注文した)。
  • 14:45 Product Advertising API 厳しい。「まず決めたのは、PA-APIとの決別でした。PA-APIは規約が厳しいことで有名で、懸念となっていました。」 / “カエレバ誕生秘話と最近の仕様変更、そして今後について” http://bit.ly/2T4EJJa
  • 19:32 Alfred で ↑ ヒストリ出すやつ、確定実行しなかったやつも残ってるんだ!
  • 20:38 「今日はハッピーフライデーだ」で通じた(すぐツッコまれたけど)。
[ 2月22日全て ]

2020年4月16日 (木)

Chrome の Picture-in-Picture Extension で Google Meet動画を最前面に

Slack コール(ビデオ通話)では動画表示用の小さいウインドウが最前面で表示される。これを MacBook Pro 内蔵ディスプレイの上部中央、内蔵カメラの直下に配置すると自然とカメラの方に視線が行くようになる。 one-on-one ミーティングなど視線を大切にしたい時に便利だ。

一方最近使っているビデオ会議ツール Google Meet (旧 Google Hangouts Meet) は Google Chrome でアクセスして使う形(Mac)のため同じことができない(Meet を開いているウィンドウは Chrome の装飾がついて大きいし、特定の Chrome のウィンドウだけを最前面に置くこともできない)。

なんかいい方法ないかなと思っていたところ Picture-in-Picture Extension (by Google) という Google Chrome 拡張機能を発見。

Google 公式の拡張機能だ。これを使うと Picture-in-Picture Web API に対応している YouTube などのサービスの動画部分をフローティングウインドウとして最前面に表示させることができる。Google Meetビデオ会議ページで使ってみたところ、動画部分をフローティングさせられた。1対1で画面共有無しの場合はこれでいけるぞ。

[ 4月16日全て ]

2021年2月4日 (木)

Google ドライブ拡張子 md の Markdown ファイルを全文検索できるように rclone でコピーする

拡張子 md の Markdown ファイルを「バックアップと同期」アプリで新規に同期したり、 Web 版の Google ドライブアップロードしたりすると MIME タイプが text/markdown となり全文検索対象にならない。不便。

StackEdit は Google ドライブに送る時の MIME タイプを設定で text/plain を選べるようにすることで問題を回避しているようだ。

rclone で text/plain で Google ドライブアップロードする

クラウドストレージ上のファイルを管理するためのコマンドラインプログラム rclone でアップロードするとどうだろうと思ってやってみたところ、ちょっと設定をいじれば拡張子 md の Markdown ファイルを text/plain で Google ドライブアップロードできることがわかった。

rclone では Google Drive API で新しいファイルを作成する際に、rclone 側で MIME タイプを判定している。内部的には Go の mime パッケージを使っている。

このパッケージは UNIX 系の環境では mime.type ファイルがあれば参照するようになっていたので macOS Catalina にあった /etc/apache2/mime.type ファイルの text/plain 行に md を追加して試したところ、めでたく text/plain として Google ドライブアップロードできた。全文検索対象になることも確認。

ちなみに「バックアップと同期」アプリは /etc/apache2/mime.type 変更の影響を受けなかった。

rclone での方法が分かったわけだけれど、実際のところ Markdown ファイルの Google ドライブとの同期や読み書きを rclone だけに限定するわけにもいかないな。引き続き拡張子 txt で管理するのが現実的のようだ。

[ 2月4日全て ]

2021年9月2日 (木)

Obsidian Sync 同期を導入

Obsidian SyncObsidian Publish を早期割引購入が2021年9月30日までとのアナウンスがあった。Obsidian Publish は2月に購入し便利に使って満足している。

Obsidian vault の同期は Dropbox で済ませてきたので Obsidian Sync は見送ってきたのだけれど、将来使いたくなった時に「早期割引で購入していればよかった」なったら悔しいので、検討の上購入しちゃうことにした。

$48/年。クレジットカード決済での換算レート112.711円で、支払い額は5,410円だ。

end-to-end encryption である

個人的なノートは信頼できそうなクラウドサービスとだけ同期したい。まだ信頼できるに至っていない場合は暗号化して同期したい。確認したら Obsidian Sync は end-to-end encryption とのことなのでクリア。

Obsidian for Android のための FolderSync Pro 同期をやめられる

Android デバイスで Obsidian を使うのに FolderSync Pro で同期をしてきたのだけれど、いろいろ気を使うことが多いのが不満だった。

  • 同期にかかる時間を考慮する
    • vault 全体を同期すると時間がかかるので、よく変更するノートだけフォルダ分けして個別に同期
  • 同期タイミングを考慮する
    • 定時同期
    • 自宅・オフィスの出入りのタイミングで同期 (Tasker 使用)
    • スマートフォンのロック解除で同期 (Tasker 使用)
    • 画面の状態オフで同期 (Tasker 使用)
    • 手動

と工夫してきたけれど、それでも競合の心配は尽きなかった。

Obsidian Sync だとアプリを起動したタイミングで同期 & 編集中にセミリアルタイムで同期される。デスクトップアプリと Android アプリの両方で同じノートを開いて一方で編集すると、何秒か置いて他方に反映されていく。ヘルプによれば約10秒毎にバージョン履歴が保存されるとのことだ。競合の心配が減るのが嬉しい。

Dropbox 等のクラウドストレージへの同期だと(多分大丈夫だと思うけれど) API 利用のリミットレートが気になってしまうけれど、 Obsidian 純正のサービスだとその心配をしなくてもいいというのもあるね。

Obsidian for AndroidObsidian for iOS 両方と同期できる

Obsidian for Android の同期の選択肢は Obsidian Sync かデバイスのローカルストレージと同期できるクラウドストレージ。一方 Obsidian for iOSObsidian SynciCloud Drive が選択肢。

併用したいとなった時には Obsidian Sync が必要になるんだよね。実際そこがネックで iPhone では Obsidian を使っていなかったんだけれど、 Obsidian Sync を買ったのでこれからは両方使えるようになった。そのうち iPhone でも使ってみようかな。

PC を使っている時は vault を開いておく必要があることに注意

Obsidian を起動して vault を開いていれば、ノートiA Writer で編集したりスクリプトで書き換えたりしても検知してちゃんと同期してくれる。良い。

一方 vault を開いていないと同期されない。うっかり開き忘れていて同期されてなかったというのはありそう。そこが Dropbox などと違うところなのでちょっと注意が必要だ。

年間 $48

早期割引とはいえ同期だけで $4 はなかなかいいお値段である。

これで合計 $194/年、110円/ドル計算だと 21,340円/年だ。ひえー。

[ サブスクリプションサービス ]

[ 9月2日全て ]

2023年2月2日 (木)

Twitter API 無料アクセスサポート終了

Twitter API v2 と v1.1 の無料アクセスサポートを2023年2月9日に終了するとの発表があり、大騒ぎになっている。終了までの期間が短いという点で大事ではあるが、ソーシャルメディア事業者としての総合的な判断なのだろうと受け止めている。

13年ぐらい前から1時間に1回自分の Tweets を取得させていたスクリプトもついに止まるのかな。確認すると連携アプリとして許可したのは2009年12月28日だった。その前はフィード取得で実現していたはず。 Tweets の Web 日記化を手動でやるのはちょっと時間がもったないしどうしたものか。

振り返ってみると2007年4月6日に Twitter アカウントを作成し、翌日にはiモード経由で Tweet するプログラムを書いたりしていたんだな。

[ 2月2日全て ]

2023年3月30日 (木)

今日のさえずり: 「ホットドッグアイスクリームのお店 大学堂」が2017年に終了していた

  • 13:16 明日の『金曜ロードショー』で『プーと大人になった僕』地上波初放送とバナー広告で知った。プーさん観たい!
  • 15:10 Obsidian v1.2.0 で Bookmarks コアプラグインが入った。ブックマークを本格的に使うのは Obsidian Mobile で使えるようになってからかな。 今回のアップデート検索が速くなった気がするけど確証なし。マッチ数がカウントアップ表示されるようになったことによる印象の変化だけかもしれない。
  • 16:35 移動販売「ホットドッグアイスクリームのお店 大学堂」 @hotdogdaigakudo が2017年に終了していた。
  • 23:43 『シン・仮面ライダー』幕前/第1幕 クモオーグ編を観た。この放送用のオープニングいいなあ。
  • 23:50 Twitter Blue のサブスクリプションマーク (青いチェックマーク) が付いた。
  • 25:15 2023年3月30日 (木) したこと - ナンバー可変式南京錠を注文する - new Twitter API access tiers の内容を確認する - 『シン・仮面ライダー』幕前/第1幕 クモオーグ編を観る
[ 3月30日全て ]

2023年4月3日 (月)

新年度仕事始め【日記】

4月最初の平日な月曜日。ビルのエントランスロビーに上がるエレベーターがいつになく混んでいた。春。

いよいよ今月下旬に無料で Twitter API を使って自分の Tweets を取得できなくなる。日々の記録も兼ねた Tweets もあるので、今後も保存していきたいのだけれどどうしようかなあ。

1日の Tweets がめちゃくちゃ多い訳ではないので、手でコピーしていくこともできるのだけれどちょっと時間がもったいない気がする。

Twitter Analytics から By Tweet でデータをエクスポート (CSV 形式) して加工するというのもありかな。Twitter Analytics はたまに集計不具合があったりするので、エクスポートデータに漏れがあるのではという懸念があるけれど。

今日のさえずり: 新年度の始まりの始まり

  • 09:24 フレッツ通信障害についてメッセージ送ったけれど、対象だったらそもそも届かないな。
  • 09:32 新年度の始まりの始まり。
  • 09:36 オフィスのエレベーターいつになく混んでた。
  • 20:09 新年度の始まりの終わり。帰る。
  • 25:45 2023年4月3日 (月) したこと - 加湿器を掃除する - API 有料化後の Tweets 保存方法を考える
[ 4月3日全て ]

2023年4月6日 (木)

Twitter を使い始めて16年

2007年4月6日に Twitter のアカウントを作ったので今日で丸16年。昨年10月27日にイーロン・マスク氏により Twitter, Inc が買収されるなど、Twitter の経営体制とサービス内容が目まぐるしく変わった年だった。

#MyTwitterAnniversary

そういえば16年の #MyTwitterAnniversary は無いのかな。楽しみにしていたけれど通知こず。

Twitter が止まるかも?

人員削減で Twitter の運営・保守が難しくなるのではという雰囲気になったのが昨年11月頃。 Twitter を使い続けたいなと思いつつも止まってしまった時の行き場所を考えなければとなったのもこの時だ。

Mastodonアカウントと環境を見直したり、オープンプロトコル Nostr を触ってみたり、Misskey.io に新規登録してみたりした。 Bluesky も気になっているけれど、招待が必要なのでまだ触れておらず。止まったら、あるいはみんな移住してしまったらという時の準備なので、今のところ投稿は Twitter で継続中だ。

それから念のためTwitterデータも半年に1度はダウンロードしておくことにした。

日本で Twitter Blue の提供が始まる

1月11日についに日本でも Twitter Blue の提供が始まった。15年以上ずっと無料で使ってきたのでプレミアム会員サービスが始まったらお金を払おうと思っていたので、即日サブスクリプション購入した。

ヘビーユーザーが多いからかフォローしているアカウントの Twitter Blue 率は10%を超えている。あくまでもフォローしている範囲だけれど、解約する人も少なく顧客維持率は高いな。

機能としては

  • 話題の記事
  • リーダー
  • ツイートの取り消し
  • カスタムナビゲーション

を便利に使っている。話題の「ツイート編集」機能は全く使っていない。削除して Tweet し直す方がタイムラインがきれいなので。「長いツイート」機能については肯定的だけれど 140文字を超える Tweet はほとんどしていない。長い文章はストックとして Web 日記に書くことが多いからかな。

切望していたブックマークフォルダは結局あまり使いこなしていない。ブックマーク自体はちょこちょこ使っているけれど。

青いチェックマークは自己顕示欲を満たすのにちょっぴり貢献しているが、フォロワーが増えるとかいいね・Retweets が増えるとかいった実益は今のところ特に無し。

サブスクリプション購入初月の間に年間プランが始まったので、月間プランを解約し年間プランで購入し直したのだが、その際にデータ不整合でも発生したのか Twitter Blue 機能が有効にならなくなってしまった。問い合わせ対応で解消したものの、青いチェックマークはその後も付くことはなかったのね。

年払いしたのに Twitter Blue 全特典が有効にならないのは悲しい。粘り強く何度も問い合わせた結果、最後にようやく不具合と認識してもらえたようで対応してもらえた。アカウントが確認され青いチェックマークが再度表示されるようになるまで47日かかった。

サードパーティクライアントが使えなくなった

2023年1月19日発効で Twitter の Developer Agreement が改定され、Twitter によるライセンス素材を使って Twitter アプリケーションの代替や類似となるサービス/プロダクトを作ることが制限されることになった

これにより愛用していた twitcle plus が使えなくなった。少し前にライセンス購入した Tweetbot 3 for Mac も動かなくなった。

選択肢が無くなったので今はスマートフォンでは公式アプリを使っている。Retweets 非表示機能が無いのが残念ではあるが、 Twitter 公式の機能が全部使えるわけだし慣れれば公式アプリでいいかなとなっている。

PC では旧 TweetDeck を継続利用中だ。

Twitter API アクセスレベルの変更

もうひとつの大騒ぎな出来事はTwitter API 無料アクセスサポート終了の発表だった。その後 Free/Basic/Enterprise というアクセスレベルが用意されることになった。 Twitter 連携を使っているサービスのほとんどが対応を迫られ、新プランが見合わなければサービス終了せざるを得ない状況になっている。

サードパーティクライアントの件と Twitter API の件、どちらもインパクトが大きく不満の声が多く飛び交っているわけであるが、個人的にはまあそうせざるを得ない事情があるのだろうなと受け止められている。

サードパーティクライアントと API 無料提供は、収益・プロダクト機能変更・健全化・インフラコスト・運用コストなど多くの点で足かせとなる。ユーザーへの価値提供と利用促進とにつながるプラス面と天秤にかけ、ユーザー離反・顧客離反のリスクも鑑みた上で意思決定していくのは事業経営としては当然であるしね。

さて、自分の Tweets を取得するため1時間に1回動かしている自作スクリプトもそのうち止まることになる。 Tweets を記録するのどうしようかなあ。

タイムラインの雰囲気

Twitter の動向やイーロン・マスク氏の発言にに対する不満の Tweets が毎日流れてくるのがちょっと切ない。普段冷静に考えていそうな人が Twitter の動きに対して、すべて否定的に捉えていたり全部がイーロン・マスク氏の思惑だと思い込んだりしている発言をしてるように見てとれたりする (思い込みかもしれないけれど)。新型コロナウイルス感染が拡大し始めた2020年の時の怒りが溢れていたタイムラインを思い出してしまった。

17年経った来年には落ち着いているといいな。

[ 4月6日全て ]

2023年5月24日 (水)

今日のさえずりスクリプト止まる

自分の Tweets を API で1時間に1回スクリプトで取得していたが、とうとう 401: Unauthorized で止まってしまった。

昨日の 9:31 の Tweet が取得できているので昨日の 10:00 の実行は成功していた。 11:45 の Tweet は取得できていなかったので、 11:00 か 12:00 かの実行から拒否されるようになっていたようだ。

さて、記録として自分の Tweets を Web 日記記事化するの今後どうやっていこうかなあ。

[ 最近のさえずり ]

[ 5月24日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.0304s / load averages: 0.56, 0.41, 0.40