アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

Openblas を Mac へインストールしようとして詰まった

MXNetMac でのインストール手順を頼りに進めていたが、brew install openblas で詰まった。
brewformulas.org に Active といった状態になっているのだが、なぜかインストールができない。 brewformulas.org しまいには homebrew-core リポジトリこんな感じの issue を挙げた。

さて、すぐに issue は解決するはずがないため、ここで行った対応策を記録する。

対応したこと

python で anaconda をインストールしていれば、conda install openblas でいけるはず。僕は anaconda をインストールしてないし、インストールしたくなかったので以下の手順を実行した。

brewformulas.org で Active なっているということは homebrew-core のリポジトリで formula を探せばいいのではと考え、以下のようなページを見つけた。 github.com

formula が分かれば手動でインストールする方法が分かる。以下の手順通り行った。

wget https://github.com/xianyi/OpenBLAS/archive/v0.2.20.tar.gz
tar xzf v0.2.20.tar.gz
cd OpenBLAS-0.2.20

ここまでやって formula を確認する。 すると以下の 2 行を確認できる。

# Must call in two steps
system "make", "CC=#{ENV.cc}", "FC=#{ENV.fc}", "libs", "netlib", "shared"
system "make", "PREFIX=#{prefix}", "install"

ということは homebrew の環境変数をみれば分かるだろうなということでチェックする。
brew --env を実行するとだいたいこんな感じで表示される。

HOMEBREW_CC: clang
HOMEBREW_CXX: clang++
MAKEFLAGS: -j4
CMAKE_PREFIX_PATH: /usr/local
CMAKE_INCLUDE_PATH: /usr/include/libxml2:/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers
CMAKE_LIBRARY_PATH: /System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries
PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/10.11
ACLOCAL_PATH: /usr/local/share/aclocal
PATH: /usr/local/Homebrew/Library/Homebrew/shims/super:/usr/bin:/bin:/usr/sbin:/sbin

つまり、CC は clang を使い、 prefix は /usr/local で良いことが分かった。 ここで分からないのは FC である。これは Fortran Compiler なので、gcc をインストールしている場合、gfortran という fortranコンパイラーが使えるので、 FC=gfortran となる。 ここまで分かれば make は以下のように行える。

make CC=clang FC=gfortran libs netlib shared
make PREFIX=/usr/local install

homebrew の formula はベストなインストール手順が記されているので、読めるようになると後から凄く助かることの連続だろう。

集中力が切れてきたので対応してみた part 2

今日は2日目。こういう集中力が切れた時のハックをみんな積極的に公開して欲しいと思っている。

今日は友達が朝9:45に迎えに来てくれた。それからもう1人を迎えて出発。

今日の目的として、沖縄読谷村にある手動のUFOキャッチャーこと「やどかりの宿」を探しに行くことであった。残波岬の近くにあるということなので、とりあえず残波岬へ向かった。そして到着。

f:id:codehex:20170820204716j:image

こんな感じのところに灯台がある。せっかくなので、上に登って景色を眺めることにした。入場料は中学生以上200円だった。

f:id:codehex:20170820204910j:image

f:id:codehex:20170820204931j:image

こういう感じの景色が楽しめる。広く見渡せることで、沢山のシーンを楽しめた。

それから再び探索を行ったが、目撃情報近くの残波ロイヤルホテルの人に聞きに行ったところ、何年も見かけていないということだったので落胆した。

しかし読谷は素晴らしいので、意外と最近出来た「読谷ファーマーズマーケット」へ行った。

f:id:codehex:20170820205349j:image

このすぐそばにあるこういう建物に入った。

f:id:codehex:20170820205405j:image

ここの3階に「はちれん」というラーメン屋がある。

f:id:codehex:20170820205416j:image

これが名物?の梅風味のつけ麺なのだが、食欲がない時でも食べやすく、さっぱりとした味なのでとても良い。オススメ。

これが午後14:00位で、暫く読谷をウロウロした後友達の家へ行って映画を見た。運転してくれた友達から「THE BLUE HEARTS」が好きなら観るべきだと紹介された映画を観賞した。

リンダリンダリンダ」という映画だった。女子高生が「THE BLUE HEARTS」のコピーバンドを組んで文化祭でやるという内容。

