RubyPico 0.9.4 リリース - GitHubに置かれたスクリプトをダウンロードできるように

拡張スクリプトを追加することでGitHubに置いたスクリプトをダウンロードできるようになりました。 - 更新履歴

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

github_download.rb

RubyPicoGemsの仕組みをリニューアルしました。

  1. github_download.rb をインストール
  2. インストールしたいライブラリのパスをコピー(例. ongaeshi/rubypico_github)
  3. github_download.rb を使ってライブラリをインストール

全ての手順がRubyPico内で完結するようになりました。今までとは雲泥の使いやすさなので是非お試しください。自分が書いたプログラムもGitHubに置くことで他の人に配布できるようになります。

※ とりあえずongaeshi/app_installerをインストールしておくとAppタブへの登録が簡単になるのでおすすめです

Image.load()でファイルへの読み書きが可能に

Image.loadでローカルファイル内の画像を読み込んだり、Image#save_toでカメラロールの画像をファイルに保存することが可能になりました。

ということでついに、GitHubレポジトリに画像を入れてコミット、github_download.rbでダウンロード、Image.loadで表示することが可能になります。

ホームページリニューアル

情報が複数のページに拡散していたので1ページにまとめなおしました。スマホからでも読みやすく検索しやすくなったと思います。

http://rubypico.ongaeshi.me/

インストール

App Storeからどうぞ。

日記を書く技術

2017年から日記を付け始めた。個人的にとても役立っているのでやりかたをまとめておく。

基本

日記の魔力

日記の魔力

この本のやり方を真似ている。

  • 1日1記事
  • 時系列に起きたことを順番に書いていく
  • 感想を書く必要はない
  • 客観的な事実を具体的に書く
  • 日記に書かないと消えてしまうことを記録する
  • よく観察する
  • あとで読み返すために文章の方がよい
  • 10日ごとに日記を読み返して大切なことは抽出する

大切な「抽出」について。今までも読んだ本や映画の記録、思いついたプログラムのアイデアなどを書き出していた。しかしそれぞれ違う場所に記録していたため記録が面倒になったり、一箇所に全てまとめるとテキストが大きくなって探せなかったりということがあった。書くときは全て日記に書き出し、10日ごとに専用の場所(例えば本の感想はブックメモアプリなど)に抽出する。こうすることで全てが記録された日記とカテゴリごとに読み返しやすい専用メモの2箇所に情報が蓄積され探しやすくなる。さらに抽出という作業を行うことで自分自身の記憶も強化されるので一石二鳥となる。

自分しか読まないからといってメモの断片の集合のような形にしてはいけない。あとで読み返しにくくなる。日記とは自分という読者に向けて書く「文章」なのでやはり読みやすい方が良い。読み返さないと日記のパワーを半分しか使えていない、みたいなことも本に書かれていた。

ツール

Day One ジャーナル + ライフログ

Day One ジャーナル + ライフログ

  • Bloom Built Inc
  • ライフスタイル
  • ¥600

オーソドックスにDay Oneを使っている。ずっと昔に買って忘れていたのを見つけてそのまま使っている。

抽出作業はPCでやった方がはかどるので、テキストファイルとして保存してくれるDropbox連携は必須。

画像のリサイズ

Day One は1つの日記に対して1枚の画像を付けることができる。あとで思い出すのに役立つのでどこかに行ったようなときは付けるようにしている。問題はDropboxの容量で今のiPod Touchのカメラは画像サイズが大きいため毎日撮っているとすぐに容量がいっぱいになってしまう。そこでRubyPicoを使って横幅1280になるようにサイズ調整するスクリプトを書いている。

gist086ffd836292ae4e4143242bae7f8e65

写真をとったらスクリプトを起動してリサイズ画像を作る。それをDay Oneに貼り付ける(Last Photo Takenを使うと便利)。貼り付けた画像はDay One側にコピーされてるのでカメラロール側のリサイズ画像は消す。

スクリプトDSTの値を変えると横幅を調整できるようにしてある。記憶の手がかりになればよいので、もう少し小さくしてもいいかなとも感じている。

効果と効能

私の書きたい欲の大半はブログじゃなくて日記で解消するのだな、と思った。

自分を客観的に記録することができる。とりあえず書き出してみることで自分が考えていることを整理したり新しい事実に気がつくこともある。

もやもやすることがある時にブログを書こうとすると外向きの文章なのでなかなか筆がすすまないことがある。日記だと「こんなこと書いちゃっていいのかな?」と考えずにストレートな気持ちを書き出しやすい。あとで読み返すことで気持ちの整理もできる(炎上もしない)。他の人にどうしても聞いて欲しいことがあればそのあとでブログに書けばよい。そういえば昔もそんなこと書いてたな。

