うなすけとあれこれ

2015年07月12日

vimべんきょうにっき その2

vim logo

dotfilesの整理から

ukstudio先輩のdotfile(ukstudio/dotfiles)見てたら、stowを使ってdotfileへのsymlinkを貼っていてマジヤベエって気持ちになって、とりあえずstowを使えるようにしました。(Using stow instead of shell script:c97f1f8)

lightlineの設定を見直す

atomに代わってvimをメインのエディタにしていく決意をしたので、本格的に環境を整えていくことにします。これが今までのstatuslineです。 以前のstatusline

とりあえず作者さんの、作者が教える! lightline.vimの導入・設定方法! 〜 初級編 - インストールしよう - プログラムモグモグを参考にして、サクッとvimrcをコピペした結果がこちらになります。(Update lightline setting:c2461db) statusline変更後

こちらからは以上です。

あの……fugitive使って現在のbranchを表示させるのってどうやって……

2015年07月12日
2015年07月11日

6月辺りに買った漫画

本棚がない

漫画を買う量が一気に増えた

職場の先輩(HolyGrail先輩)がこんなエントリ(今買うべきおすすめのラブコメ漫画(追記あり))を書いたり、職場におすすめの漫画(1巻目だけ)を持ってきたりすすので、どうにも欲しい漫画が増えていきます。

オフィスで試し読み業が始まりました。1巻のみになるのでよさを感じたらみなさん買っていきましょう。

Kuniaki Horiさん(@holygrail)が投稿した写真 -

それに加え、社会人となったことで、学生時代に比べ自由にできるお金も増えたので、自制しないと際限なく漫画を買ってしまいそうになります。そんな僕が6月あたりに買った漫画を列挙します。

買った漫画

※画像は大抵amazonへのリンクです

恋と嘘

試し読み マンガボックス (MangaBox) / 人気マンガ家の新作連載が無料で読める!

政府通知届かないしなにをやっても駄目。禁じられた恋的な感じでもないけど、いけないことって感じがする。3人の関係がこれからどうなっていくのか……いや4人か?とりあえず買って読んでください。

不器用な匠ちゃん

試し読み 不器用な匠ちゃん - pixivコミックで漫画を無料試し読み

いいですね、趣味の話になるととたんに饒舌になる感じ。僕らそのものじゃないですか。それでいて、こう「私なんかが」みたいな意識が見える気がして、なんかすごく感情移入しやすい。とりあえず買って読んでください。

制服あばんちゅーる

試し読み 制服あばんちゅーる / さぬいゆう、伊丹澄一 / まんがライフWIN

は〜なんだこのハッキリ表には出さないけどお互いがお互いを好き合ってる感じ!!学生って感じがして読んでて「は~」ってなりました。とりあえず買って読んでください。

お前ら全員めんどくさい!

試し読み お前ら全員めんどくさい! | 日本最大級の無料Webコミック[COMICメテオ]

確かに登場人物全員めんどくさいし、読者から見れば國立先生も十分めんどくさい。めんどくさかわいい。webで試し読みもできますし、とりあえず買って読んでください。

つるつるとザラザラの間

試し読み つるつるとザラザラの間/月子 - モーニング・アフタヌーン・イブニング合同Webコミックサイト モアイ

虻川さん、本当に白瀬くんのこと好きなんだな……というのが1巻の終盤から2巻にかけての話とかでわかります。HolyGrail先輩も言ってますが、ヒロインの虻川さやちゃんがかわいいのでとりあえず買って読んでください。

第13保健室

試し読み 「第13保健室 1」 | ゲッサン少年サンデーコミックス | 小学館

マンモス校すぎて、保健室が12もある学校の話。個性的すぎる保健室の先生がまだ全員登場していないあたり恐ろしい。2巻が出てるようですが、まだ買ってないです。何かと2人の先生が絡み合うのでとりあえず買って読んでください。

ダンジョン飯

独特の世界観というか、説得力というか、食べてみたくなるというか。「ヤダーーーーッ!!」ってなる気持ちもわかりますが、ちょっと好奇心のほうが勝っちゃいそう。とりあえず買って読んでください。

くまみこ

試し読み くまみこ - 無料コミック ComicWalker

