GCPUG Kyoto#2 でLTしてきた

GCPUG Kyoto#2 でLTをさせていただきました.

タイトルは「GKE 安さの限界へ挑む」ということで,GCP登録時にもらえる300ドルを使ってどうやって安くGKEで遊ぶかという内容で発表してきました.

もともと,このネタは先輩からいただいたもので,個人的にも興味深い内容だったのでこの機会を生かして検証を行いLTとしてまとめてみました.

L7ロードバランサを実現することができず残念でしたが,300ドル以内でKubernetesクラスタを一年間運用できることがわかり,よかったのではないかと思います.

スライド


ところでこのLTの本題の前にあくあたん工房の紹介をさせていただいたのですが,あとで他の参加者の方から「あくあたん工房,知ってるよ」と声をかけていただきうれしかったです.

これからもイベントなどで知名度を上げながら,メンバーの活躍の機会につながればいいなと思いましたまる.

neovimを入れてみた

きっかけ

neovimはvimより良い(諸説あり)と耳にしたのでとりあえず試してみようと思いました.

ちなみに普段使ってるのはIntelliJ(Ultimateも学生はタダ!学生最高!!).

環境

  • Ubuntu 18.04 LTS
  • neovim 0.3.1
  • pyenv 1.2.8
  • python 2.7.15
  • python3 3.6.7

参考

こちらの記事を参考にさせていただきました.感謝.

poyo.hatenablog.jp

neovimをインストールする

公式ページを見ながらやっていきます.

github.com

sudo apt update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt-get update
sudo apt-get install neovim

シェルを再読込してnvim --versionがうまく機能すれば成功です.

python用ライブラリを入れる

普段利用している,pyenvを利用してpythonの任意のバージョンのインストールします(ここでは2.7.15と3.7.1).

pyenv isntall 2.7.15 3.7.1
pyenv global 2.7.15 3.7.1

# pyenv-virtualenvを利用する場合
pyenv isntall 2.7.15 3.7.1
pyenv virtualenv 2.7.15 neovim2
pyenv virtualenv 3.7.1 neovim3
pyenv global neovim2 neovim3

neovimのpython用ライブラリをインストールします.

pip install --upgrade neovim
pip3 install --upgrade neovim

設定ファイルをつくる

環境変数を設定します.自分はfish使いなのでconfig.fishに以下を追加します.

set -x XDG_CONFIG_HOME $HOME/.config
set -x XDG_CACHE_HOME $HOME/.cache

設定ファイルを作成します.

mkdir ~/.config/nvim
touch ~/.config/nvim/init.vim

aliasを設定する.

config.fishに追加します

alias vi 'nvim'
alias vim 'nvim'

プラグインを管理する

プラグイン管理はdein.vim一択のようなのでそれを使っていきたいと思います. 我に暗黒の力を!!!

github.com

インストール

READMEを見ながらやっていきます.インストール先はREADMEの記述通り,~./cacheにしました.

curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.cache/dein

# install.shを消しとく
rm installer.sh

tomlに記述していく

init.vimに設定を追記

さっき手に入れた暗黒の力を解放するためにinit.vimに設定を記述します.

" ============== dein =================
" Pythonインタプリタへのパスを指定
let g:python3_host_prog = '/home/shanpu/.anyenv/envs/pyenv/shims/python3'
let g:python_host_prog = '/home/shanpu/.anyenv/envs/pyenv/shims/python'


" 各種ファイルへのパス
let s:dein_cache_dir = $XDG_CACHE_HOME . '/dein'
let s:dein_config_dir = $XDG_CONFIG_HOME . '/nvim'
let s:dein_repo_dir = s:dein_cache_dir . '/repos/github.com/Shougo/dein.vim'
let s:toml = s:dein_config_dir . '/dein.toml'
let s:toml_lazy = s:dein_config_dir . '/dein_lazy.toml'

"dein Scripts-----------------------------
if &compatible
  set nocompatible
endif

" Required:
let &runtimepath = s:dein_repo_dir .",". &runtimepath

" Required:
if dein#load_state(s:dein_cache_dir)
  call dein#begin(s:dein_cache_dir)

  " Let dein manage dein
  " Required:
  call dein#add(s:dein_repo_dir)
  
  " tomlファイルからプラグインのリストをロードしキャッシュする
  call dein#load_toml(s:toml, {'lazy': 0})
  call dein#load_toml(s:toml_lazy, {'lazy': 1})
  
  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

