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

rioRESERVoir

Allajah/Rioの個人ブログ

近況報告と2014年と2015年(1)

雑記

久しぶりにエントリー書く
今見たら最後に書いたの10/21だった・・・

近況報告

学園祭

10/31〜11/2に学園祭があった.
僕ら5年生にとっては最後の学園祭だった.
今年は縁あって学園祭演劇の監督をやらせてもらった.そして学園祭アプリも開発した.

学園祭演劇

僕の中で学園祭演劇の準備が本格的に始まったのは8月終わりからだった.
まずは脚本作りから入った.@nosha_1025とLINEで連絡取り合いながら脚本書いてもらった.これに関してはかなりモメて訂正訂正を繰り返してた.

10月頭に学園祭演劇練習期間に入った.これがすごく急で,自分たちの準備が整ってないまま始まってしまった.練習場所の確保,脚本,道具に何を作ってもらうか,翻弄された期間だった.
他学年の勧誘は9月の終わりにやった.1年生には専門の授業の時間を借りてスライド使ってプレゼンした.そのあと全学年の参加希望者集まってもらって,ここでもプレゼンした.
LT会がこういうところで役に立つんだと実感した.すばらしい.
なんやかんやで全学年合わせて50人くらい参加してくれた.
僕は1年生の頃からあまりクラスと深く関わらずに,寮生中心に交友していた.それなのに5年生がかなり多く参加してくれて,めちゃ嬉しかった.頭たちの人望の厚さのおかげだったと思う.
道具に関しては完全に頭たちに任せて,自分はずっと役者を指導してた.手伝ったことといえば材料を一緒に買いに行った位だったと思う.
指導っていっても,学祭演劇役者やったことのない僕ができることは特に何もなく,脚本の@nosha_1025や役者の2年生たち@kuma_lost,@mokamotti ,@s_shin_s に相当助けられた.思ったことをどんどん言ってくれるのですごく嬉しかったしありがたかった.
3年後の演劇めちゃくちゃ楽しみにしてる.

そんなこんなで1ヶ月の練習期間はあっという間に過ぎていった.
途中心が折れそうになったこともあった.他学科の監督たちとご飯に行ってめちゃくちゃ楽しくて持ち直した.こんなに5学科の監督が仲いいこと今までなかっただろうし,メンツ自体最高だった.

本番前日にリハーサルがあった.ボロボロだった.
時間,道具転換,演技,立ち位置,演出.詰めが甘い部分が浮き彫りになった.
毎年リハで問題は発生してたけど,これはかなり焦る.
そのあとどうすれば改善できるか頭や役者たちと話し合った.
リハと本番の間に変更点が生まれ,本番で対応するために打合せた.

そして本番.変更点にみんな完璧に対応してくれた.それでもやっぱりアクシデントは起きる.
監督が画面に映り込んだり,上袖と下袖で連絡がうまく行き届いていなかったり,役者がセリフ忘れちゃったり,時間なくてシーンを丸々カットしたり,エンディングの音が流れなかったり.
そんなアクシデントにみんなうまく対応してくれた.

今だから言える.エンディングの時涙こらえるのに必死だった.自分で選曲しておいてなんだけど,奥華子さんの「変わらないもの」はズルい.
今だから言える.結局時間はオーバーしてて減点があった.エンディングをカットしなかったっていう僕の判断ミスだったのかもしれない.

その2日後,結果発表があった.
結果は演技賞,音響賞,照明賞をとり,総合優勝を果たした.個人では主演女優が役者賞1位をとった.
僕はこれまで1,2,4年生で学科演劇に参加し,うち2回優勝していた.そのときももちろんすごく嬉しかった.
けど今回の喜びはそれと比べ物にならないほどだった.
結果発表の後他学科の5年生や後輩からも,「おめでとう」って言葉をたくさんもらった.
いろんな人達と一緒に写真を撮った.
自分の学科の参加者,他学科の監督,後輩,卒業していった先輩たち,周りの人達にたくさん助けてもらった.そのおかげで学園祭演劇を最後までやり遂げられた.
ありがとう.

この学祭演劇は僕の高専生活で最も楽しくて,辛くて,充実して,誇らしくて,輝かしいものだった.
僕は学祭演劇が大好きだ.

学園祭アプリ開発

