Hatena::ブログ(Diary)

プログラミングお勉強記録 RSSフィード Twitter

2016-03-22

よちよち.rb 第111回 #yochiyochirb

ちょっと間があいてしまったのですが、思い出しながら参加記録をつけます。

最近のよちよち.rbは、Railsをつかったチーム開発をしています。
2年前くらいに有志で作成したアプリ「Kajaeru」の開発です。

ミートアップではissueからひとつ選んで、エクストリームフィッシュボール形式で開発を進める、という流れ。
この日はこちらのissueに取り組みました。

bootstrapをいれたことでヘッダーにサインイン状態などが表示されるようになったのですが、
依然としてbodyにサインイン名(サインインしていればサインアウトへのリンク)やそれに関連するメッセージが表示されたままでした。
というわけで重複している項目を削除していく、というのが主な作業となります。

実装しはじめたとき、視点が「サインアウトへのリンク」にいってしまったため、
ブランチ名が delete-signout-link となっていたのですが、よくよく見るとサインアウトへのリンク以外にも削除するべきところはありそう。
なのでブランチ名はひとまず置いておいて、「このissueに対応するブランチ」として作業をすすめて、
ひとつのプルリクエストとして完了させたほうがいいということになりました。

こういうことっておそらく実際の業務の中でもあって(少なくとも私は)
ひとつの問題を修正するときに、いきなり思いつくところから作業にはいると、
途中で「あーもっとこうするべきだったー」と思い直して手戻りしたりするので、
ゴールとそこにたどり着くまでの道筋を立ててから作業に入ると、
ブランチ名のつけ方やコミットの粒度などに困らないのだろうなぁと思います。

いい勉強になりました。

2016-03-01

よちよち.hs 第3回 #yochiyochihs

いつからか気になっていたHaskell、なかなか手を出せずにいたのですが、
よちよち.rb 主催者の @yucao24hours さんがHaskellに挑戦しているということで、便乗させてもらいました。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!



こちらの本を読み進めていきます。

実は、ミートアップに参加できるかどうか直前まで悩んでいて、結局当日の朝になって慌てて準備をした…という体たらく。
どうにか実行環境を作って本をざーっと読んで行きましたが、当然ついていくのが大変でした。反省。

プログラミング言語でいえば、Rubyしかやったことない(あとちょっとだけJavaScriptとかVBA)人がHaskellをやるとどうなるのでしょうか。

遅延評価」とは


Haskell は怠け者です。特にそうしろと言われた場合を除いては、結果が必要になるまで関数を実行しないのです。この振る舞いは、専門用語では遅延評価といいます。


と本にありますが、なんだか抽象的でよくわかりません。
これは、こういうことのようです。

def func(x, y)
  if x > 0
    x + 1
  else
    y + 1
  end
end

a = 10
func(1, a + 3)  #=> 2

上記のようなとき、funcの第二引数にあるような ( a + 3 ) の部分は、本当に必要になるまで評価されないということのようです。
ふむ。

「型クラス」とは

関数を定義するときに型も書くんですね。
型を意識して書くというのが新鮮。
そういえばVBAでも変数を宣言するときに型も一緒に書いていたっけ。。
しかしまだまだイメージできません。理解できていない。
型、あるらしい。くらい。

本では「型クラス初級講座」(27ページ)ということで、いろんな型の紹介がはじまったところです。

Hello World したかった

この日ほんとにはじめてHaskellを触ったので、ひとまずHello Worldをしたいなって思ったのですが、
この本でHello Worldできるのは第8章のようです。

そこでHaskell先生から教わったExampleから写経してHello Worldしてみました!

ひとまず初日はここまで!

2016-02-16

よちよち.rb 第107回 #yochiyochirb

今週は、よちよちで「どう書く?」をやりました。
お題は「ケブンッリジ関数」!
40分くらい各自実装する時間を設けて、最後みんなのを眺めたりしました。

私はお題の内容を勘違いしていて、なんか単語をひとつ、中だけシャッフルすればいいと思ってしまっていて、文章に対応していませんでした。。
標準出力から単語を受け取って、ケブンッリジして標準出力するというのを書きました。

# 単語ひとつにしか対応していません!

puts '単語をひとつ、どうぞ↓'
word = gets.chomp

if word.size >= 4
  splited = word.split('')
  completed = splited[0] + splited[1...-1].shuffle.join + splited[-1]
  puts completed
else
  puts '4文字以上じゃないと!'
end

splitのところとか、shuffleのところは他の書き方も試しながら、なんとなく読みやすいコードを心がけてみた。

で、文章に対応した。

def text(sentence)
  words = sentence.split(' ')
  cambridge = words.map do |word|
    if word.size >= 4
      splited = word.split('')
      splited[0] + splited[1...-1].shuffle.join + splited[-1]
    else
      word
    end
  end
  p cambridge.join(' ')
end

はい。

ゆかおさんとかとみーとか、テストから書いてて勉強になった。
(ランダムであることをテストするのむずかしい!!)
おがさわらさんはシャレがきいてた。
わかすぎ先生はかっこよすぎた。

コード書くミートアップは楽しいですね!

2016-02-09

Sendagaya.rb #136 #sendagayarb

今週、ちょっと浮気をしてSendagaya.rbに参加しました。
メタプログラミングRuby 第2版」を読んでいるということで気になっていたのです。



読んで追いついてから参加しようかなと思っていたのですが、いつになるかわからないので、とりあえず参加してみました。

15分くらい各自で読んで、15分たったらみんなでわいわい内容を確認するというスタイル。
「2.5 クイズ:絡み合ったモジュール」からでした。

includeのこと

クイズのサンプルコードを実行していくときにモジュールをincludeする場所のことで話がひろがりました。