これを観た後オレ達の青春は…ってなったが、凄く面白かった。

9時間位でドライブしてた訳だが、ずっと運転してくれた友達、家に上げてくれて映画を見せてくれた友人に感謝している。

 

今日はもともと自分の好きな曲はどういったものだったか思い出すことができてよかった。(最近ヒップホップしか聞いてなかったため)

今はTHE BLUE HEARTSを家でガンガン流して聴いている。

今日のドライブもあんまり行かない場所へ行ったため、気分転換になったし、曲をガンガン聴くことも癒しになるんだということを思い出すことができて本当に良かった。

 

 

集中力が切れてきたので対応してみた part 1

研究室で自ら設定したタスクを日々こなしていくうちに、色々考えすぎてしまって先週くらいから自分のタスク処理速度が落ちてきた。

今までは運動不足による集中する体力を気にして、バッティングセンターに通うようにしていたが、段々とそれすら効果がなくなってしまった。

原因として、4年次になって以降、研究室に篭り続けていたからだと考えた。そこで今日から暫くの間、思い切って休暇を確保することにした。

手始めに今日はその1日目だが、友達と一緒にドライブに行くことにした。沖縄で遊ぶとなると基本は車での移動になる。

友達の提案で「泊いゆまち」へ行った。

そこでは新鮮な海産物が揃っており、中には、ポン酢を垂らしてすぐに食べられる生牡蠣や鰻の蒲焼など調理済みのものまであり、新鮮な材料での食事を堪能することができた。中でも「アーサ汁」がかなり美味しかった。

そのあと、割と最近?できた糸満市にある潮崎町へ行った。そこでドライブしててたまたま着いたのだが、名前が分からない公園っぽい場所があって、なんと歩行用通路と海との距離が近い!こういう感じ。

f:id:codehex:20170819232721j:image

階段を降りると海という謎の設計だけどこれはいい!

歩行用通路にはベンチがありそこに座ると「ここpanchi」と書かれてるM要素のある建物が見えた。

f:id:codehex:20170819232842j:image

このベンチで1時間以上過ごした。

人が少なく環境が素晴らしかったので、無の状態で過ごすことができた。日々考えることが多いので、久しぶりにリフレッシュ出来たのではないのではないかと凄く感じた。(かなり気分がスッキリしたし、考えもまとめられた)

対応して1日目だが、これだけでも気分がだいぶ良くなったし、沖縄はやっぱり素晴らしいと改めて実感することができた。

 

 

Builderscon へ参加してきました :tada:

今回は前夜祭からだったので合計 3 日間参加しました。

前夜祭

前夜祭は記憶がなくなってしまっているので、きっとそれほど楽しかったのでしょう!! 撤退スペシャルで、結構きわどい話が多くて本当に面白かったです。(てっきりこの時はこれが本番と思っていた)

カンファレンス初日

聞きました一覧です。

横山三国志に「うむ」は何コマある?のトークがすごく面白かったです。
これは、「横山光輝 三国志」という漫画のコマを切り抜きながら、セリフをOCRにかけ保存(セリフとコマの画像は結びつけられている)し、それを全文検索で探し出すといったサービスの裏側をどのようにやりくりしているのかをトークされていました。
それで何が良かったかというと、コマ抜きのアルゴリズムにも感心はしましたが、

そもそもサービスが良すぎる

飛び入りで LT をした

なんと今回のビルコンに旅費 + 宿泊費含め 7 万円越えてしまったので、自分で作ったものを紹介しようと思い急遽スライドを作りました。

どれも終了できないものばかりなので、ちゃんと最後まで完成するように継続的に開発はします。 僕の身寄りが増えたので、協力してくださった皆さんには感謝です。勉強会や飲み会などへ招待していただいた際は、今度紅芋タルトか黒砂糖、もしくは泡盛コーヒーをお持ちします。

カンファレンス懇親会

本当に自分でも何を言ってるのか分からなくなっていて、良く分からないくらい楽しかったです。
ネットの記事で見かけるけど、なかなか目にかかれない方々も沢山いらっしゃって、そういった方々と関われたのも非常に良かったです。「フェイル」という最高なしゃもじも貰えたので最高でした!!