これは前々から欲しかったけど、amazonで品薄で、店頭で見つけてアッアッとなって一気に買いました。4巻以降、一体どうなるんだ…… まちがかわいいのでとりあえず買って読んでください。

とりきっさ

試し読み とりきっさ!|月刊COMICリュウ

これは友人のふゆたくんにおすすめされて買った漫画。ラブコメばっか読んでるせいか、「ここからどういう恋に発展するんだ?」と考えてしまいますがほのぼの系漫画だと思うのでずっとこのまま……なのかな?数日後に2巻が出るので、とりあえず買って読んでください。

あせびと空世界の冒険者

試し読み あせびと空世界の冒険者|月刊COMICリュウ

これは上の本を見てた時に同じ出版社のページで紹介されてて気になって買ってしまった漫画。異世界ファンタジー系で、絵が綺麗です。あと、あせびさんが変形してカッコイイです。とりあえず買って読んでください。

まとめ

これ以外にも「とんかつDJアゲ太郎」とか「ジョジョ」とか買わないといけないので財布がマッハ。とりあえず買って読んでください。この記事書くためにamazonアソシエイトに参加しました。

2015年07月11日
2015年07月10日

atom plugin "do-not-use-atom"を作った

do-not-use-atom

結局vimを使おうという目標

結局、hackableなeditorとは言ってもかゆいところに手が届かない、という事態がありました。具体的には、「拡張子のない、とあるファイルをrubyとみなしてsyntax highlightしてほしい」という願いです。vimであれば、filetypedetectなどで設定できますが、atomだと……その手のプラグインを入れてみましたが、バグかなにかで期待通りの動作をしてくれませんでした。

vim(emacs)での設定法は後ろの席の人に聞けばすぐわかるのですが、atomだとどこを設定すればいいのかわからず、stackoverflowを見てもなにやらよくわからないディレクトリに潜って設定しなければいけないような解説がいくつも出てきて、結局わかりません。

やはり……vimか……

atomを起動すると警告が出るatom package

そこで、「atomを起動すると警告が出るatom package」を作りました。と言いたいのですが、まだそこまではできていません。プラグインを起動するとアラートが出て、atomが閉じるプラグインを作りました。

do-not-use-atom

do-not-use-atom page

こんな感じで動作します。

do-not-use-atom 動作

ctrl + alt + o でアラートが出ます。閉じているのはatomのウィンドウのみで、プロセスは死んでいません。

まとめ

機能増やすためにはatom使わなくちゃいけないしなんのために作ったか全くわからないのにもうstarが付いている。

2015年07月10日
2015年06月15日

esaの日報から勤務時間を計算するRubyスクリプトをつくった

esaとは