結論からいうと完成させることができなかった.
いつだったか,id:nigazukiが「学祭アプリ作らない?」って誘ってくれたのがきっかけだった.
最初はAndroidでやろうとしていたが,iPhoneユーザを考えWeb版も作ることに.
Web版には@gainingsが参戦してくれた.
実際に作り出したのは10月半ばだった.間に合うと思ってた.考えが甘かった.
Ruby on Railsを使って開発をしてたのだが,想定以上に躓くことが多すぎた.
躓くどころか完全に転んで,ぶっ倒れて,地を這っているような状態だった.
10/30〜11/1まで,ほぼ2徹した.それでも完成はしなかった.主にCSS周りで苦しんでた.自分の技術力のなさを痛感した.
壁にあたっては調べを繰り返していたのである程度力はついたと思う.来年は1週間前までには完成させたい.

学園祭準備期間の反省として,タスクを抱え込みすぎた.卒業研究の中間発表もこの時期にあり,予稿やポスター作成が地獄だった.
僕は自分が処理できるギリギリのタスクを抱えていたつもりだった.しかしこれが大きな失敗だった.
監督としてやらなければいけないことが増えた時のことを考えていなかった.
これに関しては猛省してる.
自分の生活サイクルを見なおしてキャパシティを増やすのはもちろんそうだが,次からは少し余裕をもちたい.

勉強会

学園祭演劇が終わった後,何回か勉強会を開いた.

Git入門会

Gitの基本的な使い方を2年生達中心に勉強してもらった.
自分もまだGitを浅くしか知らないのと,時間なかったのもあって
init clone add config push fetch merge pull branch checkout
といった基本的なことだけ教えた.
自分の準備不足でスライドや資料が足りてなかった感が強かった.

Ruby入門会

Rubyの環境導入したり,Twitter gemを使ったりするのを教えた.
一番困ったのが,windowsで.gitignoreの作り方がわからなかった.@ThoriumBunnyaがググって助けてくれた.ありがとう.
ここでも僕の準備不足が浮き彫りになった.Windowsへの配慮が足りなかった.Windowsがちょっと嫌いになった.

XmasLT

12/25,クリスマスである.一緒に過ごす相手の居ない寂しい男達を集めてLT会をした.
@nigazuki @gainings @ThoriumBunnya @neruko3114 が参加してくれた.いい加減彼女作って欲しい.
多種多様なLTがあって,5人でも2時間くらい保った.やっぱLT会はいい.
ぜひ参加したことない人たちもコンテンツ力を鍛えて参加して欲しい.

年越し

id:alice345(以下,ありたそ)と年越そうぜ!!!って話をしてた.
そしたら,その1週間くらい前にProgate主催のハッカソンにありたそを誘った



ありたそが誘いに乗ってくれて,2人で1つのプロダクト作って参加することにした.
作ったのがこちら.
SushiOnRails
tumblr,Flickr,Twitterから寿司の画像を取ってきて並べる.それだけじゃない.
なんと,クリックすると回る.回転寿司である.
しかも spin suhi!!! ってボタンを押すと全体が回る.これぞ回転寿司.
開発しながらありたそにたくさん教わったり便利gem共有したりしてとても良かった.
途中からデザインを@denari01も手伝ってくれたし,躓いた時にありたそがRails寺子屋のidobataに投げると,師範の方が教えてくれた.超絶感謝.
Rails寺子屋,いつも何かと被って参加できてないので次は参加したい.

12/29にありたそと@suzushi0930さんと@me20036lともう一人先輩とご飯に行った.
会合の名前が「ありたそをモテる男にする会」になった.ぜひともフルグラTを買わずにいい感じの服を買って,ファッションをよしなにして欲しい.

12/31はありたそと@me20036lさんと楽しい年越しをすごせた.

1/1の夜にはありたそと@maenoxさんと振り返りLT(Long Talk)会をした.

1/2には地元に帰省し,妹の誕生日を祝ってきた.

そろそろ卒研しよう.


こっから2014年の振り返りと2015年の抱負書こうと思ったけど,疲れたからもうやめる.

今まで知らなかったきっと常識なこと

小ネタ


コンソールでディレクトリ移動する時,僕らはcdコマンドをつかう.
1階層上に移動するときは?僕らは cd .. と入力する.
では2階層のときは? 僕は cd ../.. としていた.
そう,昨日までは.
2階層上に移動するときは cd ... でいいことに気づいた.
3階層のときは cd ....
こんな風に cd + <戻りたい階層数+1個のドット> でいいのだ.