module Printable
  def print
     p 'printable_print'
  end

  def prepare_cover
    p 'prepare_cover'
  end
end

module Document
  def print_to_screen
    prepare_cover
    format_for_screen
    print
  end

  def format_for_screen
    p 'format_for_screen'
  end

  def print
    p 'document_print'
  end
end

class Book
  include Printable
  include Document
end

p Book.new.print_to_screen    #=>"prepare_cover", "format_for_screen", "document_print"
p Book.ancestors    #=> [Book, Document, Printable, Object, Kernel, BasicObject]

サンプルコードではBookクラスのなかでincludeしています。
ancestorsを見るとわかりますが、PrintableをincludeしたあとにDocumentをincludeしているので、
Bookのすぐうえの親はDocumentとなり、呼ばれるprintメソッドはDocumentのほうになります。
これをプログラムのトップレベルでincludeすると、どうなるのか。

module Printable
  def print
     p 'printable_print'
  end

  def prepare_cover
    p 'prepare_cover'
  end
end

module Document
  def print_to_screen
    prepare_cover
    format_for_screen
    print
  end

  def format_for_screen
    p 'format_for_screen'
  end

  def print
    p 'document_print'
  end
end

include Printable
include Document

class Book
end

p Book.new.print_to_screen   #=> うえと同じ
p Book.ancestors    #=>[Book, Object, Document, Printable, Kernel, BasicObject]
p self    #=> main
p self.class    #=>Object

Objectクラスの位置が変わりました。
こうなると、moduleのなかで定義しているメソッドたちは、mainで直接定義されているのと変わらなくなる、けど、
同じ名前のメソッド(ここではprint)は、includeされる順番にしたがって呼ばれる。
ようです。(間違っているところはご指摘いただけると助かります)

あんまりこういうことは起こらないと思いますが。。

Classクラスのこと

話が進んでいくうちに(ちょっと発端がうろ覚えですが)、「Objectクラスの親クラスはなにか」という話になりました。
ancestors(あるいはsuperclass)で知ることができるのは、継承している親クラスの系図であって、それとはまたちょっと話のベクトルが違って、
すべてのクラスの親クラスはClassクラスであり、すべてのクラスはClassクラスのインスタンスであるということです。

すでに読み終わったページにそのことが書いてあるということなので、読み返しながら話しました。
「2.3.1 クイズの答え」のところにあるような図がとてもわかりやすかったです。

去年Effective Rubyを読んだときはこの辺がさっぱりわかっていなかったんですが、
今回だいぶ整理されました。。図って大事。

Electronでアプリを作った話

最後に主催の @fukajun さんがElectronでつくったアプリの話をしてくださいました。
詳しくはElectron + react.js + gulp でメニューバーアプリを作ってみた - fukajun - 僕はvimで行きます -

おもしろそう!!

2016-02-05

表参道.rb #8 #omotesandorb

会社から近いのでいつも気になっていたけれど、やっと参加できました。
でもちょっと遅刻しちゃってちょうど自己紹介しているところに到着して、しかもちょうど私の番だったので焦って頭が働かず、なにもおもしろいことが言えなかった…じゃなくて初めて参加しているのに挨拶がおろそかだったことをとっても反省しています。
知った顔が複数あったのものだから油断しましたごめんなさい。

表参道.rb は grooves さんの素敵オフイスでいつもLT中心のミートアップを開催されているようです。
頻度は月に1回くらいでしょうか?

今回私が気になったことをいくつかメモします。(順番めちゃくちゃです)
(個人的に趣向でメモしていますのでメモがないから聞いていなかったとかそういうことではないことを念のため)

CSSカバレッジを計測する話

アジャイルSEの憂鬱
@sinsoku さんのリポジトリ

LT終わったあと、思わず「なんで作ろうと思ったんですか?」と思わず聞いてしまった、CSSカバレッジ計測ツール。
これで計測すると重みのあるやつがわかるので、変更した時の影響とかわかるからなんだそうです。
そういえば社内で最近デザイナさんがCSSの整理してた気がするけど、どうやって進めていたんだろうと思いながら話を聞いていました。
CSSのみの対応のよう。

知らなかったツールのメモ

Newrelic みたいなやつで、ちょっと見やすそうな SKYLIGHT
Heroku のアドオン Logentries

社内BGMを YouTube のプレイリストからとってきていい感じに流していた話

@igjitさんのリポジトリ

iPod nano から繰り返し同じ曲が流れてきて気が狂いそうになったのがきっかけでつくった音楽再生アプリ
VLC media player っていうのをつかっている。
Webブラウザから音量調節できたり、再生中の曲の情報をSlackに流したりもしているみたいで実用性高そう!

私はどちらかというと音があると作業が進まなくなるほうなので、無音の方がいいんだけど。

Ruby で音を出してみた話

よちよち.rbでもよく会う @tailktome 氏がRubyで音を出していた!
音のことってまったく知らなかったので、内容難しかったけどすごいおもしろかった。
サイン波、ノコギリ波、ノイズ(ホワイトノイズ、ピンクノイズ)、、
あとから @youchan から解説を聞いたりしてるうちに、そういえば RubyKaigi 2013 のときの Trick 受賞作品を思い出して、再生してみたりしていた。
Trick 2013 入賞作品のリポジトリ
@mame さんの作品 すごいかわいい。

私も音出したい

なと思っていたらこんなツイートを見かけた



のでとりえず

brew install elixir

してまた明日。

<< 2016/07 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


記事検索


過去記事一覧
2011 11 12
2012 01 02 03 05 06 07 09 10 11 12
2013 01 02 03 04 05 06 07 09 10 11 12
2014 01 02 03 04 05 06 07 08 09 10 11 12
2015 01 02 05 09
2016 01 02 03






-->