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

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

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

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

dice.gif

お楽しみください。

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

RubyPico 0.9 リリース - gets、リンク付き文字列、クリックイベント、チュートリアル

RubyPico 0.9 をリリースしました。getsによる入力、リンク付き文字列、クリックイベントのハンドリング、Ruby初心者のためのチュートリアルと盛りだくさんです。

RubyPico

RubyPico

  • ongaeshi
  • 仕事効率化
  • 無料

gets

コンソールを表示しながら入力できるようになったのでより自然なirbが実装できました。

f:id:tuto0621:20160924004944p:plain

詳しくはgetsでirbを再実装をどうぞ。

リンク付き文字列

HTMLのように、見た目は普通の文字だけどクリックすると特定のURLにジャンプできる文字列を生成できるようになりました。

f:id:tuto0621:20160924143357p:plain

詳しくはGitHubの気になるユーザーのレポジトリをiOSで一覧表示するをどうぞ。

クリックイベント

さらにさらに、リンク付き文字列がクリックされたときに指定したコールバック関数が呼べるようになりました。つまりダミーのURLを埋め込んで実際にはRubyプログラムを呼び出すためのボタンを生成する・・ができるようになります!

サンプルタブにclick_link.rbを用意したので参考にしてください。

# # click_link
#
# ## Description
# Make clickable links

def a(str)
  AttrString.new(str, link: str)
end

def reload
  puts "Click bellow links\n\n"
  puts a("foo") + ", " + a("bar") + ", " + a("baz") + ", " + a("clear")
  puts "----"
end

TextView.click_link do |url|
  case url
  when "clear"
    TextView.clear
    reload
  else
    puts url
  end
end

TextView.click_link do |url|
  puts "Hi!, #{url}" if url == "bar"
end

reload

チュートリアル

https://www.ruby-lang.org/ にある「20分ではじめるRuby」をRubyPicoでやるためのドキュメントを書きました。

20分ではじめるRubyPico

iOSが動く端末があれば0からRubyを学習することができます。

RubyにはTry Rubyのようなブラウザだけですぐに試せる素晴らしいチュートリアルがたくさんあります。それらと比べてRubyPicoのよいところは自分のローカルマシンだけで動かせることです。もし無限ループのようなコードを間違えて書いてしまってもアプリを再起動するだけですみます。サーバートラブルで動かないといったこともありません。そしてなんといっても素晴らしいのはチュートリアルが終わったあとは自由に自分の好きなプログラムを書けるということです。早速RubyPicoをダウンロードしてチュートリアルをお試しください。

誤字脱字、分かりにくい、感想などありましたら教えてもらえると助かります。

GitHubの気になるユーザーのレポジトリをiOSで一覧表示する

次のバージョンのRubyPico 0.9 からリンク付き文字列を生成できるようになった。いちいちURLを表示しないですむ。

puts AttrString.new("foo", link: "http://ongaeshi.me")

GitHubのレポジトリ一覧を表示してみる。

def repos(user)
  json = Browser.json("https://api.github.com/users/#{user}/repos?sort=pushed&per_page=8")

  puts "#{user}'s repos"
  json.each do |e|
    puts AttrString.new(e["name"], link:  e["html_url"])
  end
end

repos('ongaeshi')

loop do
  print "user?> "
  name = gets
  repos(name)
end

最初に自分のレポジトリを表示する。2回目以降はユーザー名を入力してその人の最近のレポジトリを見ることができる。

f:id:tuto0621:20160924143357p:plain

matzはstreemやってるとかいつでも分かるようになった。

RubyPico開発日誌4 - getsでirbを再実装

コンソールを表示しながら入力できるようになったので、irbをgetsで再実装してみた。

# # irb
#
# ## Description
# Interactive Ruby Shell (REPL).

puts "irb - Interactive Ruby Shell"
no = 0

loop do
  print "irb:%03d> " % no
  cmd = gets
  
  puts cmd
  
  break if cmd == "exit"
  
  begin
    puts "=> #{eval(cmd).inspect}"
  rescue Exception => e
    puts e.message
  end
  
  no += 1
end

実行画面。pがちゃんとCRubyと同じ挙動になったぞ万歳。(コンソールに出力しつつ、戻り値も返す)

f:id:tuto0621:20160924004944p:plain

文字に色付けたくなるね。

英会話はできなくていいから英語が読めるようになりたい人の勉強法

Create Your Own Programming Languageを紹介したときに洋書読むの大変そうという話を見たので自分が使った教材を紹介してみる。

読む > 話す

私のスタンスは世間一般とは多分逆で、

  • 読む(優先高)
  • 書く(優先低)
  • 聞く(優先すごく低)
  • 話す(優先すごく低)

になっている。「しゃべったり聞いたりしないと英語能力はいつまでたっても向上しませんよ!」という言葉を受けてヒアリングも取り入れたこともあったけどいくら勉強しても使う機会の少ないものはモチベーションが保てなかった。