"End dein Scripts-------------------------

dein.tomlを編集

~/.config/nvim/dein.tomlに管理するプラグインを記述,インサートモード時に使うなど遅延して読み込むプラグイン~/.config/nvim/dein_lazy.tomlに記述していきます.

どんなプラグインを入れるかは選択肢は無限大ですが,ここでは試しにdein.tomlに適当に記述した例を紹介します.dein_lazy.tomlの内容は割愛しますが(そのうちプラグインの特集記事を書くかもしれない)記法はdein.toml同様です.

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'Shougo/vimproc.vim'
hook_post_update = '''
    if dein#util#_is_windows()
        let cmd = 'tools\\update-dll-mingw'
    elseif dein#util#_is_cygwin()
        let cmd = 'make -f make_cygwin.mak'
    elseif executable('gmake')
        let cmd = 'gmake'
    else
        let cmd = 'make'
    endif
  let g:dein#plugin.build = cmd
'''

カラースキーム

スキーム探しに以下のサイトが役に立ちます.今回はhybridを使ってみることにしました.

vimcolors.com

さいごに

適当にプラグイン入れたりしたら見た目も使い心地も良くなりました.プラグインの設定が固まってきたら,また記事でも書こうと思います(書くとは言ってない).

f:id:tech_shanpu:20190102212802p:plain
とりあえずこんなかんじで

なお設定ファイルはGithubで管理しているのでよければ活用してください.

github.com

KansaiLTに登壇した

今日はさくらインターネットさんの大阪オフィスで行われたKansaiLTにてLT発表者として登壇させていただきました.

KansaiLT 2nd @さくらインターネット - connpass

LTでは何をテーマに話そうか悩んだのですが,2018年ももう少しで終わるということで,今年ハッカソン等で多く取り組んだチーム開発をテーマにしました.

趣味のチーム開発においてGitHubのルールはどの程度厳しく設定すべきなのか,自分の経験に基づいた独断と偏見で自由に語らさせていただきました.笑

スライド↓

最後の結果発表ではなんと「ベスト オブ プレゼンター賞」をいただきました!

驚きすぎて,前に出たときに何も面白いことを言えませんでした...

f:id:tech_shanpu:20181222210110j:plain
投票してくださった皆さんありがとうございます!

KansaiLTは今回が初めての参加でしたが,運営の方が親切で雰囲気もよく,とてもよいイベントでした.また日程が合えば参加させていただきたいなと思います.

f:id:tech_shanpu:20181222210012j:plain
オフィスからの眺めがよい

Kubernetesを勉強してきた

先日,CyberAgentさん主催のインターンイベントで,Kubernetes完全ガイドの著者である青山さんによるk8sハンズオンを受けてきました.k8sは前々から気になっていたもののなかなか手を出せずにいたので,このような機会に恵まれてとてもうれしかったです. f:id:tech_shanpu:20181205215733j:plain


当日はGKE上のクラスタをもらって,CKAD(Certified Kubernetes Application Developer)の問題を解けるレベルを目標に始まりました.

ハンズオン中分からないことがあればアドテク本部のエンジニアの方がサポートしてくださり,とても分かりやすかったです.

講義の最後にはCKAD模擬試験があり(問題はこちら),優秀者にはCKADの受験料を全額補助していただける,というなんとも太っ腹な特典がありました(自分は残念ながらその特典を得られず…).

同年代のエンジニアとも,いろいろ話すことができ,とても刺激的で充実した二日間でした.


今度はkubernetesのラズパイ包みに挑戦したい…

f:id:tech_shanpu:20181205221329j:plain
CAさんからの粋な差し入れ

AdventなCalendarに記事を載せていただいた

自分の所属しているあくあたん工房アドベントカレンダーに記事を載せていただきました.

タイトルは「ハッカソンを攻略する」ということでハッカソンについて書きました. 参加経験のある人だけでなく,ハッカソンて実際何をするのかわからない,なんかつらそうという理由でためらっている人も一度読んでいただけたらなと思います.

周りのハッカソン人口を増やしたい