カンファレンス最終日

どれももっと聞きたい内容ばかりだったのでビルコンに本当に来て良かったと思いました。
全体的に、様々な分野の技術者がいて、僕も誰かと似つかないような分野での技術磨きをしたいなと強く感じました。次はトークに応募して参加しようと思います💪 今回運営に携わった方やスタッフの皆さん本当にありがとうございました。

f:id:codehex:20170805214541p:plain

やよい軒の裏メニューが素晴らしかった

勝手に裏メニューとか言ってるけど…(笑)
ここ 2、3 年の間で沖縄に進出してきた飲食店が多いように感じる。
その中の一つが「やよい軒」なんだけど、今日やよい軒へ行ったことのある友達、留学生、僕の三人で行ってきた。(留学生と僕は初めて)

入り口に注文専用の機械があって、それで券を発行して中に入るという仕組みだった。
友人が鯖の塩焼きを頼んでいるのを見て、僕は鯖の味噌煮を注文した。留学生は野菜と肉野菜のなんちゃら(野菜炒めみたいな感じ)を注文しながら、「Challenge!!」と繰り返し言っていた。

店の中に入った時、まるで羽田空港の某所に似た作りになっていたことがまず驚いた。ここでテンションが上がる。
ワクワクして辺りを見渡すとなんとも大雑把なペンキの塗り方で、天井や壁の至る所が剥がれていて、もったいないなーと感じたけど、メインはご飯なのでテンションは維持していた。

そしてついにテーブルに美味しそうな御馳走が並び始めた。
ここでもう一度驚いた。なんと留学生の野菜と肉野菜のなんちゃらに「コチュジャン」がセットでついてきた。しかも自分の好きな量を入れることができるという…
普通野菜にコチュジャンのせるか?とか思いながら僕は鯖の味噌煮を食べていた。

もちろん鯖の味噌煮は美味しかったのだけど、留学生が隣でコチュジャンを野菜にのせながら美味しそうに食べているのを見て、僕もコチュジャンを鯖の味噌煮にかけたら美味しいんじゃないかと思い始めていた。「Nice taste ですね!」なんて言うから我慢できずに、ちょっと頂戴とコチュジャンを分けてもらい、コチュジャンを鯖の上にのせて食べてみた。

本当に美味しかった!!
やよい軒コチュジャンはピリ辛な感じで、死ぬほど辛いまでではなかった。これと味噌がいい感じにマッチしたんだと思う。 鯖の味噌煮とご飯が進む進む、お陰様でご飯を 3 杯お代わりするほどだった。こんなにご飯を食べようと思ったのは中学の時以来くらいだった。

この「鯖の味噌煮」+「コチュジャン」メニューを実現するためには、2 名以上で行って、誰かに野菜と肉野菜のなんちゃらを頼んでもらうか、勇気を出して「コチュジャンをください」と店員に伝えなければいけないが、それくらいの価値は十分にある美味しさだった。

以下は通常の鯖の味噌煮の様子。

YAPC::Fukuoka に行ってきてベストLT賞を貰った!

こんにちは。 @codehex です。
6/30 に前夜祭、7/1 にカンファレンスに参加してきました。

前夜祭

前夜祭で grep.metacpan.org で typemap を検索するために使うといった話をしました。 LT の内容は、トップページの右下にファイルの拡張子を指定して絞り込み検索ができるのですが、そこに typemap を指定すると typemap 一覧が表示されますよ!といった感じでした。

そのあと

Text::CaboCha について skaji さんと話をしていたのですが、その中で Text::CaboCha に合せた encoding の正しい行い方を pod ドキュメントの synopsis などの部分に、利用者のために開発者が意図した動作を、詳しく書いてあげたほうがいいといった良い指摘を貰ったので後日直していこうと思います。

カンファレンス

聞きに行って良かったトークは 2 つありました。

プログラマ三大美徳をグラウド面に当てはめて考られた面白いトークでした。
僕も Perl をやり始めた頃にプログラマ三大美徳を知って、それの「怠惰」「傲慢」の部分をかなり意識して開発を行うようにしていたのですが、最近そういったこと忘れてたなと、考え直すことができた良い機会でした。

  • @moznion さんの「Web application good error messages and bad error messages」