書きはGitHubのIssueにコメント書いたり質問に返信するときにたまに使う。あとコミットログ。読むだけじゃなくて書くと確かに文法に対する理解が格段に向上するのを感じるときがあるので、(使うシチュエーションを作り出せるのなら)聞く、話すも取り入れるといいんだとは思う。でもそれよりも自分が楽しく勉強できる状況をコントロールする方がずっと大切だとは思う。

モチベーションを保つ == 英語を読む理由を作り出す

モチベーションを保つために基礎勉強よりも実践的に使える状況を頑張って作り出すことに多く時間をかけている。私の場合は本を読むのが割と好きなので、

「英語じゃないと読めないけどどうしても読みたい文章」

を頑張って探すことに結構時間を使っている。これはとてもうまくいったと思う。

英語じゃないと読めないけどどうしても読みたい文章

英語力0から洋書を読むだけで英語を学んでいくリストに自分が読んできた洋書をまとめたので参考にして欲しい。

Create Your Own Programming LanguageやThe Rust Programming Languageはまさに読みたいのだけど英語じゃないと読めない系の書籍だった。Rust本なんてepubも提供されてて無料で読めたりしてお得感がある。Swift本もepubがあったのでcalibreでmobiに変換してKindleに入れて今読んでいる。

少し前にhigeponさんのブログで話題になっていたSoft Skillsもどうしても読みたくて頑張って読んだ。(もう日本語版でてるけどね)

あと、英語に不慣れな序盤におすすめなのが「全体の50%くらいは知っている本を読む」という方法。英語はわからなくても内容は理解しているのでなんとなく分かったりすることが多い。同じ理由でソースコードが多く載っている本もよい。私はRubyのテキスト処理について紹介しているText Processing with Rubyがそんな感じだった。(もちろん知らないこともたくさんあった)

英文法の本

さておき英文法は勉強した方がよい。基礎的な英文法を理解してしまえばあとは辞書さえあれば時間をかけることで読めるようになるので。

  • 英語ベーシック教本
  • 基本からわかる英語リーディング教本
  • English Grammar in Use

あたりが役立った。順番に紹介していく。

英語ベーシック教本

英語ベーシック教本―ゼロからわかる

英語ベーシック教本―ゼロからわかる

まずはこの本を買うのがいい思う。中学校の英語レベルから順に教えてくれるので難しい英語の知識は必要としない。

品詞(名詞、動詞、形容詞、副詞など)という文章の最小単位からはじまり、それがどのような働き(名詞は主語や目的語に、動詞は述語動詞に、など)をするか、応用として動詞を活用(playing, played)すると他の働き(動名詞や形容詞用法)ができる、などを低レイヤーから積み上げるように丁寧に説明してくれる。本全体では文章内の品詞と働きを全て正確に言えるようになる、というのが大きな目的。

他の英語教本と比べるとかなり理屈っぽいがその感じがプログラミング言語の初心者向け教本にすごく似ている。なのでプログラマにはとてもおすすめ。(もっと早く出会いたかった) 新しいプログラミング言語を覚えるつもりで英語を学ぶことができると言うとちょっと言い過ぎかもしれないが、そんな気持ちで取り組むとちょっと気が楽になるかもしれない。(習得した時の費用対効果も新進気鋭のプログラミング言語よりは期待値が高いと思う)

基本からわかる英語リーディング教本

基本からわかる英語リーディング教本

基本からわかる英語リーディング教本

ベーシック教本の後に読むとよい。英語ベーシック教本ではとりあげられなかった従属接続詞などの高度な文法の説明と、反復して解くことでどんな形の英文も読むことができるようになる38題の短文問題が収録されている。

また英語ベーシック教本を読んでいなくても進められるようになっているので英語に少し自身のある人はこちらだけ購入してもいいかもしれない。私自身先にこちらを購入したが特に困るようなことはなかった。ただし英語ベーシック教本を先に読んだ方が理解の坂道の傾斜が低くなるのでおすすめ。

English Grammar in Use

English Grammar in Use Book with Answers and Interactive eBook: Self-Study Reference and Practice Book for Intermediate Learners of English

English Grammar in Use Book with Answers and Interactive eBook: Self-Study Reference and Practice Book for Intermediate Learners of English

すっかり有名になった本。「英語じゃないと読めないけどどうしても読みたい文章」の1つとして英語で書かれた文法書を読む、というのは割とよい。本の内容が理解できるようになるという意味で英語が読めるようになる喜びをすぐに味わうことができる。

まとめ

私自身のステータスとしては

  • English Grammar in Use Book は途中で挫折(でも役にたった)
  • 英語ベーシック教本 は読了
  • 基本からわかる英語リーディング教本 も読了、短文問題を繰り返し解き中(今2週目)
  • 今読んでる本はリスト

といった感じだが、自身が内容に明るく簡単な文章なら大分スラスラと読めるようになってきた。例えばThe GitHub BlogGoogle Operating System (Unofficial Google Blog)RSSで購読して基本的に全記事読むようになった。どちらもあまり難しい単語を使わないでくれるので助かる。

最近読んで良かったのはGitHub Pages now runs Jekyll 3.2とか、Deoptimization Engine by shyouhei · Pull Request #1419 · ruby/ruby(斜め読み)とか。

読んで面白かった英語記事ははてブenglishタグにブックマークしている。