きっと常識なんだろうけど昨日初めて知りました.

Mac OS 10.9 でOpenGLをコンパイルしたい時

mac OpenGL C

MavericksでOpenGLを用いて開発をしているとき

$gcc -o hogehoge.out hogehoge.c -framework GLUT -framework OpenGL

だとエラーが出る.その場合は-Wno-deprecatedをつけて

$gcc -o hogehoge.out hogehoge.c -framework GLUT -framework OpenGL -Wno-deprecated

とするとうまくいく(はず)

ついつい忘れてしまうことのメモ

ついつい忘れてしまうこと

コーディングしてて.余り使わなくて(俺が悪い)ついつい忘れてしまう(俺が悪い)ことをメモ
ちょくちょく追記していきます.

Vim

vimでタブ文字を挿入したい

.vimrcで,タブをスペース2つにする等の設定をしていて,,makefile等を記述する際タブ文字を挿入したいときは
Ctrl-v [tab]

Git,GitHub

heroku

rmagickインストールできない問題

$brew install imagemagick
$gem install rmagick
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
	ERROR: Failed to build gem native extension.

    /Users/rya/.rbenv/versions/2.1.2/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for clang... yes
checking for Magick-config... no
Can't install RMagick 0.0.0. Can't find Magick-config in /Users/以下略

なんだ,0.0.0て・・・バージョンを指定してもう一回やってみる

$gem install rmagick -v 2.13.2
checking for Ruby version >= 1.8.5... yes
checking for clang... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in /Users以下略

同じか・・・
解決したら追記します

解決編

imagemagickかpkg-configのバージョンが古いのかな?
と疑った.まずhome brewのバージョンを最新にする.

$brew update

imagemagickをアップグレード

$brew upgrade imagemagick
<||
>||
$gem install rmagick

ここでさっきと同じエラーが出る.ダメだった.
imagemagickちゃんとインストールしたよな?スペルミスってないよな?と思い

$brew install imagemagick

をもう一回やってみた.すると「すでにインストールされてるけどlinkされてないよ」といったエラーメッセージがでてきた.そこで

$brew link imagemagick
inking /usr/local/Cellar/imagemagick/6.8.9-5...
Error: Could not symlink bin/convert
Target /usr/local/bin/convert
already exists. You may want to remove it:
  rm /usr/local/bin/convert

To force the link and overwrite all conflicting files:
  brew link --overwrite imagemagick

To list all files that would be deleted:
  brew link --overwrite --dry-run imagemagick

すでに存在してるッて言われた.メッセージにあるとおりに,linkを上書きしてみる

$brew link --overwrite imagemagick
Linking /usr/local/Cellar/imagemagick/6.8.9-5... 71 symlinks created

うまくいったらしい

$gem install rmagick
Building native extensions.  This could take a while...
Please report any bugs. See https://github.com/gemhome/rmagick/compare/RMagick_2-13-2...master and https://github.com/rmagick/rmagick/issues/18
Successfully installed rmagick-2.13.3
Parsing documentation for rmagick-2.13.3
Installing ri documentation for rmagick-2.13.3
Done installing documentation for rmagick after 6 seconds
1 gem installed

はいった!!

まとめ

最新のrmagickをインストールするときは
・homebrewのバージョンを最新にする
imagemagickのバージョンを最新にする
・linkする

行列計算はMatrix

先ほどの記事を投稿した後


ありたそ師範からMatrixクラス使ってみよ.との言葉を頂いたのでやってみた

結論はこんなかんじに

require 'csv'
require 'matrix'

matrix_a=Matrix.rows(CSV.read("./matrixA.csv")).map{|x| x.to_i}
matrix_b=Matrix.rows(CSV.read("./matrixB.csv")).map{|x| x.to_i}

p matrix_a+matrix_b

めちゃ短くすんだ・・・

rowsメソッド