Go 言語に触れていると、エラーメッセージを考えることが多く、最近では exitcode までを意識したパッケージを作るほどでした。

github.com

話の中で、「エラーを解消するために、どういったことをすべきか提案を出してくれるエラーは最高」といった話が出てました。それは git のエラーメッセージを例に挙げていたので、git のエラーを表示する思想はみんなも真似していくべきだなぁと感じました。

LTで賞を貰った

How to make Perl Mongers group といったタイトルで発表してベスト LT 賞を頂きました。
Okinawa.pm は世界一オーガナイザーが多いといったことを示すために、以下のワンライナーをスライドに仕込んで見せたのですが、反応がイマイチだったのが正直ショックでした…(完全に僕の話し方が悪かったので反省)

perl -MXML::Simple -E '%h=%{(%{XMLin("perl_mongers.xml")})[1]}, say+grep+keys%{$h{$_}{tsar}}>4,%h'

これは Okinawa.pm の Slack に参加してる皆さんが協力をしてくださってここまで短くなりました。Okinawa.pm の Slack に参加したい方はこちら から参加できるので、どしどし参加してください。

解説をすると、この perl_mongers.xml
wget https://github.com/perlorg/www.pm.org/raw/master/perl_mongers.xml でダウンロードしてきたファイルに対して実行しています。
このファイルは世界中の Perl コミュニティの情報が入っていて、上記のワンライナーではオーガナイザーの数が 5 人以上の Perl コミュニティを列挙していくといった動作をします。このスクリプトを整形するとこんな感じになります。

use XML::Simple;
use feature 'say';

my $xml = XMLin("perl_mongers.xml");
my %group = %{ $xml->{group} };

# %group はハッシュであり、配列として扱う場合
# キーが奇数番目、値が偶数番目の添字となる。
# $_ が %group のキーではなく値の時、keys( %{ $group{$_}{tsar} } ) > 4 は false になる。
my @mongers = grep { keys( %{ $group{$_}{tsar} } ) > 4 } %group;
say @mongers;

記号をふんだんに使っていると、Perl Monger はワクワクするのかな?と個人的に思ってました。

最終的に、コミュニティ運営は「きっかけ」で大きく傾くので、その「きっかけ」を手に入れるためにイベントを開催して行くことが大事だと思っているということを伝えました。その後に YAPC::Okinawa の宣伝を行いました。

会場は OIST (沖縄科学技術大学院大学)で行うんですが、どういった場所なのか気になる方はこちらから良い感じの写真を見ることができます。

感想

懇親会(ってかこれが本番)も沢山の Perl Hacker とか変わることができました。その中で @yappo さんから、餃子の王将を芝の上で食べたいなどの注文をもらったので実現できるように頑張ります。 YAPC::Fukuoka の運営に関わった皆さん、お疲れ様でした。学生交通費支援をしてくださったスポンサーの皆様、毎回感謝しています。

恩返しの意味を込めて次の沖縄頑張ります。

ハッカーズチャンプルー 2017 の合宿 + カンファレンスに参加してきた & ボランティアスタッフもやった!

凄く濃ゆい日々を久しぶりに過ごしたので、これは是非書こうと思いました。
ハッカーズチャンプルーは合宿 + カンファレンス構成となっており、合宿に関しては Okinawa.rb, IT カレッジ沖縄 がスポンサーとなってくれたおかげで、学生は合宿の宿泊代が無料といった形となっていました。そのため、今回は合宿 + カンファレンス参加、沖縄の IT コミュニティへの恩返しのつもりで、ボランティアスタッフとしても参加しました。

合宿

合宿は 3 泊 4 日でした。
場所は「かりゆしコンドミニアムリゾート北谷 マリーナベイ美浜」でした。コンドミニアムってなんだ!?ってなってて、別のコンドミニアムに着いたのは内緒

Day 1 Welcome Party 🎉

イベントページです。 hackers-champloo.doorkeeper.jp