自分専用のメモを作って簡単に検索出来るようにする - ブログのおんがえし

メインのメモ帳のTiddlyWikiは割とテキスト断片の集合として使っているため読み返すのに向いていなかったと感じる(そういえばTiddlyWikiに書いていた箇条書きの作業ログはほとんど読み返したことがない)。作業ログやTODO管理には引き続きTiddlyWikiを使いつつ、読み返すための文章として日記を書いていこうと思う。

TiddlyWiki備忘録(2017年版)を作りました。

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

f:id:tuto0621:20161229210041p:plain

特徴

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

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

以下に書きました。

ダウンロード

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

2017年版の特徴

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

書評 - プロ書評家が教える 伝わる文章を書く技術

書評を上手に効率よく書くための「型」を身につけたくて手にとった。

プロ書評家が教える 伝わる文章を書く技術

プロ書評家が教える 伝わる文章を書く技術

筆者は2012年8月から「ライフハッカー」で書評コーナーを担当しており月曜日から金曜日までの毎日、月に20本もの書評を書いている。年間250冊以上の書評を書いている計算になり少なくとも週に5冊(実際には1日1冊以上のペースで読んでいるらしい)以上インプットする必要がある。2016年12月にサイトを覗いてみると引き続き同じペースで書かれているようなので今まで1000冊以上の書評を書いていることになる、すごい。

このような高負荷なインプットとアウトプットをこなせている筆者のテクニックは、趣味として書評をもう少し書きたいと思っている自分にとっても価値があるように感じた。

インプットの「型」

読書を、情報摂取モードと読書体験モードに切り替えているんですよ。

書籍の中でなんども言及されていたのが「たくさん読みたければ、何かを諦める必要がある」ということ。たくさん読んでいる人は全てを精読しているわけではなくいくつかの本は流し読みして情報摂取に勤め、本当に読みたい本は丁寧に読むということだった。これは本を読むのが好きで流し読みするのがなんとなく冒涜のように感じてしまう自分にとっては結構衝撃的だった(今でも少し抵抗感はある)。

さておき、本を読んでいてページ数を増やすために追加された章だなと感じることはたしかにあるので、本当に必要なことを効率よく取り出すために流し読みする勇気が自分には必要なのかもしれないと思った。本文にあった一節が胸に刺さる。

「義務的な精読」は、効率的なように見えてとても非効率的

思い返すとちゃんと読まないといけないと思って買うのを諦めた本、読み切れないからという理由で積読した本がたくさんあることに気がつく。それなら購入して本当に必要な1章だけを読んだ方がよかったのかもしれない。

技術書の場合は隅から隅まで役に立つということはまれで1/4くらいのことはなんとなく知っていて、半分くらいは自分にとって今は必要ないこともしくは難しくてわからないことで、本当に役に立つのは残りの1/4くらいということが結構ある。

例えばDockerの本が売っていて全部読む気はないけど、今知らなくてすごく知りたいトピックが目次に載っていたら購入して読んでそれで終わり!みたいなやり方をしてもいいのかもしれないなぁ。

アウトプットの「型」

筆者の書評のテンプレートが紹介されていてよかった。

署名、著者名、出版社名、内容説明
↓
引用
↓
解説
↓
引用
↓
解説
↓
まとめ

最初に書籍の概要を書いてから引用を使いながら面白かったところを紹介していく。あらかじめ本を読みながら引用したい文章があったら線を引いたりドッグイヤーをしていくとよい。読み終わったら引用したい箇所を集めたり書きたいことの断片を書き出しておく。

実際に本を読んで書評に落とし込むまでの流れ。必要事項をあらかじめ入力する、一気に書ききる、修正は全て推敲で行う、などが参考になった。

  1. 読書 精読の場合は1-3日、斜め読みの場合は30分。
  2. 必要事項の入力 小見出しと引用の入力
  3. 執筆 大切なのは一気に書ききること、細かい部分は推敲でまとめて直す
  4. 推敲 いちばん重要なのがここ。ここに至るまでに少しでも時間を短縮するのがポイント

まとめ

筆者はライフハッカーの読者が本に対して感じていることを以下のように分析している。

「できれば、時間をかけて読み込みたい」

「そして、そのなかから自分に必要な情報を効率的に抽出したい」

「でも現実的に、それはとても困難なこと」

というジレンマのなかにいる

的確で素晴らしい分析だと感じた。引用を多用するスタイルは中身を短時間で知りたいという読者の気持ちに答えるために生まれたもののようだ。私が書く書評もこのように読者の問題を解決するものでありたい。

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