All Category

スニペットの実行結果を投稿するSlackBot

2017-10-03



はじめに



みんなー、雑にプログラミング問題を解いて遊んでるー!? (ゝω・)v
今日は私用チームに作ったSlackボットについて解説させてくれ。

その名もRubyEvalBot、名前の通りSlackへrubyのスニペットが投稿された際にそれを(ほぼ)安全に評価して標準出力を答えてくれる便利な奴だ。

ちょっとしたコードに言及したい時や仲間が投げつけて来たプログラミング問題へ解答を叩き付けたい時に、コードを投稿したらそれがどういう結果になるのかを出してくれれば便利だよね? それをやってくれるんだ。

はい、GitHubはこっちだよー。
https://github.com/owlw...

Chapter.03 変数

2017-10-02



ルビィの奇妙な変数

早速だがこんなコードを実行してみよう。どんな結果になるかな?

cat = 'にゃーん'
animal = cat
animal.slice!(1..-1) # Strig#slice!は文字列の指定位置を削除する
puts cat
# => "に"



んん? これはどういうことだろう。変数animalは変数catをコピーして新しく作ったのに、animalの中身が変更されるとcatまで変わってしまった!

説明しよう。よく変数はデータを入れる箱だとか説明される。聞いたことがあるよね。それはわかりやすくした例えた、少し不正確だし概念だけの話だ。

ここで...

Chapter.02 メソッドを継ぐ

2017-10-02



クラスの継承

前回はクラスとインスタンスの話をした。覚えているかな? クラスがメソッドという振る舞いの情報を持ち、インスタンスが状態の情報を持つというのが要点だ。

今回の話題は「継承」について。オブジェクト指向プログラミングでは非常に重要な概念となる。何故なら継承がコードの再利用をしやすくするからだ。

では、継承とは一体なんなのか。よく言われる説明では既存のクラスを元にして構造や振る舞いを共有した別のクラスを作るということだ。

ここでは、ちょっと違う表現もしてみよう。継承とは、あるクラスが持つ振る舞いの情報を別のクラスから参照することだとも言える。
(ややこしくなるから詳しい話は...

Chapter.01 Hello, ruby.

2017-10-02



クラスとインスタンス

最初に取り上げる話題は、そうクラスだ。一体こいつらは何なんだ?よく用いられるのが、クラスは設計図でありインスタンスは設計図を元に作られた実体だという説明だ。聞いたことがあるだろう。

実のところ、言語によってクラスの定義は様々だ。名著「コーディングを支える技術」によればクラスという言葉が使われ始めた初期においてはその単語の通り「分類(classes)」のことだった。しかしAlan KayによりSmalltalkやオブジェクト指向が生み出されて以降はクラスと言えば一般には以下のような役割を持つものだ。


変数とメソッドのまとまりを作る
実行可能な処理を定義する
コ...

麻雀から学ぶもの

2017-02-12



 アナログゲーマーのみんな、スパ帝の『ゲーム2.0』はもう読んだかな? 自分は先ほど読み終えた。これはスパ帝国の中で最も読む価値を持つ本かもしれない。

 さて、ゲーム2.0はゲームが未来のキャリアだとする言説だ。人間はゲームを通じて将来必要となるスキルを訓練し、そのスキルを鍛えるゲームを楽しいと感じるという。そして必要としているキャリア・技能からプレイヤーは7つの民族に分類される。(http://spa-game.com/?p=3430)

 ゲーマーにとっては少々都合の良すぎる言説かもしれない。ゲーマーはゲームへ夢中になる正当な理由をいつも探している。今回はこの考え方を引用しつつ、自...