沖縄 地ビール酒場~Beer Rize 北谷 というめっちゃくそオシャレな酒場でお酒を飲みながらワイワイ騒いでました。外人も結構多く、まさに沖縄のチャンプルー文化を味わえる場所でした。
この場で話したこととしては、Okinawa.pm を運営しているから、実は Go の人ではないですよ!といった自己紹介をきっかけに、Go の話を沢山してもらえました。 技術的な話では、Perl のウェブフレームワークの話や MVC に関する話をしました。
エモい方では、コミュニティを運営していくのって難しいよねっていう話で盛り上がったように感じました。
例えば、少数の人数(オーガナイザーやスタッフ)がメインでやっていたけど、みんな忙しくなってしまって、誰かに運営を変わってもらいたいとなった時に人を探すのが難しい、ならばコミュニティイベントに参加している人に頼んで貰えばいいのでは?といった声や、運営協力する立場と運営していくという立場では、かなりハードルが変わるよねーなどといった議論をしてました。

僕も何回かコミュニティなんて参加しなくてもいいだろうと思った時期もありましたが、参加することによって、いろんな人に出会えたり、自分の感覚では手に入れられなかった新しい知見を得ることができたりするので、コミュニティっていいなと今は凄く思っています。

Day 2 モノづくり

僕は研究室の Slack で動かすための bot を作っています。
普段はこんな感じに動いています。(以下 bot を「ちひろ」と呼びます) f:id:codehex:20170626153129p:plain

ですが、ちひろに @deeeetさんが書いたGolangでSlack Interactive Messageを使ったBotを書くを参考に Slack Interactive Message を使った参加可否メッセージを送る機能を搭載したくて頑張ってました。 完全に完成したわけではないですが、こんな感じで動きます。

f:id:codehex:20170626153355p:plain

常に@aokabin_さんと一緒に作業してました。@aokabin_さんは AWS を使った案件に着手していて、面白そうだと側から見ていたのですが全くわかりませんでした(AWS の知識が乏しいので…)

Day 3 isucon 練習

素敵なブログを見つけたので、こちらも是非

masa-world.hateblo.jp

こんな感じでやってました!

上のブログのように文系チームと勝負をして負けたので、精進していこうと思いました orz
行ったこととして、

  • データベースに突っ込まれている画像のバイナリデータを引っ張ってきて、ディレクトリに書き出す
  • js, css などといったファイルを nginx でキャッシュさせる
  • N + 1 をできる限り削る

といった感じです。

後から、まだチューニングできたかなと思ったところは

  • バイナリデータを抜かしたスキーマの変更
  • メモリをアロケートしないようにコードを修正する
  • DB のデータをオンメモリにする(1 万件しかないのでできたはず)

一番感じたのは isucon は準備していればスコアが上がるものなんだなと思ったので、そこを頑張っていきたいです。

Day 4 起きてカンファレンスへレッツゴー

今回僕はボランティアスタッフとして参加したので、駐車場誘導してました。
こんな感じの服がスタッフTシャツです。(めっちゃ沖縄!!)

全部の LT と トーク面白かったし、本当に最高でしたが、

個人的に @tenntenn さんの「Goにおける静的解析と製品開発への応用」が楽しみだったので、聞けて静的解析やっていきたいといった気持ちになれました!(帰ってコード書きたいくらいの気持ち) 次の日に Golang Okinawa でハンズオンも出来たのでかなりの Go の知見を得ることができました。

それと沖縄の ruby ハッカーペン さんの「javascript無しで無理やり作るリッチなWEBアプリ」を聞いてて、どうやったらそんな発想が生まれてくるのか気になって仕方ありませんでした。そんなスライドはこちらです。

カンファレンスの様子や合宿中につぶやいたまとめはこちらにあるので、宜しければどうぞ!

本当にペンさんの LT は毎回感動してるw

後夜祭

後夜祭はどんちゃん騒ぎしてましたw
Go の話したり、Perl の話をしたりと…

感想

去年のハッカーズチャンプルーでの開発合宿で pget を開発しました。 そのためがっつり合宿と言った感じでしたが、今年は沢山の人と出会い、もっと知見を貯めていくことが目標だったので、それは達成できたかなと思っています。

本当にめっちゃ楽しかったのと、来年もあれば行きたい気持ちしかありませんでした。

運営の皆さん、スタッフの皆さん本当にお疲れ様でした!