RubyPico 0.9.2 リリース - Appタブ、irb、Browser.post、choise

RubyPico 0.9.2 をリリースしました。irbをエディタ画面を経由せず実行できるようになったり、自分の作ったスクリプトをアプリとして登録できるようになりました。

他にもPOSTメソッドを呼び出せるBroser.postや、複数選択肢の中からタップさせて結果を返してくれるchoiseなど楽しいAPIがたくさん組み込まれました。

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

Appタブ

f:id:tuto0621:20161201001242p:plain

今まであった File, Sample に加え、新たにAppタグが増えました。ここに表示されたスクリプトエディタ画面を経由せずに直接実行されますスクリプトの中身を確認したいのではなく実行した結果に興味があるときは大変便利です。

irb, lineno が標準でアプリ化されています。特にirbは動作を確認したいときや簡易電卓として頻繁に使う人が多いのではないかと思います。

自作スクリプトをアプリとして登録する

f:id:tuto0621:20161201001321p:plain

自分で書いたスクリプトも簡単にアプリ化することができます。ルートディレクトリに.app/というフォルダがあるのでその中に置かれたファイルが自動的にアプリタブに表示されます。irbやlinenoが不要な場合は消すことも可能です。

f:id:tuto0621:20161201001419p:plain

.app/内のスクリプト.rbが付いていませんが、普通のRubyスクリプトとして実行されます。もちろん直接プログラムを書いてもよいのですが、プログラム本体は別の場所におき.app/以下はrequireだけを呼ぶようにしておくのがおすすめです。

f:id:tuto0621:20161201001428p:plain

require 'sample/irb'

RubyPicoの特殊ルールとしてrequire 'sample/xxx'と呼ぶとSampleタブにあるコードをrequireすることができます。それ以外はルートディレクトリからの絶対パスでrequireしたいファイルを指定します。例えば/foo/bin/main.rbをAppタブに置きたい場合は以下のように書きます。

※ 新たに追加されたCopyボタンを使って他のアプリを流用すると簡単です

# .app/foo に置く
require 'foo/bin/main'

Appタブを使うと自分や他の人の作ったスクリプトを簡単に呼び出すことができます。また.app/以下にファイルを作るだけなのでインストール自体もRubyスクリプトで書くことができます。面白い機能なので是非使ってみてください。

Browser.post

今までBrowser.getBrowser.jsonを使ってGETメソッドを送ることはできていましたが、POSTメソッドも送信できるようになりました。以下のようなことができるようになります。

choise

ちょっと不思議なメソッドです。文字入力なしでユーザーが選択できるようになるためスマホらしいUXが作れるのではないかと期待しています。

  • 選択肢を配列に格納してchoiseを呼び出し
  • リンク文字列として出力されなにかがタップされるまでプログラムが停止する
  • タップされたらプログラムはふたたび動き出す、タップした文字列を結果として返す

以下はサンプルコードです。提示された選択肢をタップしていくことでプログラムが進みます。(アドベンチャーゲームとか作れそうです)

puts "What your birthday?"
r = choise(%w(Jan Feb Etc))

if r != "Etc"
  puts
  puts "Hello, #{r}"
  return
end

puts "Sorry"
r = choise(%w(Mar Apr Jun Jul Etc), with_no: true)

if r!= "Etc"
  puts
  puts "Hey, #{r}"
  return
end

puts "Oh, Sorry"
r = choise(%w(8 9 10 11 12), combine: true)
puts 
puts "Yah, #{r}"

r = choise(%w(1 2 3).map { |e| e + "\n" })
puts r

実行結果です。

f:id:tuto0621:20161201001530p:plain

インストール

App Storeからどうぞ。

おまけ

個人開発者 Advent Calendar 1日目に参加しました。

スマホからLINE NotifyするRubyスクリプトを書いた。

次回リリースのRubyPico 0.9.2からBrowser.postが使えるようになります。

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

つまりRubyスクリプト経由でスマホからLINE Notifyを送れるようになります。

line_notify.rb

TOKENLINE Notifyから取得したトークンを設定すれば任意のメッセージをRubyから送ることができます、LINE Notifyはとっても手軽に使えてすばらしいです。

gist520423acff80ed55cbda263bb073e22a

kaeru.rb

ルートディレクトリにline_notify.rbが置いてある場合、その横にこんなスクリプトを置けば簡単に帰るときの定型文が送れるようになります。

gistb197df1b14f562c8e83772c9a1501e5f

さらに応用

他のAPIから天気や今日の占いを取得してLINEに転送したり、iPadで検索していたページのURLをそのままスマホに転送したりできます。個人に対してクリップボードを転送するようなアプリはたくさんありますが、LINE Notifyはグループにも転送できるので複数にまとめて流せるのも便利です。

