思考実験室

日々のつれづれ

京都旅行(201810)

京都旅行に行った。
美味しいお店、あまり観光はせず、ただただ食してばっかりだったけど、これはこれでいい楽しみ方なのかなと思った。

新福菜館 本店

黒いスープ。学生時代は行列を見つつスルーしていたあの店に突撃。醤油ラーメンは見た目ほどしょっぱくなく、気をつけないとスープを飲みすぎてしまう。何よりチャーハンがうまい。ラーメン×チャーハン、この組み合わせは、ストロングスタイル。

http://www.trip.kyoto.jp/plan/ramen_2016_0628/22/

手打ちそばみな川

塩をつけて食べる天ぷらはやはり贅沢の極み。と思ったら1800円と案外高くない。お蕎麦はのどごしがよく、つるつると食べられるのが良い。 奥さまは鴨南蛮を頼んでいた。こちらは汁がめちゃんこ美味い。秋のよるに優しい味。

minagawa-kyooike.owst.jp

京都ロビンソン 烏丸

ついついパンの匂いにひかれてしまう。たまごサンドを食べようと思っていたのに、行列に並んでいた。焼き立てのパンが食べ放題、それに並ばない理由はないよね。

かぼちゃのスープは素材の甘みを感じるのがグッド。これをパンに付けて食べて、満足。メインの鶏肉のディッシュ、に合わすのもパン。パンパンパン。メインはやはりパン。

やはり焼き立ては美味いなあ。甘いパンも、惣菜パンも、一口、二口で食べられるような大きさなので、いろいろな種類を食べられる。しかしそれでも食べきれないほどに、たくさんの種類。大満足でした。

おうちごはん中島屋

ポテトサラダ、まずこれが目についた。ポテトサラダが美味しいお店に外れはない。
それを食べながら、自家製ジンジャーで作ったシャンディガフをいただく。
牛すじ大根はだし汁まで飲む。絶品。
厚揚げの焼き物、豆腐をわざわざその場で揚げてから、さらに焼く。その手間に感服し、味にも感服。
秋の味覚、サンマはふっくらとした仕上がり。途中で頼んだご飯が進む。
からしレンコンの天ぷらは予測どおりの味、これはアルコールとちょうどいい。
唐揚げは、このぐらいの大きさのボリュームがうれしい。

ちびちびと、クリームチーズの味噌漬けを食べ、お酒を飲みながら、歓談。
ゆったりと、時間が過ぎていきます。

卵かけご飯。
鰹節は足りなくったらかけてください。つまり、無限鰹節。
最後の締めにTKGはいいじゃない。

ouchi-nakashimaya.com

京都はうまいもんでいっぱいである。
以上。

続けることに意味があるんだろうな、ということについて

なんかポエムっぽいタイトル。

今年で30歳になり、責任も増えて、でも髪の毛なんかは減っていくし、お金もたまらないしでああしんどいな、生きるって、ってセンチメンタルになります。 なんかポエムっぽいと書きましたが、たぶんポエムです。

近くのプールには50mの屋外プールがあって、今日泳いできた。 夏の終わり、それは生ぬるい水の中ではなくて、入ったときに冷たいと感じる温度。 それは僕が10代、20代のころは、毎日のように泳いでいたので、ただ泳ぐだけではつらいという感情を抱かなかった。 だけど体は正直者だから、今ではたった200mを泳いだだけで、腕が上がらない、回らない様になっている。

少しづつ、ゆっくりと泳ぎつつ、30分ほど水の中で過ごしたあとはプールサイドで他の利用者の様子を眺めていた。 親子連れ、小さい子どもたちはボールで遊んでいて、お父さんは子供の面倒を見ていた。お母さんの姿は少ない。東京だからだろう、日に焼けることを嫌う女性が多いから、お父さんに子供の面倒を任せたのだろう。

僕はプールサイドで思い出していた。四六時中プールで過ごした日々、日に焼けた肌は焦げて色を変え、日に当たらない場所との境界がくっきり見える、引き締まった若い体。 だけではなく、そのときの、何時間泳いでも疲れなど感じないようなあの頃。若さと体力にあふれるとは、まさにそれである。 日焼けした肌はもう焼けることもなく、かれこれ5年以上も日にあたっていない肌は白い。 そして、あの頃の体力も筋力も、消えてしまった。