Matrixクラスのrowsメソッドは引数(このばあいはCSVクラスのreadメソッドで開いたCSVファイル)を行ベクトルの列とする行列を生成する.(http://docs.ruby-lang.org/ja/1.8.7/method/Matrix/s/rows.html)
ちょっと何言ってるかわからない.
matrix_aについてわかりやすく書き換えると

matrix_a=Matrix.rows([[1,2,3],[4,5,6],[7,8,9]])
#出力結果:Matrix[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

これと同じ.行ベクトルの列とする行列を生成するというのは
f:id:Allajah:20140805205511j:plain
こういうこと.
逆に,列ベクトルの行とする行列を生成するのはcolumnsメソッドを使う.

matrix_a=Matrix.columns([[1,2,3],[4,5,6],[7,8,9]])
# 出力結果:Matrix[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

f:id:Allajah:20140805210143j:plain
転置行列になった.

collect(map)メソッド

Matrixクラスのインスタンメソッド
"行列の各要素に対してブロックの適用を繰り返した結果を,要素として持つ行列を生成する"
らしい(http://docs.ruby-lang.org/ja/1.8.7/method/Matrix/i/collect.html)
行列のすべての成分に対してなにか処理加えるってことかな(多分)

matrix_a=Matrix.rows(CSV.read("./matrixA.csv")).map{|x| x.to_i+100}

とすればすべての成分に100加えられた行列が生成される.


一つ賢くなった.間違いあるかも知れないからちゃんと確認しなおそう・・・

Rubyの2次元配列で苦戦した話

Ruby

Rubyで行列の和をとろうとして苦戦した.
f:id:Allajah:20140805153222j:plain
こういうことをしたい.
とりあえず適当にcsvファイルを用意する.

matrixA.csv

1,2,3
4,5,6
7,8,9

matrixB.csv

11,12,13
14,15,16
17,18,19 

csvファイルを読み込んで2次元配列にする.

require 'csv'

matrix_a=CSV.read("./matrixA.csv")
matrix_b=CSV.read("./matrixB.csv")

まずmatirx_aとmatrix_bの各成分を読み込み和を取る.まずここでつまずいた
for文でやろうと思えば

for i in 0..2 do
    for j in 0..2 do
       p matrix_a[i][j].to_i+matrix_b[i][j].to_i
    end
end 

これでいける.実行すると12,14,18,20,22...となり,1行1列目,1行2列目...と加算された結果が表示される.しかしこれではRubyっぽくないし3行3列の行列にしか対応できない.
eachメソッドを使いたい.しかしこの場合はmatrix_aとmatrix_bの2つの要素を同時に読み込んで和を取る必要がある.
調べて見たらzipメソッドとかいうのが使えそう.
zipメソッドを使ってmatrix_aとmatrix_bの成分の和をとってみる.

matrix_a.zip(matrix_b).each do |row_a,row_b| 
    row_a.zip(row_b).each do |column_a,column_b|
        p column_a.to_i+column_b.to_i
    end
end

これでもさっきのfor文でやったのと同じ出力結果が得られた.zipメソッドについてはこのへんに詳しく記載されてる.(http://ref.xaio.jp/ruby/classes/array/zip)

つぎはこの計算結果を二次元配列に格納する.
まず空の二次元配列を生成する.

matrix_c=Array.new.map{Array.new} 

数値を格納するにはこんな感じ.pushメソッドを使う

i=0
matrix_a.zip(matrix_b).each do |row_a,row_b| 
    matrix_c.push Array.new 
    row_a.zip(row_b).each do |column_a,column_b|
        matrix_c[i].push column_a.to_i+column_b.to_i
    end
    i+=1
end

空の二次元配列matrix_cに3行目で空の配列をpushする.その配列に5行目で加算した成分をpushする.
i=0は行列の1行目,i+=1で1行下にずらしてる.

最終的なソース

require 'csv'

matrix_a=CSV.read("./matrixA.csv")
matrix_b=CSV.read("./matrixB.csv")

matrix_c=Array.new.map{Array.new} #create square matrix for operation result
i=0
matrix_a.zip(matrix_b).each do |row_a,row_b| 
    matrix_c.push Array.new 
    row_a.zip(row_b).each do |column_a,column_b|
        matrix_c[i].push column_a.to_i+column_b.to_i
    end
    i+=1
end
p matrix_c

実行結果

[[12, 14, 16], [18, 20, 22], [24, 26, 28]]


あとは差と積も作って一つのファイルにまとめてメソッド化したい.
csvに吐き出せるようにしてたの忘れてたからそれも.
ブログ書くのもうちょっと時間かけられれば,後で見た時もう少しわかりやすくなる気がする…

ツッコミ等あったらご指摘ください.

追記
Matrixライブラリというのがあるらしい