RubyPico 0.9.7 をリリース - mruby 1.3 に対応

mruby 1.3 に対応したり、Browser.openを連続でできるようにしました - 更新履歴

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

mruby 1.3 に対応

  • Safe navigation operator (&.)
  • Array#dig, Hash#dig
  • Object#freeze
  • Kernel#caller

詳しくはmruby 1.3.0 releasedをどうぞ。

マルチオープン

URLのリストから複数のウェブページを開いたり、任意のアプリをまとめて起動することができます。

URLS.each do |e|
  Browser.open e
end

以下の動画が分かりやすいと思います。

私はこの機能を使ってクリップボードにコピーした行区切りの買い物リストをまとめてリマインダーに登録しています。超便利です。

インストール

App Storeからどうぞ。

mrubyの文字列をC言語から参照するときはmrb_string_value_ptr()ではなくmrb_string_value_cstr()を使う

src = Clipboard.get.split("\n")

src.each do |e|
  p e
  puts e
  puts
end

みたいなコードを書いているときに、pだと正しく表示されるけどputsだと後ろの文字列が一緒に表示されてしまうときがあった。

# クリップボードの内容は"foo\nbar\nbaz\n"とする
"foo"
foo
bar
baz

"bar"
bar
baz

"baz"
baz

調べていくと、C言語内でmrubyの文字列を参照しているときにmrb_string_value_ptr()を使っているのが原因だった。NULL終端された文字列が確実に欲しいときはmrb_string_value_cstr()を使う必要がある。

慌ててRubyPico全体をgrepして、ひととおりmrb_string_value_cstr()に変更した。結構あったのに、意外とちゃんと動いていてびっくり。

後でSketchWaltz側も直しておこう。

※ このバグは申請中のRubyPico 0.9.7 で直ります

TiddlyWiki備忘録2018を公開しました

去年に引き続き、TiddlyWiki備忘録の2018年版を作りました。

残念ながらFirefox QuantumでTiddlyFoxプラグインが使えなくなってしまいますが、代わりにTiddlyServerを使うとよいらしいです(私は今はESRを使ってしのいでいます、、がそのうちQuantumに乗り換える予定)。

f:id:tuto0621:20180105010753p:plain

特徴

  1. ブラウザさえあればどこでも使える
  2. 1つのhtmlファイルだけで構成されているので、持ち運びが楽
  3. 見出し、リスト、表組、リンク等、単なるテキスト以上の機能を内包する
  4. 豊富なプラグインが世界中で開発されている、アップデートも簡単
  5. JavaScriptで作られているのでブラウザの進化に合わせて表現力が上がる。

個人用のメモを作った方がよい理由

以下に書きました。

ダウンロード

zipアーカイブを展開します。memo.htmlが入っているのでブラウザで開いて下さい。

2018年版の特徴

要望や不具合、使ってみた報告など頂けたら、2019年版を作る時の励みになります。

音声入力が素晴らしい

前回の記事で抱負を3つほど書いたので、それを実行するためのシステムを整えることにした。

まずはブログ。最初の入力が億劫になるのが1番の問題なので入力を極力簡単にしたい。そこで最近勝間さんのブログなどで紹介されている音声入力を試してみることにした。Remote Mouseと言うソフトをiPod Touchにインストール、ウィンドウズ側にもサーバソフトのインストールが必要だがどちらのインストールもとても簡単だった。これでWindowsiPod Touchの音声入力を使って文字が入力できるようになる。

良いアプリなので早速240円のプロ版を購入。プロ版を使うとiPod touchを横向きにして使えたり、ウィンドウズボタンなどの特殊キーも入力できるようになる。

使ってみた感想として音声入力は確かに早い。特に今回のようなブログっぽい話し言葉の文章が並ぶ記事を書くときはかなり高速に入力できる、エッセイ的な文章に向いているだろうか。逆に大量のコードの途中途中に文章が並ぶような記事はあまり効果は無いかもしれない。

音声入力で文章を打ち込みながら音声入力で書けるプログラム言語があったら結構面白いんじゃないかなと思ったり。こういうちょっと思いついたくだらないことはキーボードだと書かないことが多いが音声入力だと割と簡単に入力できるのもとても良い。

次にESLPodを習慣づける方法を考える。やはりどの時間にやるかを決めてしまうのが良さそうなので朝の運動と一緒にまとめて行うことにした。朝起きたら毎朝踏み台昇降運動をすることにしたのだが、それと一緒にESLPodを聴き終わるまで運動も続ける。大体30分位なので踏み台昇降としてもちょうど良い。1つの時間で2つの習慣を実行できるので効率もよい。