自作キーボードの沼に突っ込んだ

きっかけ

 先輩の使っていたMint60というキーボードに一目ぼれして気が付いたらポチっていました.

Mint60とは

ゆかりさんという方が販売されている左右分離型のキーボードです.詳しくは以下のリンク先の記事を見ていただければと思います.自分は普段電子工作をしないド素人なのですが,販売されているスターターセットはとても組み立てやすく非常に良かったです.

自分はBlue&Blackを選んだのですが,とてつもなくかっこいい…

eucalyn.hatenadiary.jp

組み立てについて

基本的にはゆかりさんの記事に従って組み立てれば完成しますが,個人的に注意するところとしては

  • ProMicro用ピンヘッダが少しずれるだけでProMicroがはまりにくくなる
  • スタビライザのカチャカチャ音がわりと気になる

というところです.

一つ目については公式記事ではブレッドボードを使用した方法が紹介されていますが,僕は持っていなかったのでマスキングテープで固定したところ少しずれてしまいあとで苦労しました… はんだ付けする前にきちんとProMicroがはまるのか確認することをお勧めします.

二つ目のカチャカチャ音についてはsuper lube(こちら)をスタビライザを組み立てるときにパーツの接着面塗ったところ,音も打感もとてもよくなったのでお勧めです.

キーマップを変更したい

Mint60ではあらかじめデフォルトのファームウェアが焼かれているためにそのままでも使えるのですが,せっかくなのでキーマップも自分好みに変えてみたいと思います.

環境

  • Windows 10pro ver.1803
  • Docker version 18.06.1-ce, build e68fc7a
  • qmk_toolbox 0.0.9

実際にやってみる

今回は以下の記事を参考にさせていただきながら,dockerでビルドする方法でいこうと思います(windowsは何かと環境の問題でつまづきがちなので環境依存を減らしたい…).

poyo.hatenablog.jp

流れとしては以下のようになります.

  1. QMK Firmwareリポジトリをクローンする.
  2. デフォルトのキーマップを参考に自分好みにキーマップを変更する.
  3. ビルドする
  4. ファームウェアに焼く

QMK Firmwareの公式ページはこちらです.

docs.qmk.fm

QMK Firmwareリポジトリをクローンする

自分の場合は変更したあとリモートリポジトリにも保存しておきたかったのでフォークしました.

git clone https://github.com/qmk/qmk_firmware

自分好みにキーマップを変更する

cd qmk_firmware
# {{ KEYMAP_NAME }}のところは好きな名前を入力してください.
cp -r keyboards/mint60/keymaps/default keyboards/mint60/keymaps/{{ KEYMAP_NAME }}

キーマップについて主に変更するのはkeymap.cの38行目からのconst uint16_t PROGMEM keymapsの部分です.添え字の[0]や[1]はレイヤー番号で[1]の部分はMO(1)キー(Fnキーの場所)を押しながら押したときのキーマップです. キーコードは公式サイトのキーコードのページ(こちら)にまとめられているので確認してみてください.

ビルドする

dockerを使ってビルドします.公式サイトにも書いてありますがWindows Dockerでは$('pwd')が使えないようなので完全パスで記述します.なお完了したあとコンテナを削除しておいてほしいので--rmオプションを付けています.

# 通常
docker run --rm -e keymap={{ KEYMAP_NAME }} -e keyboard=mint60 -v $('pwd'):/qmk edasque/qmk_firmware
# Windowsはこちら
docker run --rm -e keymap={{ KEYMAP_NAME }} -e keyboard=mint60 -v D:/Users/Sacapuces/Documents/Repositories/qmk_firmware:/qmk edasque/qmk_firmware

実行するとビルドが始まります.そこそこ時間がかかるのでコーヒーでも淹れながら待ちましょう. 完了すると.buildディレクトリ以下にビルドされたファイルが生成されます.

ファームウェアに焼く

qmk_toolboxを使いました.以下のページから任意のバージョンのqmk_toolbox.exeをインストールします.

github.com

qmk_toolbox.exe実行したあとLocal file.hexファイルの場所を指定します.

最後にキーボード裏のリセットボタンを押した後にtoolbox内のflashを押すと書き込まれます.

最後に

 肩が開いて楽になった気がする.