もう少し、例えば週3回は体力維持をしていれば変わっていたのかもしれない。が、おそらくそれをしなかったのは、続けないことを選択したから。 一方で、働きだしても、仕事を、たとえばプログラミングの勉強もしかり、最新技術の動向をチェックするなど、それは少しではあるけれど続けている。 やめるのは簡単だけれど、じゃあいつやめるのだろう。 でも、やめる必要はないのだろう。続けていけばいいのだろう。やめる必要はないはずだ。

昔のことを記録する。 たとえば2012年に書いた恥ずかしくもなる過去の話。 もしかしたらそれが残っているのはいいことなのかもしれない。 なんて、今日ぼんやりしてたら思ったのでブログに残します。 中身なんて、何もないよ、それでいいでしょ。

vimrcを晒す

とりあえず晒してみる。 お客さん先とかで、普段使ってる設定を知りたいとき用のメモ。 あとオススメのプラグイン教えてください。

"deinが入っているとsyntax onが効かないらしい。deinの後に書くとよいらしい。
"syntax on
"backspaceを有効にする
set backspace=indent,eol,start
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2
set number

"NERDTreeのキーマップ:vimを開いたときに、Ctrl+eでNERDTreeを開く
map <silent><C-e> :NERDTreeToggle<CR>

"コピーアンドペーストをしたときにvimが勝手に改行するのを制御する
if &term =~ "xterm"
    let &t_ti .= "\e[?2004h"
    let &t_te .= "\e[?2004l"
    let &pastetoggle = "\e[201~"
    
    function XTermPasteBegin(ret)
      set paste
      return a:ret
    endfunction

    noremap <special> <expr> <Esc>[200~ XTermPasteBegin("0i")
    inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
    cnoremap <special> <Esc>[200~ <nop>
    cnoremap <special> <Esc>[201~ <nop>
endif

" Note: Skip initialization for vim-tiny or vim-small.
if 0 | endif

if &compatible
  set nocompatible               " Be iMproved
endif

if has("mac")
  " lua is installed by homebrew
  set luadll=/usr/local/Cellar/lua/5.2.4_1/lib/liblua.dylib
end


" dein
" Vim起動完了時にインストール
augroup PluginInstall
  autocmd!
  autocmd VimEnter * if dein#check_install() | call dein#install() | endif
augroup END

" 各プラグインをインストールするディレクトリ
let s:plugin_dir = expand('~/.vim/')

" dein.vimをインストールするディレクトリをランタイムパスへ追加
let s:dein_dir = s:plugin_dir . 'repos/github.com/Shougo/dein.vim'
execute 'set runtimepath+=' . s:dein_dir

" dein.vimがまだ入ってなければ 最初に git clone
if !isdirectory(s:dein_dir)
  call mkdir(s:dein_dir, 'p')
  silent execute printf('!git clone %s %s', 'https://github.com/Shougo/dein.vim', s:dein_dir)
endif

"dein plugin settings
if dein#load_state(s:plugin_dir)
  call dein#begin(s:plugin_dir)
endif

" ここからインストールするプラグイン
call dein#add('Shougo/dein.vim')
call dein#add('Shougo/neocomplcache.vim')
call dein#add('Shougo/neocomplcache-rsense.vim')
call dein#end()

syntax on 


" neocomplcacheの設定
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0

" Use neocomplcache.
let g:neocomplcache_enable_at_startup = 1

" Use smartcase.
let g:neocomplcache_enable_smart_case = 1

" Set minimum syntax keyword length.
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'

let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1

" Rsense用の設定
if !exists('g:neocomplcache_omni_patterns')
    let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::'
autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete

"rsenseのインストールフォルダがデフォルトと異なるので設定
let g:rsenseHome = expand("/Users/username/.rbenv/shims/rsense")
let g:rsenseUseOmniFunc = 1

VBScriptでCreateObject関数を使ってみよう

バッチファイルでの処理ではどうにもしっくりこない。セキュリティポリシーの関係でどうしてもPowerShellが使えない。
そんなときに使いたくないけど使えるのがVBScriptWindowsの環境であればいつだってメモ帳でスクリプトが書けるのです()。

バッチファイルだと行えないオブジェクトの参照も、CreateObject関数を用いることで、かんたんにExcelIEの自動操作を行えます。CreateObject関数は、VBAのコードなどで見覚えがあるという方は多いかとは思いますが、今回用いるVBScriptでも使用できます。

Excelに記述されたマクロを実行させてみましょう。

' oExcel変数を宣言し、Excelを参照させる
Dim oExcel
Set oExcel = CreateObject("Excel.Application")

' ブックを開き、test_macroを実行する
oExcel.Workbooks.open "C:\test\test.xlsm"
oExcel.Run "test_macro"
' Excelマクロ側でApplication.Quitと書き起動させたアプリケーション側で制御すると良い

他にはTeraTermのマクロなども起動できたりします。
TeraTermマクロはパラメータを渡して、実行させることができるため、VBScriptで予めパラメータを編集しておくことでより柔軟なプログラミングも可能です。
が、まずは平易なパラメータを渡してみましょう。

Dim oShell
Set oShell = CreateObject("WScript.Shell")

' TeraTermマクロに渡す引数
' 引数1:test.ttl > 起動するマクロ名
' 引数2:test_user
' コマンドプロンプトで、以下のように実行するのと同じ内容になります
' > "C:\teraterm\ttpmacro" "test.ttl" "test_user"
command = """C:\teraterm\ttpmacro"" ""test.ttl"" ""test_user"""
oShell.Run command

もちろん正規表現も備えています。

Dim fso, regexp, folder, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set regexp = CreateObject("VBScript.RegExp")

regexp.Pattern = ".*.txt"
Set folder = fso.GetFolder("C:\test")

' C:\testにある拡張子(.txt)のファイルを削除する
For Each file in folder.Files
  If regexp.Test (file.Name) Then
    ' fileオブジェクトの参照は削除により破棄されてしまうので先に名前を取得
    Dim name: name = file.Name 
    fso.DeleteFile "C:\test" & "\" & file.Name, True
    MsgBox name & "を削除しました"
  End If
Next

VBScriptに書いておくことで、わざわざExcelを開きマクロを実行させる必要がなくなるため、面倒くさがりな人たちもニッコリなのではないかと思います。
例えばTeraTermの接続先やユーザーの情報をExcelから取得し、その後TeraTermマクロを実行して接続先からデータを取得し、さらに別のExcelマクロを実行させてデータの自動編集などを行うなどもできるでしょう。
以上のように、CreateObject関数を用いてVBScriptに包んでおくことでワンクリックでやってくれるスクリプトが作成でき、レガシーでセキュアな現場でもちょっとは楽になるかもしれません。

フィロソフィーのダンス 日向ハル聖誕祭 @ 渋谷O-WEST

フィロソフィーのダンス日向ハルさんの生誕祭でした。 セットリストは以下の通りです。

1 すききらいアンチノミー
2 エポケーチャンス
3 VIVA運命
4 アイドル・フィロソフィー
5 ジャスト・メモリー
6 ダンス・ファウンダー

[ハルちゃんの今後]
[ハルちゃんのこんな話]
[プレゼントコーナー]

7 喝采(ちあきなおみ)
8 接吻 Kiss(ORIGINAL LOVE)
9 ロマンスの神様(広瀬香美)
10 SHAKE(SMAP)

en.1 いつか大人になって
en.2 ベスト・フォー

カッティングギターが気持ちいい「すききらいアンチノミー」から始まった日向ハル生誕祭、「エポケーチャンス」や「VIVA運命」、「アイドルフィロソフィー」といったアッパーでハルちゃんのボーカルが際立つ曲でフロアが揺れる。「ジャスト・メモリーズ」で小休止したと思いきや「ダンス・ファウンダー」とがっしり詰め込んだ前半戦に、思わず笑みと泪があふれてしまいます。

小さい身体でありながら、その逞しく響き渡る声に、何度も何度も救われたのだけれど、本当にハルちゃんが、フィロソフィーのダンスがいてよかったと思いました。

新しい痛みね
でもあなたにとってみたら
何回目の思い出なの?

嘘とか、涙があったわけじゃないけれど
「もっといい恋があるよ」
そんなセリフなら、胸にしまって?

「ジャスト・メモリーズ」のこの歌詞は、ある意味残酷な歌詞だと思います。
読めば読むほどにバッドエンド、ハッピーエンドではなく、バッドエンドだった。そんな歌詞です。しかしそこには、ちゃんと救いもあります。

それがまた「どこか」重なるそんな日までは

面影を追いかけているわけではないけれど、何か急にふとした瞬間に、「楽しかったあの日々」を思い出すように。重ねているわけではないけれども、それはフラッシュバックのように襲ってくるように。バッドエンドでも、それに出会えたことは間違いじゃないから。

そして「ダンス・ファウンダー」の歌詞。

「ただのよかった過去」なんてないんだ
誰もまだ知らない世界で踊れ

そう、「ただのよかった過去」なんてないんだ、見つけたよ、新しいダンスを。

・・・

ハルちゃんは衣装替えのため一旦捌け、その間メンバーがハルちゃんのここだけの話をすることになりました。

おとはすはハルちゃんが食事中に会話をすると、よくご飯つぶやら唾が飛んでくると言っていました。マリリちゃんは、当初アイドルって何って悩んでいたハルちゃんが、今や「ゴリゴリのゴリ」なんて言うような正直な気持ちでやってくれててよかったと言っていました。あんぬちゃんは、ベボガとのコラボのとき、脱衣場で全裸を見せつけてくるといったエピソードを。豪快、豪胆でありながら実は繊細なところもあるハルちゃんの一面が見えた気がしました。

・・・

そして衣装替え後、バンドセットにて始まった「喝采」、「接吻 Kiss」のしっとりとした曲。まさかORIGINAL LOVEを推しの生誕で聴けるとは思いませんでした笑。そして広瀬香美さんの「ロマンスの神様」を披露。しっかりとしたボーカル力はまさに圧巻で、本当に心地よい。最後はおとはす、マリリちゃん、あんぬちゃんを加え「SHAKE」を披露しステージを捌けました。

アンコールではなく「ゴーリゴリ」というコールで会場一体となってハルちゃんを求め、バンドセットにてソロ曲「いつか大人になって」を披露。最後に4人で「ベスト・フォー」を歌い上げ、最高の生誕祭となりました。

セットリストはもちろん、改めて日向ハルちゃんの人としての素晴らしさを感じた一日でした。「日向ハル推しと胸を張れるようなアイドルになる」といったけど、少なくとも僕はハルちゃんを推しててよかったといえるよ。ハルちゃんを見つけられて良かったよ、ありがとうね。

2018年上半期の目標

あけましておめでとうございます。
2018年になりました。

エンジニアとしてちゃんと成長していかなきゃいけないと思う今日この頃。
そのためにもまずは技術ブログを書け、といった『SOFT SKILLS』が思い浮かびます。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

クリアできる目標設定がまずは大事。ということで、このブログに書き記しておきたいと思います。
基本情報技術者
Oracle Certified Java Programmer, Silver SE 8
Ruby Association Certified Ruby Programmer Silver

基本情報とか取ってないんかい、と今更ながらに思うのですが、ほんと取っておけば良かったな...、使うことはないんだろうけど。
(そもそも先輩社員も基本情報持っている人がいない、というぬるい環境にいたせいで、いろいろと麻痺しているのかもしれません。会社の戦略としても、個人の自助努力で取れればいいよではなく、昇給・賞与の条件とし、取らせるべきものとして設定しているところは多いかと。つまり、人を送ってマージンさえ取れていればそれでいいや、という経営方針なので個々の知識・スキルの向上については関心がないという...ああ、愚痴ばっかりになっちゃった)

上記の資格をまずは取得しつつ、3月以降の転職先で携わる案件で使う言語やフレームワークの知識(PHPをやるらしい、と聞きました)を学びながら、しっかりと力を蓄えたいと思います。

本年もよろしくお願いします。