最後に自分が欲しいソフトウェアを書くということについては残念ながらまだ良いシステムが思いついていない。しかし作りたいものは2,3個見つかったのでそれを毎日ちょっとずつ書くいていくことにする。

ちなみに、この記事自体もリモートマウスを使って入力している。それなりに誤字脱字があるので後で編集が必要だがこの最初の文章の入力自体は5分もかかっていない。つまり音声入力は素晴らしい。

2017年を振り返りつつ来年の抱負

今年を振り返りつつ来年の抱負

2017年はちょっとアウトプットが少なかったかなという反省があります。ブログも8月以降更新してなくて広告でてた。時系列に振り返ると

それなりに頑張っているようにも見えるけど昨年と比べると密度が足りなかったという感じがしています。

抱負

せっかく作るならちゃんとしたものを作りたい・・みたいな気持ちが強すぎてアウトプットするパワーが減ってしまいました。もしかしたら年を重ねて残り時間を意識してしまったのかもしれません、よくないですね。アウトプットを取り戻すのが一番の目標です。

  • ブログを50本書く(週に1本の計算)
  • 自分が欲しいソフトウェアを書く
  • ESLPodを継続する

ブログも「どうせ書くならみんなが読みたいものを」みたいなことを意識してライターズ・ブロックしてしまったので、自分の日記として書きたいことを書くことにします。ブログ内のスタイル、投稿時間、URLといったものにこだわりすぎて面倒くさくならないように気をつけよう。

今年書いたソフトウェアで一番役に立ったのが今週のJUNKとANNをRadikoで一瞬で開くRubyスクリプトでした。技術的には本当にシンプルなことしかやっていないけど私の生活にはとても便利なものでした。自分や自分の身近の問題を解決するものをもっと軽やかに作っていきたいと思います(それとは別に新しい技術をキャッチアップしていくことも別途必要だと思うけど)。

最後はインプットの話です。2015年に洋書をたくさん読んで向上した英語力が2016年はあまり変化しなかったのですが、エンジニアの英語力 - 怠惰を求めて勤勉に行き着くで紹介されていたESLPodが大変よかったので今年はこいつで頑張ろうと思います。

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

radiko.rbで時間表記を"Mon 25:00"と書けるようにした

ドッグフーディングしながらコツコツと改良を加えているradiko.rb

深夜のラジオ番組は大体

  • “Mon 25:00” (本当は火曜日の深夜1:00)
  • “Sat 24:00” (本当は日曜日の深夜0:00)

のような表記をされることが多い。今までは"Mon 25:00" -> “Tue 1:00” のように変換して表記する必要があったのだがこれをどちらでも書けるようにした。

github.com

require "radiko/radiko"
include Radiko

c "ハライチのターン!", "Thu 24:00", %w(TBS RBC)
c "オレたちゴチャ・まぜ", "Sat 25:50", %w(MBS)

番組表そのままで記述できるので便利。

Radikoの番組をRubyPicoから直接開けるようになった

その後radiko/radiko.rbの改造を加えている。

任意の番組リストを作れるように

前回の課題になっていたやつ。自分の好きな番組もann.rbやjunk.rbのように表示できるようにした。

rubypico/radiko - GitHub

こんな風に書くと

# coding: utf-8
require "radiko/radiko"
include Radiko

c "山下達郎のサンデー・ソングブック", "Sun 14:00", %w(FMT RADIONERRY FMO E-RADIO FMAICHI FMGIFU)
c "ライムスター宇多丸のウィークエンドシャッフル", "Sat 22:00", %w(TBS RAB YBC RBC)
c "菊地成孔の粋な夜電波", "Sun 20:00", %w(TBS IBC YBC RFC BSN)

こんな風に表示してくれる。

メソッドRadiko::cは今のところ週間番組を想定しているけど、以下のように書けば月~金だけ放送するような番組でもいける。

# coding: utf-8
require "radiko/radiko"
include Radiko

CHANNELS = %w(TBS RAB CBC)

c "毎日ニュース(月)", "Mon 14:00", CHANNELS
c "毎日ニュース(火)", "Tue 14:00", CHANNELS
c "毎日ニュース(水)", "Wed 14:00", CHANNELS
c "毎日ニュース(木)", "Thu 14:00", CHANNELS
c "毎日ニュース(金)", "Fri 14:00", CHANNELS

Radikoアプリを直接開けるようになった

めちゃ便利になった。