うちの開発グループにインターンシップできている二度寝大好きインターンの師匠がいることもあり、インターン懇親会に参加した。
Slack bot 作っている人2人いた。 自分のチームの場合、実際にサービスまわりの開発を担当してもらうことも多いのだけれど、bot 開発も開発環境改善に役立つしインターンシップ期間にあわせやすいしケースによっては結構いいかも。
インターンシップの方の記事:
昨日に引き続き今日も Developers Summit 2015 で目黒雅叙園へ。セッション会場では(一般人は)机が無かったので、ノート PC は家に置いてきた。
デブサミはほとんどのセッションが撮影可なんだけれど、スライドを公開すると発表者が言っているのに全スライドをシャッターの電子音を鳴らしてながら撮り続ける人がいて昨日は結構ウザかった。
そういった声は多かったようで、今日は進行の人がシャッター音に配慮するように注意を促していてちょっとは減った感じだった。撮りたかったら無音カメラアプリをインストールしてくるとかした方が良いと思う。
会場でばったり zakwa 氏と再会。まさか来ているとは知らなくてびっくり。今はデータ解析やっているとかいっていたかな。良い再会があったのがデブサミ2日目の一番の収穫。こんど同窓会やりましょう。
朝一番のセッションは昨日の朝に比べて遅い人出。
Docker や Ansible などの話。いろいろ模索し続けている話。インフラ整備専任者が欲しいとのこと。ローカルホストに開発環境を簡単に構築できるというのは良いのだけれど、やはり管理コストが高い印象。
個人的にはやはりどこかのラックに自分の VM がある方が使う側も楽な気がしている。
事前の注意とか言い訳についての前置きが長かった。宣伝セッション。
お昼から帰ってきて会場に行ったら、既にまさかの満席だった。あきらめてソファで本を読んだり、kintone CAFE でコーヒー飲んだり。
プラットフォームの刷新にあたり既存のサービスや機能をきちんと UML を用いてモデリングしなおしてあるべき姿の議論を行ったというのが良いなと。
自分の本部でも今いろいろ可視化を行っているグループがあるのだけれど、散文的に書き出すのではなくてきちんとモデンリングするようにしたい。
Miiverse におけるマルチリージョン構成や多言語対応についての話。
各リージョンに対してどういったサーバとDB構成にしているのかについての説明は興味深かった。パフォーマンスもそうだけれど、サービスとしてどこの機能・情報をリージョン別に出し分けるかを念頭におく必要があることがわかった。なおコードベースは1つで環境変数で機能の出し分けをしているのだとか。
L10N については具体的な話で良かった。Miiverse 特有の話というよりは一般的に誰もが通る道的な。
Eraser Button Law など世界展開においてはやはり法的な事情があるというのもやはり大変なところのようだ。監視ポリシーは統一していとのこと。また投稿監視は関係会社がやっているとのこと(どこにアウトソーシングしているのかな)。
Miiverse もそうだけれど、どこも独自にコミュニケーションサービスを提供していくので、汎用コミュニティサイトはどういう路線でいくのが良いのかなと考えたり。
ガラガラだったし、15分ぐらい経っても本題に入らないし琵琶湖の説明が始まったので途中で出てきた。
及部敬雄氏の
Not プロセス導入 自分たちに必要なものは自分たちで選ぶ
という話が良かった。推進者がゴリゴリ推し進めるのではなくきちんとみんなで考えて試行錯誤していくところに本当の学びがあるんだなと。
セッションの一番最後に、スタンディングオベーションの号令があったのでそそくさと退席した。
シェルで特定の開発ディレクトリ以下に移動すると自動的に設定ファイルで指定された環境変数を設定し、そのディレクトリから別のディレクトリに移動すると戻してくれる direnv が便利。
https://github.com/zimbatm/direnv
Go で開発するのに GOPATH と bin への PATH 追加が面倒だったので導入してみた。
git clone https://github.com/zimbatm/direnv cd direnv make build cp -a direnv $HOME/local/bin
なお direnv は Go で書かれているのでソースからビルドするには Go の開発環境が必要。
.bashrc に以下を追加。
if command -v direnv > /dev/null; then eval "$(direnv hook bash)" fi
その他のシェルでの設定は https://github.com/zimbatm/direnv 参照。
$ cd project_dir $ export EDITOR=emacsclient # 次のコマンドで開くエディタ $ direnv edit . .envrc の編集用にエディタが開くので layout go と入力して保存。
後は Bash でこのディレクトリ以下(サブディレクトリも含む)に移動するとこの .envrc のあるディレクトリが GOPATH に追加され、また bin ディレクトリが PATH に追加される。便利。
なお direnv edit . しないで直接 .envrc を作った場合は、別途 direnv allow . を実行してこの .envrc を使うことを明示的に許可する必要がある。許可したかどうかは ~/.config/direnv/allow/* に保存される(freedesktop.org の XDG Base Directory Specification っぽくなっているので XDG_CONFIG_HOME 環境変数があれば ~/.config ではなくてその下に保存される)。
その他標準で
などが用意されている。また
PATH_add bin
のようにして PATH への追加も簡単。
その他コマンドの実行も可能なので開発以外にもいろいろ便利に使える。
これから利用する開発環境にログインしたら Emacs が入ってなかったので「とりあえず TRAMP を使うかと」とローカルホストの Emacs からファイルを開こうとしました。しかしホスト名の後の : をタイプしたところで止まってしまいます。
ちょっと調べてみたところリモートホストのログインシェルが zsh のせいでした。
EmacsWiki の https://www.emacswiki.org/emacs/TrampMode を参考にリモートホストの ~/.zshrc の末尾に以下を追加し、TRAMP が正しく動くようにしました。
if [[ "$TERM" == "dumb" ]] then unsetopt zle unsetopt prompt_cr unsetopt prompt_subst unfunction precmd unfunction preexec PS1='$ ' fi
朝起きたらちょっと喉が腫れっぽい違和感があるなあと思って、買ってあったガム・メディカルドロップを1日舐めてみました(4回)。翌日には解消されていたのでちょっとは効いたのかな。この飴のおかげとは言い切れないですが、多少は効果があるかもしれないので同じような時はまた舐めてみるようにしようかなと。
それから新しい開発環境で git-prompt.sh を使うようになっていなかったので dotfiles をアップデート。 ~/.dotfiles/local/.git-prompt.sh があれば読み込んで使うように .bashrc を修正しました。
新しい開発環境に入っている Emacs が 24.3 で helm, helm-ls-git, magit パッケージが使えません(Emacs 24.4 以上が必要)。ということで最新の Emacs 25.2 を入れようかと思ったのですが make 失敗。randomize_va_space が 2 だと駄目のようですが、EC2 + Docker コンテナ上でどうするのが最適なのかな。
Qiita:Team にアップロードした画像を自分で削除する手段が用意されていないようで気持ち悪い。こまめに図を更新したい時に気が引けて嫌です。うーん。
夏に竜宮城スパホテル三日月で2泊ぐらいどうかなーという話があったのでちょっと調べたのですが、7月下旬とかだと1泊2万円超なんですね。結構しますな。
それから、アプリ開発のチームにも入ることになったので iOS アプリの開発環境を用意した方が良いかなと思ったのですが「コードは書く予定ないですよね? であれば Xcode でソースコードが見られるぐらいでどうですか」となりました。確かに書く余裕は無いですね。
仕事で使っている15インチ MacBook Pro はまだ OS X El Capitan のままなので Xcode を入れるにはまずはそこのアップデートが必要。そこからか。
インクリメントの完成に高いコミット意識をもって毎スプリント取り組んできている CS 開発チームがいくつか大きなリリースを終えたので、スクラムマスターと相談して今日からの1週間スプリントは「プロダクトバックログアイテムについては何もコミットしない」で各自好きなことをして良いことにしました。
リファクタリング・技術的負債の返済・開発環境の整備や、調査・学習・ドキュメントの整理など、いつものスプリント中にはなかなかできないことを各自でしてよい1週間です。
普段から持続可能なペースを意識してスプリントプランニングしていますが、それでも頑張り続ければストレスも溜まってくるでしょう。適切なタイミングでブレイクを挟むことで、バーンアウトを防ぎ長期的にデリバリーし続けられるチームでいられればと思っています。
ちなみにこの取り組みは去年別のチームが unwinding period と呼んでやっていたのを真似てみたものです。
今回スプリントがどういう感じだったのかは、いつも通りスプリントレトロスペクティブでふりかえってみます。
[ スクラム ]
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。