茶漬けの技術メモ

Golang, Rubyで趣味開発します。テックニュース書いたり。ガジェット触ったり。

Ruby のメソッドオブジェクトとは?

メソッドオブジェクトって、あれなんだっけ?
となったのでメモっておきます。


一言で言えばメソッドオブジェクトとは、
メソッドをオブジェクトのように扱えるようにしたものです。


そのまんますぎ、
なので、
ちょっと例を書いてみます。

続きを読む

Ruby のカリー化

カリー化とは


調べてみると、


カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)である。


ん?

続きを読む

Ruby の each_with_object と inject について

each_with_object とは

each_with_object を使用すると、配列やハッシュの要素を使って、
新たに配列やハッシュを作成したりする際に、簡潔に書くことができます。
簡単な例を以下に示します

array = [[:hoge, 1], [:fuga, 2], [:piyo, 3]]

array.each_with_object({}) do | (key, value), hash |
  hash[key] = value
end
# => {:hoge=>1, :fuga=>2, :piyo=>3}
続きを読む

指定したTextField がkeyboardで隠れないようにする


iOSで開発する時、TextFieldをタップすると、
TextFieldが出でくるkeyboardに隠される時よくある。
↓このように。


f:id:biwako_no_otyazuke:20170827165130g:plain


1. こういう時は下のTextField がkeyboardで隠れないように。

続きを読む

12月に読んだ本まとめ

ども、お茶漬けです。

2017年に入り1週間が経とうとしています。

9日まで冬休みの僕も、そろそろこのダラダラ生活から抜け出さないとなと思っており。まずは、先月読んだ本を振り返ってみようかなと思います。


なぜ、あなたの仕事は終わらないのか 中島聡

マイクロソフトエンジニアの中島聡さんが、自身の経験談を交えながら、実際に本人が取り組んでいる時間術、その名もロケットスタート時間術について書かれてあります。

・どんなに頑張って100%のものを作っても、振り返ると90%,80%のものに見える
・全ての仕事は必ずやり直しになる
・やりたいことをやるためには、やりたくないことを速攻で終わらせるしかない
・考えてから手を動かすではなく、手を動かしながら考える
・仕事において重要なのは、楽しいかどうかその一点

以上のような考え方の元、中島さんはロケットスタート時間術で仕事に向き合うことを進めています。

ロケットスタート時間術とは

ロケットスタート時間術とは、ズバリ2割の時間で仕事の8割を終わらせることです。

まず、納期内に仕事を終わらせるためには、余裕を持って取り組むことが必要です。なぜなら、初期の段階で立てた予定通りにことが進むなんてことはまずない。必ず、予期せぬトラブルは起こるものだからです。
そのために、最初に2割の時間で、何が何でも仕事の8割を終わらせ、余裕を持ちます。そして、残りの8割の時間で、2割を終わらせ、さらにブラッシュアップしていきます。
しかし、

ロケットスタート時間術の本質は余裕を持つことであり、高速で次々と仕事を終わらせることではない

と中島さんは仰っています。
伝えたいことは、仕事を終わらせることではなく、人生を楽しむこと。なのです。

なぜ、あなたの仕事は終わらないのか スピードは最強の武器である

なぜ、あなたの仕事は終わらないのか スピードは最強の武器である

続きを読む

Swiftのエラー処理

Swiftのエラー処理の書き方について調べたので、まとめておこうと思います。


エラーを定義

Errorプロトコルを継承した列挙型でエラーを定義します。
Errorプロトコルの中身は空になっています。

enum myError: Error{
    case stringError
    case unexpectedError
}
続きを読む

Swiftでdefer文を使う

Swift2.0から追加されたdefer文。スコープを抜ける際に処理をするものですが、Swift3.0で試してみました。

func myFunc(){
    defer {
        print("defer")
    }
    print("hoge")
}
myFunc()


実行結果は以下のようになります。

hoge
defer



関数以外のスコープで使ってみる
func myFunc2(){
    for i in 0..<3 {
        defer {
            print("defer \(i)")
        }
        print("fuga \(i)")
    }
}
myFunc2()


実行結果

fuga 0
defer 0
fuga 1
defer 1
fuga 2
defer 2



defer文を複数書いてみる
func myFunc3(){
    defer {
        print("hogera")
    }
    defer {
        print("piyo")
    }
    defer {
        print("fuga")
    }
    print("hoge")
}
myFunc3()


実行結果

hoge
fuga
piyo
hogera


使い所

自分の場合は、Swift Perfect のサンプルを触っている時にdefer文を目にしたのですが、そこでは、DBに接続し目的の処理を行った後、defer文内にDBとの接続を切る処理を書く。というように使われていました。
他にも、guard文での必要条件にあっていない場合にdefer文の処理を実行させる。といったような使い方ができるのではないでしょうか。

Swiftで正規表現を使って文字列の操作を行う

Swiftで正規表現を使いたかったんだけど、調べて行くうちに、Swiftで正規表現ってなかなか面等らしく、どーしようかなと思っていると。
とても便利なStringExtensionを書いている方がいらっしゃたので、使わせていただきました。

Swift 3.0での基本的な正規表現を行うextension - Qiita

続きを読む

【2016年】 個人的おすすめアニメランキング!TOP10!!

ども!お茶漬けです!!

今年も残すところあと3日!!

ということで2016年のアニメを振り返ってみました。あんまり数が多くなってもあれなので、個人的に本当に面白かった10作品をランキング形式で紹介していきます!

年末年始に見てみてはいかがでしょうか?

それではどうぞ!!


10位 甲鉄城のカバネリ

f:id:biwako_no_otyazuke:20161228181223p:plain

世界中に産業革命の波が押し寄せ、近世から近代に移り変わろうとした頃、突如として不死の怪物が現れた。鋼鉄の皮膜で覆われた心臓を撃ち抜かれない限り滅びず、それに噛まれた者も一度死んだ後に蘇り人を襲うという。後にカバネと呼ばれる事になるそれらは爆発的に増殖し、全世界を覆い尽くしていった。

4月から全12話で放送された春のノイタミナ枠。
江戸後期~明治初期の日本を舞台にした、日本版ゾンビアニメ。

ストーリーは好き嫌いが分かれそうではあるが、「死んでも生きろ」のキャッチコピーからも伝わるように、キャラクターそれぞれが自分の過去と向き合いながら絶望しながらも、それでも生きようとする、熱量の高いアニメ。

OPをegoistが歌っているあたりもgood

続きを読む