弊社では、業務日報はesa(https://esa.io)で管理しています。

さてそのesaですが、先日APIがpublic β公開されました(release_note/2015/05/27/esa API v1をβ公開しました)。同時にAPI docsとRuby Gem(esaio/esa-ruby)も公開されました。

ということで、勤務時間を計算するRubyスクリプトを作れそうだったので、作ることにしました。

スクリプト作成までの道のり

access token取得

まず、今回は読めればいいだけなのでread onlyでaccess tokenを取得します。右上にある自分のアイコンを押して飛ぶ画面でaccess tokenを発行します。 access token

とりあえずサンプルコードを実行

access tokenが取得できたら、githubのREADMEに記載されているusageに記載されているコードを試してみます。

require 'esa'

client = Esa::Client.new(access_token: "xxxxxxxxxxxxxxxxxxxxxxxx", current_team: "xxxxxx")
puts client.posts

このコマンドで、esaに投稿されている記事がガッと取得出来ました。多すぎますね。

検索クエリで絞り込む

欲しい記事のカテゴリ、投稿者はわかっている(日報なので)ので、検索クエリを用いて特定の記事を取得します。usageを読むと、postsに引数としてクエリを渡してやると良さそうです。

require 'esa'

client = Esa::Client.new(access_token: "xxxxxxxxxxxxxxxxxxxxxxxx", current_team: "xxxxxx")
puts client.posts(q: "user:unasuke category:日報/2016/06")

これで、投稿者が"unasuke"で、カテゴリが"日報/2015/06"の記事(今月の日報)が取得できます。15分毎にAPIリミットがリセットされるとはいえ、あんまり何回もGETするのもアレなので応答を何かに格納しておきましょう。

require 'esa'

client = Esa::Client.new(access_token: "xxxxxxxxxxxxxxxxxxxxxxxx", current_team: "xxxxxx")
response = client.posts(q: "user:unasuke category:日報/2015/06")

記事の本文を取得する

取得ができたので、本文の解析に移ります。まず本文はどこに入っているかというと、こうなっています。

{"posts"=>
    [{"number"=>3949,
      "name"=>"unasuke",
      "full_name"=>"日報/2015/06/15/unasuke",
      "wip"=>true,
      "body_md"=>"markdown文字列",
      "body_html"=>"html文字列",
      "created_at"=>"2015-06-15T20:05:50+09:00",
      "message"=>"Update post.",
      "url"=>"https://hoge.esa.io/posts/3949",
      "updated_at"=>"2015-06-15T20:34:16+09:00",
      "tags"=>[],
      "category"=>"日報/2015/06/15",
      "revision_number"=>2,
      "created_by"=>
...

解析するのに便利なのはmarkdownなので、markdownでの記事内容を取得します。このようにします。

require 'esa'

client = Esa::Client.new(access_token: "xxxxxxxxxxxxxxxxxxxxxxxx", current_team: "xxxxxx")
response = client.posts(q: "user:unasuke category:日報/2015/06")

for i in 1...response.body["posts"].size do
  puts response.body["posts"][i]["body_md"]
end

日報の中から時間が書いてある部分を抜き出す

日報の中から合計勤務時間が書いてある部分を抜き出します。僕は日報の勤務時間を

# 勤務時間

| 場所 | 時間 | 小計 |
| --- | --- | --- |
| オフィス | 10:50 - 13:00 | 2:10 |
| オフィス | 14:00 - 20:30 | 6:30 |
| 合計 |  | 8:40 |

このように書いているので、「合計」が含まれる行を持ってくれば良さそうです。また、その中でも、コロンで区切られている数字のみを持ってくればいいので、以下の様に正規表現オブジェクトを作成して抜き出しました。

require 'esa'

client = Esa::Client.new(access_token: "xxxxxxxxxxxxxxxxxxxxxxxx", current_team: "xxxxxx")
response = client.posts(q: "user:unasuke category:日報/2015/06")

for i in 1...response.body["posts"].size do
  puts response.body["posts"][i]["body_md"].scan(/^.*合計.*$/)[0].scan(/\d+:\d+/)
end

これで、以下の様な配列が得られました。

["8:00", "9:10", "8:00", "10:00", "7:30", "7:50", "7:30", "7:30", "8:30", "8:00"]

時間の計算をする

あとは簡単で、時間の計算をしてやれば合計勤務時間が求まります。最終的なコードはこのようになりました。

まとめ

esaがどんどん便利になっていきます。(scriptの名前はアイドルマスターシンデレラガールズの三好紗南から取りました)

2015-06-21 追記

sana.rbの動作を修正しました。

2015年06月15日
2015年06月14日

vimべんきょうにっき その1

vim logo

きっかけ

あこがれの先輩とペアでvimの練習とかしてた

— うなすけ(偏差値5) (@yu_suke1994) 2015, 6月 12

べんきょう

Vim plugin

新しくNERDTree(scrooloose/nerdtree)と、vim-slim(slim-template/vim-slim)と、vimshell.vim(Shougo/vimshell.vim)をインストールした。

NERDTreeの設定も先輩のからもってきて、space+eで開閉できるようにした。

nmap <silent> <Space>e :NERDTreeToggle<CR>

autocmd vimenter * if !argc() | NERDTree | endif
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

let g:NERDTreeShowHidden=1

また、インストールしたきり設定が書いてないneocompleteの設定も行った。

他にも、ウィンドウ分割の方法など教えて頂いた。

まとめ

ペアvim前 .vimrc

"neobundle.vimの設定
if has('vim_starting')
    set runtimepath+=~/.vim/bundle/neobundle.vim/
endif

call neobundle#begin(expand('~/.vim/bundle/'))

NeoBundleFetch 'Shougo/neobundle.vim'

"install plugins
NeoBundle 'Shougo/vimproc.vim', {
    \ 'build' : {
    \   'windows' : 'make -f make_mingw32.mak',
    \   'cygwin' : 'make -f make_cygwin.mak',
    \   'mac' : 'make -f make_mac.mak',
    \   'unix' : 'make -f make_unix.mak',
    \   },
    \}

NeoBundle 'Shougo/unite.vim'
NeoBundle 'thinca/vim-quickrun'
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'Shougo/neocomplete.vim'
NeoBundle 'itchyny/lightline.vim'
NeoBundle 'vim-jp/vimdoc-ja'
NeoBundle 'vim-ruby/vim-ruby'
NeoBundle 'wakatime/vim-wakatime'

call neobundle#end()
NeoBundleCheck

"help language use Japanese
set helplang=ja,en

"vimを使ってくれてありがとう!!!!!!!!!!
set notitle

"Ricty
set guifont=Ricty\ 11

"use UTF-8
set encoding=UTF-8

"syntax
syntax on

"line number
set number

"indent setting
set autoindent
set smartindent
filetype plugin indent on

"no more swapfile
set noswapfile
set nobackup

"status line setting
set laststatus=2
let g:lightline = {
    \ 'colorscheme' : 'solarized' ,
    \}

"colorscheme setting
set t_Co=256
set background=dark
colorscheme solarized

"convert file encode
function SetUU()
    set ff=unix
    set fenc=utf8
endfunction
command -nargs=0 SetUU call SetUU()

"use backspace
set backspace=indent,eol,start

ペアvim後 .vimrc

"neobundle.vimの設定
if has('vim_starting')
    set runtimepath+=~/.vim/bundle/neobundle.vim/
endif

call neobundle#begin(expand('~/.vim/bundle/'))

NeoBundleFetch 'Shougo/neobundle.vim'

"install plugins
NeoBundle 'Shougo/vimproc.vim', {
    \ 'build' : {
    \   'windows' : 'make -f make_mingw32.mak',
    \   'cygwin' : 'make -f make_cygwin.mak',
    \   'mac' : 'make -f make_mac.mak',
    \   'unix' : 'make -f make_unix.mak',
    \   },
    \}

NeoBundle 'Shougo/unite.vim'
NeoBundle 'thinca/vim-quickrun'
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'Shougo/neocomplete.vim'
NeoBundle 'itchyny/lightline.vim'
NeoBundle 'vim-jp/vimdoc-ja'
NeoBundle 'vim-ruby/vim-ruby'
NeoBundle 'wakatime/vim-wakatime'
NeoBundle 'slim-template/vim-slim'
NeoBundle 'scrooloose/nerdtree'
NeoBundle 'Shougo/vimshell.vim'

call neobundle#end()
NeoBundleCheck

"help language use Japanese
set helplang=ja,en

"vimを使ってくれてありがとう!!!!!!!!!!
set notitle

"Ricty(only gvim?)
set guifont=Ricty:h16

"use UTF-8
set encoding=UTF-8

"syntax
syntax on

"line number
set number

"indent setting
set autoindent
set smartindent
filetype plugin indent on
set expandtab
set shiftwidth=2
set softtabstop=2

"no more swapfile
set noswapfile
set nobackup

"status line setting
set laststatus=2
let g:lightline = {
    \ 'colorscheme' : 'solarized' ,
    \}

"colorscheme setting
set t_Co=256
set background=dark
colorscheme solarized

"convert file encode
function SetUU()
  set ff=unix
  set fenc=utf8
endfunction
command -nargs=0 SetUU call SetUU()

"use backspace
set backspace=indent,eol,start

"Neocomplete
source ~/.neocomplete.vim

"NerdTree
source ~/.nerdtree.vim

当該コミット github.com/unasuke/dotfiles pair vim lesson

2015年06月14日
2015年06月10日

複数アプリケーションから参照されるDBをridgepoleで管理する

ridgepole

忙しい人のためのまとめ

tmixの現状

最近の大規模なwebサービスが、1つのアプリケーションとして動いているというのは珍しいだろう。cookpad社がそうであるように、tmixも裏ではいくつかのRails Applicationが同時に動作している。 そしてそれらのRailsが見に行くデータベースはもちろん共通の1つである。

Railsは、そのアプリケーション内でschema.rbを用いてデータベースの定義を行っている。そしてRailsアプリケーションの数だけschema.rbが存在し、各アプリケーションの開発者が各々でschema.rbを好きに編集すると、conflictは避けられない。実際、tmixでもschema.rbを別リポジトリからコピーしてくるなんて作業はしょっちゅう行われていた。

この状況が好ましくないことは誰の目にも明らかであり、解決策としてのridgepoleの導入が必要だった。(参考 クックパッドにおける最近のActiveRecord運用事情)

ridgepoleの導入

現状の把握

ridgepoleを導入する前に、まずは現状を正しく把握する必要がある。

tmixは、メイン、画像生成、発注管理で3つのRails Applicationが動作している。それぞれはCircle CIによってGitHub Pushのタイミングでテストされ、production deploy時にはCircle CIからcapistranoを用いて本番環境にdeployされるようになっている。 環境は、development、staging、production、testの4つあり、それぞれにデータベースが存在する。

各リポジトリからschemaを適用させる(没案)

まず僕は、schemaを管理するためのリポジトリを作成し、それぞれのリポジトリがdeploy taskのなかでgit cloneを行い、ridgepole applyをさせれば良いと考えた。ridgepoleでは冪等性が保証されているので、schemafileの適用は何度走ってもよい。各アプリケーションがdeployされるたびに、データベースは更新される。

そのために、次のようなシェルスクリプトを作成し、circle.ymlで実行させるようにした。

cd ../
git clone git@github.com:spice-life/tmix-schema.git
cd tmix-schema
bundle install
bundle exec ridgepole -c ../tmix/config/database.yml --apply

当然のように、これはうまく動作しない。なぜなら、Circle CIでテストを行う環境は、その環境と結びついたリポジトリにしかアクセスできず、他のリポジトリをcloneする権限は持っていないからだ。(もちろんこの記事で出てくるリポジトリは大半がprivate)

そこで、いい方法はないものかとCircle CIのchatで聞いてみたところ、user keyを追加しろとの返答があった。しかし、それでは僕がアクセスできる全リポジトリへの権限が渡ってしまう。それに、サービスの運用が属人性の高いものになってしまう。これは良くない。 そのような返答をすると、今度はkey pairをCircle CIとGitHubに登録しろと言われた。これなら、権限が最小に抑えられて望ましい。 circle ciでのchatの様子

さて、SSH keyを登録するにしても、hostnameがgithub.comではいろいろと都合が悪い。そこで、hostanemeを"ridgepole"として登録し、git cloneするときには明示的にその鍵を使うようにした。具体的には以下のようにした。

cd ../
GIT_SSH=tmix-web/bin/git-ssh.sh git clone git@github.com:spice-life/tmix-schema.git
cd tmix-schema
bundle install
bundle exec ridgepole -c ../tmix/config/database.yml --apply
#!/bin/sh
exec ssh -oIdentityFile=~/.ssh/id_ridgepole "$@"

Circle CIで追加した鍵は、内部ではid_をhostnameの前に付与して保存されるのでこのようにしている。

このようにしたことで、git cloneができるようになり、めでたしめでたし……と思っていると、おかしなことが起こり始めた。cap deploy時に次のようなエラーメッセージが表示されるようになったのである。

ERROR: Repository not found. fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

もちろん追加した鍵のhostnameはridgepoleなので使われるはずはないのだが、鍵を削除するとdeployができるようになったので、仕方なく鍵を削除した。どうすれば良かったのだろう……

結局、user keyを追加するしか無い。そこで、chat deployを行うbotのuser keyを追加した。これで、git cloneができるようになり、ridgepole applyもできるようになった。

だが、この方針では、本番サーバーそれぞれがschemaリポジトリを保持することになり無駄であること、データベースの変更を単体で行えないなど問題点も多い。

ridgepoleをcapistrano deployさせる

なので、schemaが存在するリポジトリをcap deployできるようにした。ただ、このためにサーバーを持つのも無駄なので、deploy先は既存アプリケーションのサーバーを間借りする形にした。

具体的には、以下の記述をdeploy.rbに追記した。

namespace :deploy do
  after :published, :ridgepole do
    on roles(:db) do
      execute "cd #{fetch(:release_path)}; bundle exec ridgepole -E #{fetch(:stage)} -c database.yml --apply"
    end
  end
end

これでbundle exec cap hoge deployするとその環境のデータベースにridgepole applyができるようになった。

テストについて

ridgepoleで読み込むschemafileについてsyatax errorがないか確認する簡単なテストを書いた。

require "spec_helper"

describe "Schemafile" do
  it "should correct syntax" do
    `bundle exec ridgepole -c database.yml -E test --apply --dry-run`
    expect($?).to eq(0)
  end
end

schemafileについてはこれくらいでいいとして、問題は各アプリケーションのテストである。テスト時に、schema.rbを読み込んであれこれする動作をする場合、やめさせなければならない。Rspecを使用している場合、spec/rails_hepler.rbの

ActiveRecord::Migration.maintain_test_schema!

この記述を削除する必要がある。

業務フローがどうなったか

ridgepoleの導入によって、業務の流れは次のようになった。

例えば共用の開発用データベースが存在する場合は、それに対しては手動でridgepole applyする必要がある。

2015年06月10日
2015年06月07日

といくんのおうちで家二郎

二郎

経緯

なんかLINEが飛んできてやることになった。

様子

ここから先、生肉とキッチンの画像が多くなります。

僕、とい、りゅうのすけの3人で、とりあえず肉のハナマサやスーパーなどに行って、以下の食材を購入しました。

これを何とかしていきました。以下、写真と雑な説明が続きます。

下準備

肉たちです。 とんこつ 豚バラ そもそもこの豚バラが、とい家に届いたことが会の発端だそうです。

豚骨をゴロっとしました。 とんこつゴロリ ここでりゅうのすけに一旦何もかも任せてといくんと僕で鍋や食器や麺を買いに行きました。

開化楼という有名な製麺所に行って太麺を10玉買いました。これは3人の会だったのですが、まあ10玉は買いすぎました。5玉で良かったです。というか有名な製麺所ってのをこの日に知りました。 開化楼 麺を入れる木箱が大量にあってただただすごい。

帰ってくるとこうなっていました。一回目の茹ではアクとか臭みとかなので捨てます。肉片もこそぎ取ります。骨を割りたかったのですが、トンカチがありませんでした。買うのもアレだし。 煮込み1回目

豚バラをいい感じの大きさにしてタコ糸で巻いていきます。タコ糸が足りなくなったりもしましたが、それはそれ、これはこれ。 チャーシュー仕込み

昼ごはんとして振る舞われた豚バラの炒めた何か(調理中)です。唐辛子の効いたからい何かで、美味しかったです。 からくておいしいなにか

煮込み

チャーシュー、背脂を入れて煮込みます。ひたすら。 煮込みを始めた

豚バラの何かでは物足りなく、また肉も潤沢なので、薄く切って生姜焼きを作り始めた様子です。脂ですごくすべる。 薄く切って 生姜焼き

調理はほとんどりゅうのすけがやっています。この辺りからといくんが寝始め、僕はHuluで仮面ライダーやら俺物語やらを観つつたまに調理を手伝ったりしました。

太麺です。 太麺

ぐつぐつと煮えています。水がどんどん減っていくのでどんどん足していきます。 沸いた

頃合いを見て、香味野菜を入れてさらにさらに煮込みます。排水口用のネットに入っていますが、後で取り出しやすくするためです。(参考: 第五回家二郎報告会 - おともだちティータイム) 煮込んでいます 煮込んでいますよ 香味野菜を入れて煮込みます

野菜を切って茹でます。どう考えても、もやし2kgは買いすぎた。 茹で野菜

チャーシューをカエシに漬け込みます。これは一旦取り出したもの。 チャーシューカエシ

提供

いよいよ麺を茹でていきます。ちなみにとんこつを煮込み始めたのが12時頃で、この写真は16時半頃だったので、ざっと4時間はいろいろやっていたことになります。ガス代すごそう。 麺を茹でる

どんぶりにカエシ、味の素を入れておきます。雰囲気が出てきました。 カエシと味の素

茹で上がった麺をよそっています。 メンヨソイ

完成

野菜、煮玉子、コールを聞いて完成!!突然出てきた煮玉子は僕が木曜から仕込んでいたものです。 二郎

僕は「二郎」と名のつくラーメン店には行ったことがないので比較はできませんが、おいしい、おいしいがこれ量が、という感想です。麺は半分余ったし、もやしが冷蔵庫を占領しました。

感想

よかった。けれど次があるならもっと上手くやれるだろう。僕らは人間で、学び、成長することができる。次に活かそう。

まず、材料のみきわめ。あと、チャーシューはすこし固かったかな。これは各人で納得のいくものをつくって持ち寄る方式にしてもいいかもしれない。地味に大事なのが、いい写真を撮る能力。

あと、PCDJコントローラーが欲しくなった。

2015年06月07日
2015年05月04日

#kosen10s LT 01に参加した

kosen10s

kosen10’s LTとは

高専をついこの間卒業したイケてる人たちでLT会! 本イベントは2010年に高専に入学され、「順調であれば」つい先日本科を卒業された高専出身者で集まってLT会をするものです

というイベントです。当日はこのTシャツを着て参加しました。 うなすけTシャツ

参加した感想

割りと軽いノリで参加したつもりが、あれよあれよとすごい人たち(でも同い年)が参加し始めて、提案者が7人位の参加者になると思っていたところを結局16人も集まり、「わあなんだこのメンバー」となりました。 ルーターをいじって遊ぶやら、大規模ネットワーク構築するやら、Sony社員やら、噴水が溢れるやら、IMAGINE THE FUTUREやら、アイカツやらで、ただ濃いだけにとどまらず技術的にも高度な人たちが集まりました。 ただ、萎縮するなんてことはなく、そもそも同級生ですから、いつの間にか敬語が外れていき、最後はなんかワイワイという感じになっていました。

自己紹介LTは軽め、自由LTでネタをぶち込んでいこうと思って準備してきたのですが、自己紹介LTからとんでもないものを仕込んでくる人が多く、こりゃやべえなとなりましたが、Tシャツなどのおかげか一応はウケて良かったです。 ネタをぶち込んだ自由LTは反応が良かったですが、次のルーター芸人の発表に完全に持って行かれた感じはあります。発表スライドは後ほど追記します。

自分が今まで関わって来なかった高専ベンチャーのこともそうですが、こういった集まりに参加すると、自分の知らなかった世界、逆に自分は知っているけどみんなは知らない世界というものがわかります。 「人脈を広げる」というわけではないですが、いろんな人と会ってみるのはとても良いことです。同じプログラミングが好き同士と思っていたつもりが全く違う方向を見ていたり、初対面の人との意外な共通点で盛り上がれたりと、得るものは名刺だけではありません。 確かに、交通費や参加費、様々な障壁はあります。心理的な壁もあることでしょう。ですが、障壁の向こうで得るものは大きいです。自分に乗り越えられそうな壁から壊していくのがいいと思います。

地理的な障壁で言えば、福井では「福井技術者の集い」が、定期的に開催されつつあります。是非参加してみてください。

発表スライド

自己紹介 つくったもの

発表者シャッフルについて

あらや君と見せ合ったのですが、eachせずともそのままputsしてしまえばよかったな、と思いました。

2015年05月04日
2015年04月26日

M3-2015春に行ってきた

買ったCD

行くのを決めたのは2日前

M3、存在は知っていたけど、僕の中ではコミケほどの存在感はなかった。けれども行ってみたいイベントの一つではあった。しかし、コミケと違って、僕はM3の開催時期を知らなかったのだ。

超ボマスとリリパとM3なんでスケジュール被ってしまったんや………

— HolyGrail (@HolyGrail) 2015, 4月 23

このツイートを見て、「あ、M3ってもうすぐなんだ。行かなきゃ」となった。しかし給料もまだだし、机や断線したイヤホンなど買わなければいけないものがいっぱいあるので迷っている、と先輩に言ったところ「そういうのは行って後悔した方がいい」とのことなので、行くことにした。カタログの事前販売はもう無くて、当日買うしかなかった。

買ったもの

Hybrid Monster

Hybrid Monster これはプチョヘンザ案件ですよ。

ABSOLUTE

ABSOLUTE 絶対硬核電踊楽

GAT04

GAT04

元気くんバンドEP

元気くんバンドEP

Candy Star

Candy Star

IRREGULAR NATION

IRREGULAR NATION 禁忌に触れる快感

dreamless wanderer

dreamless wanderer

paroxysm

paroxysm

sudden shower

sudden shower

SYNERGY-STYLE VOL.4

SYNERGY-STYLE VOL.4

趣味がわかる。事前チェックとか何もせずに行って、よくわからぬまま買ってしまって良くないと思った。次行くときは入念にチェックしてから行こう。

2015年04月26日
2015年04月17日

tmixでオリジナルTシャツを作った

あなたと違って、僕は人見知りなんですよ

先日開催されたRails寺子屋にも参加したりと、東京に来たからには様々なイベントに参加したい僕なのですが、生憎と人見知りです。知らない人に話しかけるのはとても緊張するけど、かと言って誰とも話したくないわけではなく、積極的に会話をできればなぁと思っています。さっさとなんでもいいから誰かに話しかければいいのに、困ったものです。

何かきっかけがあれば話せるんだけどって言い訳をする

そうです。例えば、使っているパソコンやエディタがいっしょだったり、有名企業のステッカーが貼ってあったり、どう考えても真横にいるこの人が今俺のツイートをふぁぼったよな……だったり、なにか話しかけるきっかけがあればいいのです。あと、いつも見知ったtwitterのアイコンと本人が一致しないのも要因の一つじゃないでしょうか。「あの人、たぶん○○さんだと思うけど違ってたらどうしよう……」と不安になって話しかけられない、なんてこともあります。

きっかけになって、twitterとかの特定がしやすければ良いんですよ

となると、手っ取り早く特徴づけられて、かつ特定しやすさを得たいというわけです。そんなことで悩んでいると、隣の席の開発部長がこんなことを言いました。

「そういえば僕、オリジナルTシャツをWEBで簡単に作れるtmixっていう便利なサービスを知ってるよ」

……そうか。突飛なTシャツを着ていたり、またはTシャツにtwitterアイコンなんかプリントされていると、課題が一気に解決する。ありがとうございます部長。ありがとうtmix。最高のサービスだ。

オリジナルTシャツを作ってみる

デザイン

早速、twitterアイコンTシャツと、話題になったアレでTシャツを作ってみました。

twitterアイコン 基板もやし

こんなTシャツ着てたら話しかけざるを得ないでしょう。いや、むしろ怖くて近寄れないかもしれない……とデザインしながら考えましたが、まあ、良いネタになるでしょう。皆さん笑ってくれると思います。たぶん。

発注

発注はよくあるネットショップ(amazonとか)と同じように、住所を入力、支払い方法を選択してOK、という感じです。郵便番号を入力すると住所が自動で入るけど、逆の、住所から郵便番号を自動入力もあったら便利かな、と思ったりしました。よくあるでしょう郵便番号のほうが思い出せないこと。ない?

あ、これで作る作業終わりか。なんて手軽なんだろう!tmixって素晴らしいサービスだなぁ!!サイコーだ!

到着

こんなふうに、オリジナルの袋に入ってます。 袋

表側が、こんな感じ。 表

印刷はこんな具合。 印刷

これが裏です。 裏

文字の方も。 文字T

綺麗に印刷できてますね。 印刷が綺麗

近寄って見ると、こんなふうになります。長い間着ていると、この印刷がだんだん薄くなっていきます(先輩の着ているのを見せてもらいました) 寄って見る

みんなもオリジナルTシャツを作ろう

こんな感じのTシャツが、デザイン?時間10分で作れてしまうんだからお得ですよね。着たいかどうかは別ですが。

というわけで、なにか緩い感じのイベントがあった時には、忘れなければこれらを着ていくので気軽に話しかけてください。

2015年04月17日
新しい投稿
古い投稿