パーソナルアクセストークンは個人宛やグループを指定して複数個発行できるので色々な使い方が考えられそうです。

0.9.2はもうすぐリリース予定なので是非それぞれの使い方を模索してみてください。

宣伝: 個人開発者 Advent Calendar を作りました

個人開発者 Advent Calendar 2016 - Qiita

yatteiki.fmを聞いていて「個人開発者」という言葉はよいなあと思い、他の個人開発者の人たちがどんなものを作っているのか知りたくなり作ってみました。

個人(数人でもOK)が趣味で作っているものを発表していくアドベントカレンダーです。制作物の規模、言語やジャンルは問いませんのでお気軽にご参加いただけたら嬉しいです。

RubyPicoにBrowser.postを実装した

次回リリースの0.9.2で使えるようになる予定です。これで認証トークンが必要な複雑なWeb APIiPhoneから簡単に叩けるようになります。

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

使い方は簡単で、URLの後に body, json, header をハッシュ形式で渡すだけです。

# 生のテキストを送信
Browser.post("https://example.com/post", body: "foo\nbar")

# application/x-www-form-urlencoded で送信
hash = {foo: "foo", bar: "bar"}
Browser.post("https://example.com/post", body: hash)

# json形式
Browser.post("https://example.com/post", json: hash)

# ヘッダ情報付きで送信
Browser.post
  "https://example.com/post",
  header: { "Authorization" => "token XXXXXXXX" },
  json: json
  )

例: Gistsに投稿

Created by RubyPico at Sat Nov 12 23:44:12 2016

# https://developer.github.com/v3/gists/#create-a-gist
json = {
  description: "Created by RubyPico at #{Time.now}",
  public: true,
  files: {
    "file1.txt" => {
      content: "updated file contents"
    },
    "old_name.txt" => {
      filename: "new_name.txt",
      content: "modified contents"
    },
    "new_file.txt" => {
      content: "a new file\nあいうえお"
    },
  }
}

puts Browser.post(
  "https://api.github.com/gists",
  header: { "Authorization" => "token XXXXXXXX" },
  json: json
)

宣伝: 個人開発者 Advent Calendar を作りました

個人開発者 Advent Calendar 2016 - Qiita

yatteiki.fmを聞いていて「個人開発者」という言葉はよいなあと思い、他の個人開発者の人たちがどんなものを作っているのか知りたくなり作ってみました。

個人(数人でもOK)が趣味で作っているものを発表していくアドベントカレンダーです。制作物の規模、言語やジャンルは問いませんのでお気軽にご参加いただけたら嬉しいです。

FireLink 2.3.3 リリース - Firefox49で起きる問題を修正

Firefox49になって複数の%url%を含むようなリンクが正しく動かなくなっていましたがPull Request #7のおかげで修正されました。

インストールはこちらからどうぞ。

FireLink - Copy link with keyboard shortcuts :: Add-ons for Firefox

余談: jpm run がFirefox49になると実行できない?

jpm run がFirefox49になると実行できない? - Qiita

RubyPico 0.9.1 リリース - ファイルマネージャーの強化、File、Dir

RubyPico 0.9.1 をリリースしました。ファイルマネージャーの強化、File、Dirが使えるようになりました。

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

ファイルマネージャーの強化

ディレクトリが作れるようになりました。実験的なプログラムを/tmp以下に置いたり、複雑なアプリケーションを1つのディレクリ以下にまとめておくことができるようになりました。他にも色々パワーアップしています。

  • Editボタンを追加
  • ディレトリの表示、作成
  • 削除
  • 移動
  • 名前変更
  • ソート種類の変更

f:id:tuto0621:20161106214817p:plain f:id:tuto0621:20161106214906p:plain

File, Dir

FileDirライブラリが使えるようになり、プログラム上でファイルを作ったり、実行時にファイルを読み込むことができるようになりました。

例: tango

複雑なアプリケーションの例として単語帳を作ってみました。

ongaeshi/tango: Flashcard for RubyPico

  • 登録した単語をword.json以下に保存
  • 次回起動時にword.jsonを読み込み
  • 単語の追加、訳の追加、単語を削除したときはword.jsonを更新

f:id:tuto0621:20161106214914j:plain

RubyPicoでアスキーアートアニメーションを作る

次のバージョンで追加されるsleepclearprintという関数を使うと簡単に作れるようになります。

ascii_art.gif

アスキーアートアニメーション - スマホではじめるRubyプログラミング

スマホ用の多面サイコロをRubyで書いてみる

スマホではじめるRubyプログラミングというページをはじめました。

第1弾として多面ダイスを作ってみました。RubyPico0.9で入ったTextView.click_linkを使うとRubyスクリプトが走る擬似ボタンのようなものを作ることができるようになりました、便利です。

dice.gif

お楽しみください。

多面サイコロ - スマホではじめるRubyプログラミング