読者です 読者をやめる 読者になる 読者になる

Sinatraのあらかると

記録することで、環境構築で悩まない。

Ruby Advent Calendar 2015(12月3日) Ruby/Tkを使ったGUIツールについて

はじめに。


Qiitaでも同じ内容の記事を投稿しました。


参考には、こちらを。

念願のRubyで何かを書き、投稿しました。


こっちは、Qiitaの捕捉版です。いろいろ、まとめたりしています。


今年の記事に関して言うなら、


特に奥さま、いつも支えてくれてありがとう。


それでは、始まり。始まり。

QiitaのRubyAdventCalendar2015に興味本位で参加してみました。 参加することに意義があり、何事も初なので、市場として未開拓のようなまたはすでに需要がない分野を語ってきます。

長文をだらだらと書いていくつもりなので、読まない部分は適当に流してくれて大丈夫です。それでは、いきます。

今年はTubuyakiというツールを作りました。まだまだ色々、修正できるのではないだろうかと試行錯誤しています。 それはいつでもいくらでも更新できてしまうので、あまり意気込みをせずにただ、シンプルなつぶやきツールを作ろう...と。

このつぶやきツールは、保存はできず、ただ入力してつぶやき、つぶやいた内容を手動で消して、またつぶやいていくそんな操作をします。

誰得もしないようなツールですが、ツイッターのように記録されて後々周囲に迷惑や厄介を残さないため、危険な発言は鍵アカよりも確実に止めることができます。※なんせ、その場のPCだけのつぶやきなもので...宣伝のようになりますが、RubyGemsより、

$ gem install tubuyaki

$ tubuyaki

と入力すれば動作するので、シンプルにRuby/Tkが動作するか試せます。

無駄に時間を浪費している最近の取り組みと言えば、TwitterAPIに対応しようとしたところ。 ただ、APIが1.1に上がったことで、認証をしなければ、タイムラインでさえ取得できないことから始まりルールが何原則かできていてなんとも使いにくいのが、残念です。そうしなければいけないルールがあることはしょうが無いので...新しい発想でそのルールをうまく利用する方法を時間をかけて攻略していくのが課題です。もう少し...シミュレーションしたいですね。

このtubuyakiをzipファイルでGithubに追加しました→2015年11月14日

変更点

・つぶやくボタンを顔文字から画像に変更する

その作業をしていました。これによりTwitterのようでありつつ、誰にも知られることがないつぶやきツールに近づいているように想います。

MITライセンスとして公開しているので、この辺りから改変するぞって想う人はGithubからソースを持って、取り組んでみるとよりオリジナルなつぶやきツールができて、かっこよさが上がるかもしれません。

疑問点

複数のつぶやきを同一のウインドウに表示する方法がわからなかった

これを知りたいと想ってます、何かいい方法はないでしょうか...これができて、あとは開いている場所にアクセスできると、限られた場所で簡単な雑談ができるような期待を持ってます。このサービス、Ruby on Railsでは得意な範囲でしょうか....

2015年11月13日更新(暇があれば更新していきます)、tubuyakiのソース

#  Copyright © 2015 Takayuki, Kamiyama

require 'tk'

window = TkRoot.new{
title 'tubuyaki'
resizable [0,0]
}

window1 = TkToplevel.new{
title 'boyaki is shout!'
}
    
TkLabel.new(nil,
:text => "ひとりごと...顔だけキン肉マン...かおだけきん...",
:fg => "blue").pack
#家族、曰く私が眠くなるという独り言らしい

entry = TkEntry.new.pack('side'=>'left')

c = TkButton.new{
  image TkPhotoImage.new("file" => "tweet_icon.gif")
  pack('fill'=>'x',"padx"=>2.5,"pady"=>2.5)
}

c.command proc {

 saikoro = Random.rand(6)

 case saikoro

 when 4 then
 TkLabel.new(window1,
        :text => ("#{entry.value}"),
        :fg => "black",
        :bg => "yellow").pack('fill'=>'x',"padx" => 2.5,"pady" => 2.5)
 when 3 then
 TkLabel.new(window1,
        :text => ("#{entry.value}"),
        :fg => "black",
        :bg => "white").pack('fill'=>'x',"padx" => 2.5,"pady" => 2.5)
 when 2 then
 TkLabel.new(window1,
        :text => ("#{entry.value}"),
        :fg => "white",
        :bg => "black").pack('fill'=>'x',"padx" => 2.5,"pady" => 2.5)

 when 1 then
 TkLabel.new(window1,
        :text => ("#{entry.value}"),
        :fg => "black",
        :bg => "green").pack('fill'=>'x',"padx" => 2.5,"pady" => 2.5)

 when 0 then
 TkLabel.new(window1,
        :text => ("#{entry.value}"),
        :fg => "white",
        :bg => "red").pack('fill'=>'x',"padx" => 2.5,"pady" => 2.5)

 else
   TkLabel.new(window1,
        :text => ("#{entry.value}"),
        :fg => "white",
        :bg => "blue").pack('fill'=>'x',"padx" => 2.5,"pady" => 2.5)

end
}

Tk.mainloop

参考サイト

Ruby/Tk

Github(Myレポジトリ)

tubuyaki

おまけ

コメントアウトしているところの経緯

眠くなると意味不明なことを言う癖があって、顔だけキン肉マンという単語を話していたと家族に言われました。

TVをみていたことを覚えているのですが、誰をみて言ったのか全然思い出せません。

思い出しても、語ることはないですが、失礼なことを言って申し訳ありません( ̄。 ̄;)

Ruby Advent Calendar2015 12/3の記事はここまでです。記事を書いて寝かせておいて、公開まであっという間でした。自然と、言葉がでてきて編集も楽しかったしRubyをまた書いて、完成度を高めていく勢いがつきました。

Copyright © 2007-2017 Takayuki Kamiyama. All Rights Reserved.