読者です 読者をやめる 読者になる 読者になる

Masteries

技術的なことや仕事に関することを書いていきます.

株式会社ガイアックスを退職します

いろいろありまして, 2014年4月から2年と9ヶ月程働いていたガイアックスを退職することになりました. 一応, 本日が最終出社日*1となっていて, 暫くの間有給消化になります.

どうして辞めるの?

いろいろと, 今回の転職に至る経緯とか, ガイアックスでの思い出などを書いていたのですが, 分量が増えてきて止まらない感じになってきたので, また別エントリで, じっくり綴らせて頂ければと思っています...

次はどうするの?

次の会社, すなわち転職先は既に決まっていて, 2月頃から働き始める予定です. これに伴い渋谷区への引っ越しなどもやっていて, 退職に向けた手続きなども含めて, 非常に慌ただしい年末を過ごしています...

最後に...

だいぶさっくりではありますが, いつもお世話になっている皆様への第一報ということで, よろしくお願いします.

なお, こちらいつものやつです. ご査収下さい: https://www.amazon.co.jp/registry/wishlist/207LWIVX9Y04Q

*1:正確に言えば引き継ぎやPCの返却などで1月もちまちまと出社するのですが, 大規模な有給消化が来週月曜日から始まり, 年内最終出社が今日になったので, 今日を最終出社日としています.

Mackerelを使って踏み台サーバを更に便利にしてみた話

この記事は, Mackerel Advent Calendar 2016の19日目の記事です.

「踏み台サーバ」とMackerel

以前, 「サーバにログインした時に任意のメッセージを表示する 〜Mackerelで管理しているホスト一覧を出す〜」という記事を書いたことがあります.

papix.hatenablog.com

この記事では, いわゆる「踏み台サーバ」にログインしたタイミングで, MackerelのAPIを使って「踏み台サーバ」に紐づくサービスのホスト一覧を取得して, 次のように表示してあげる便利! というTips? を紹介しました.

-----------------------------------------------------------------
    My Service Host Information
-----------------------------------------------------------------
App
        10.0.xxx.xxx (instance-size) ... working
        10.0.xxx.xxx (instance-size) ... working
                      :
                      :
-----------------------------------------------------------------

今回もまたまた小さいTipsなのですが, これを改良(?)する機会があったので, そのお話をしたいと思います.

IPアドレスをちまちま入力するのは面倒じゃないですか?

...と思った訳です.

ここから, 実際に各サーバに接続しようとすると, ssh 10.0.xxx.xxxのように, 手動でIPアドレスを入力していく必要があります. ちょっと面倒ですし, 例えば10.0.123.456とするべきところを, 10.0.124.456とタイポしてしまうことも多々ありました.

補完を効かせたい!

...と思うのは, 自然なことだと思います.

やり方はいろいろありますが, 今回は「任意のサーバに接続するコマンド」を用意して, これを補完させるというアプローチを取りました.

具体的には, 「ホストの一覧を表示」するスクリプトの中で, ホストごとに次のようなファイルを生成するようにします.

#!/bin/sh
ssh [user]@[ip address]

これを, 例えば/usr/local/bin/ssh/[ip address]というファイルに設置して, 実行権限を与えた後, /usr/local/bin/sshにパスを通せば良いでしょう.

なお, Mackerelで管理しているサーバが入れ替わるなどしてIPアドレスが使われなくなる事は多々あると思うので, 「ホストの一覧を表示」するスクリプトが実行される度に/usr/local/bin/sshの中に存在するファイルを全て削除して, 都度生成しなおすようにしています.

結果

こうすることによって, 例えば「踏み台サーバ」から10.0.123.456というホストに接続したいのであれば, 10.0.123.456とタイプするだけで接続することができるようになりました.

更に, 10.0.辺りまで入力して「TAB」キーを押せば, よしなに補完してくれるので, 「踏み台サーバ」から目的のサーバに移動するのが非常に簡単になりました.

非常に細かいTipsではあるのですが, チームメイトからの評判? は非常に良くて, 便利だと思ったので紹介させて頂いた次第です.

僕達の日常に這い寄るGet Wild

この記事は, Get Wild Advent Calendar 2016の13日目の記事です.

はじめに

皆さんGet Wildしていますか? 最近はどっちかというとBE MY BABYしている機会が多いのですが, とりあえずチープなスリルに身を任せながらGet Wildしていきましょう.

日常に這い寄るGet Wild

さて, 勢いでGet Wild Advent Calendarに応募してしまい, どういったネタ記事を送り出すべきかと, ひとりでは解けない愛のパズルを抱きながら考えていました.

前日になってもアイデアが浮かばず, 明日におびえていた訳ですが, その最中私は気づいてしまいました.

...すでに私達の身の回りには, Get Wildが, 音もなく, 静かに這い寄ってきていたということに.

どういうことか?

例えば, ここにピックアップしたのは, 今自分が携わっている某サービスのインフラ〜ミドルウェアレイヤーで使われているツールの一覧です.

  • GitHub
  • AWS
    • EC2
    • ElastiCache (Redis)
    • ElasticSearch
    • RDS (MySQL)
    • S3
    • Route53
  • Linux (Ubuntu)
  • Terraform
  • Itamae
  • Packer
  • Concourse CI
    • Docker
  • Mackerel
  • WordPress

GitHubでリポジトリを管理して, AWS上にサービスを構築. AWSはTerraformで構築の自動化を試みています.

サービスはEC2上で動き, OSはLinux(といっても, Amazon LinuxではなくUbuntu)を採用しました. みんなだいすきInnoDBを使いたいので, RDSのMySQLを採用し, 必要に応じてRedisやElasticSearchも導入しています.

アプリケーションが動くインスタンスはAMIをPackerで構築してそこから起動しますが, 「踏み台サーバー」などのミュータブルなインスタンスについてはItamaeで構築します.

デプロイの自動化については, Concourse CIを採用しています. Concourse CIでは, 各ジョブがDockerのコンテナ上で動くので, CIサーバに直接デプロイなどに必要なミドルウェアやツールを導入する必要がなく, そういったツールが入ったDockerのイメージを作ってあげればOKなので, 非常にわかりやすいです.

また, インフラの監視にはMackerelを, 公式サイトのためにWordPressを使っています.

なるほどなるほど, 「GitHub」... 「EC2」... 「Terraform」... 「WordPress」... 「Itamae」... 「Linux」... 「Docker」... ハッ!?

G E T  W I L D

そう, 私達のサービスは, 知らないうちにGet Wildが紛れ込んでいたのです...!

あなたの側にもGet Wild

皆さんも, 改めて開発しているサービスに注目してみてください.

もしかすると, 皆さんのサービスも, 既に, Get Wildが...

5年続いているPerl入学式というコミュニティの運営について

この記事は, 「IT勉強会/コミュニティ運営 Advent Calendar 2016」の5日目の記事です. 今日は, 自分が「校長」という肩書で主催している, プログラミング言語Perlの初心者向け勉強会, 「Perl入学式」について書きます.

perl-entrance.org

Perl入学式とは

Perl入学式は, 2012年に大阪で始まった, プログラミング未経験者や入門者を対象とした, Perlの勉強会です. 単発の勉強会ではなく, 1クール5〜6回のカリキュラムを通して, 環境構築からスタートして簡単なWebアプリケーションの開発までを無料で学ぶことが出来る勉強会になっています.

ざっと概算ではありますが, 年間10〜20人程度の受講生の方がカリキュラムを(ほぼ)完走されるので, 少なく見積もっても2012年から2015年までの4年間で, おおよそ50人程度のPerl Mongerを育てている(?)ことになります.

最近は, Perl入学式をきっかけにしてPerlの会社に転職されるパターン(@htk291さん)も徐々に増えてきていて, 非常に嬉しい限りです.

Perl入学式について, 更に詳しく知りたい方は, こちらのページなどをご覧頂くと良いでしょう:

www.perl-entrance.org

また, 今年も「Perl入学式 Advent Calendar」を開催していますので, こちらもご覧頂けると良いかもしれません:

qiita.com

Perl入学式の運営

2016年のPerl入学式は, 東京, 大阪, 沖縄という3つの地域で開催されています. それぞれ, 5〜10人程度のボランティアスタッフがコアメンバーとして関わっているので, おおよそ30人程度で運営を行っている形です.

私感ですが, これはIT勉強会/コミュニティのコアメンバーとしては異様に多い(例えば, 昨日担当のGotanda.jsの場合, コアメンバーは2人とのこと)と思うのですが, これには理由があります. Perl入学式は, 参加者である受講生に「Perlを教える」勉強会なので, 一般的な勉強会で必要な運営(会場の確保, イベント募集ページの作成と公開, TwitterなどSNSを利用した広報)タスクに加えて, 受講生に提供するコンテンツを作成したり, 勉強会当日に講義を受け持つ「講師」や, 受講生を支援する「サポーター」を確保したり(サポーターによる手厚い支援は, Perl入学式の特色の1つになっています)しなければなりません.

そのため, 少数のメンバーで運用するのではなく, 「Perlを通して, プログラミングの楽しさを知ってもらいたい!」という理念に共感した人を(Perl入学式のカリキュラムを修了した人も含めて)積極的に参加してもらうように心がけています.

こうすることで, それぞれ本業があるメンバーが, 空いた時間を持ち寄って, 動ける時に動ける人が, タスクを分担して消化していくという形で, コミュニティの運営を進めていくことができます.

ちなみに, コアメンバー同士のコミュニケーションはSlack, 情報集約はGitHubを活用しています. この辺りは, 長年いろいろ工夫していたのですが, 最終的にはシンプルな, 必要最低限の形に落ち着いたな, という感じがしています.

Perl入学式と貢献の方法

...さて, Perl入学式において, コミュニティを運営するメンバーを増やしていくことには, もう1つ大きなメリットがあります. それは, 「それぞれの特技や特色を活かせる」というところです.

Perl入学式のカリキュラムを終えた受講生の方に, 「次からPerl入学式のスタッフをやってみませんか?」と言うと, 大抵の人は「いや, 自分はまだ覚えたての初心者で, 受講生に教えるなんて, とても...」と仰る方が多いです. とはいえ, 先ほど述べたように, Perl入学式のスタッフの仕事は「受講生へのサポート」だけではありません. 「初心者だからこそ」出来るタスクも, たくさんあります.

例えば, カリキュラムの改善などはその代表例です. 正直, 何年もPerl入学式をやってくると, 講師やサポーターに「慣れ」というか, 「まあ, これくらい, 省略しても...」みたいな気持ちが生まれてくるのは, 正直致し方ないところがあると思っています.

カリキュラムを終えたばかりの初心者は, そういった点に非常に敏感というか, 気付きやすいと思っていて, 「これって, もう少し細かく説明した方が良くないですか?」とか, 「ここ, わかりにくかったので, もう少しやったほうがいいかも...」とか, カリキュラムの改善に非常に有意義な意見を集めることができます.

また, 本業が編集者であるコアスタッフ(@note103さん)の方もいて, その方はブログエントリや資料の文章を, 非常にいい感じに推敲してくださって, いつも助かっています. さらに言えば, 「仕事をしないスタッフ(主に自分)」のケツを叩くのも立派な仕事だと思っていて, そうやって考えていくと, まさにPerlのモットーである「There is more than one way to do it」, コミュニティへの貢献の方法はいろいろある, だなあと思います.

Perl入学式と懇親会

勉強会において, 懇親会は非常に重要です. Perl入学式でも, 毎回有志を募って懇親会を開催するようにしています. これは実測値ではなく体感値(?)ではありますが, 「懇親会に参加されたことがある受講者」と, 「懇親会に参加されたことがなかった受講者」の, カリキュラムの継続率を比べると, 多分かなりの差が出てくる, ような... 気がしています.

そういった意味でも, 懇親会への参加障壁を下げるのは非常に重要で, 例えば今年は居酒屋で行う「1次会」の前に, 会場で行う軽いピザパーティ, 通称「0次会」という取り組みを行ったりしていました. 詳しくは, こちらのエントリを参考にしてみてください:

perl-entrance.blog.jp

ちなみに, Perl入学式の懇親会は, だいぶカオスな(?)雰囲気がある... ように思います. サポーターや, 仕事でプログラミングをしている受講者の方が, 仕事であった出来事や, 最新技術などのガチな(?)話題で盛り上がっている横で, 声優やらアイドルやらといったサブカルの話題とか, 趣味の話で盛り上がっている, みたいなシーンは日常茶飯事です.

とはいえ, これは非常に大事なことだと思っていて, こうやって講師やサポーターと受講生の皆さんがカジュアルに交流して, 人となりを感じることが出来るからこそ, 次回以降の参加障壁であったり, カリキュラムの中でサポーターに質問する障壁が下がる部分があると思っていて, ワイワイと楽しい雰囲気で懇親会をやる! というところはPerl入学式が非常に大事にしているところの一つです. とはいえ大抵の場合, 毎回いい感じに盛り上がるので, 特段工夫や施策などはしていないのですが.

...ちなみに余談ですが, Perl入学式での懇親会の鉄板ネタはmoznionさんにまつわる伝説の数々で, 本人がいないのに40分くらいmoznionさんの話題で盛り上がるという快挙(?)を成し遂げた結果, 受講者の方から「実際に会ってみたい!」という声が多く挙がり, 実際にPerl入学式の懇親会にご招待したことがあるのですが, いろいろお忙しいようでタイミングが会わなかったのは非常に残念な出来事でした...

Perl入学式と「内輪ネタ」

最後に, 「内輪ネタ」についての話を書きます. IT勉強会やコミュニティにおいて, 「内輪ネタ」についての是非はいろいろ語られていて, 実際にPerl入学式でも, 「この勉強会は内輪ネタが多すぎる!」という感想を頂いたことがあります.

この時は, 割と「どうしたものか...」と悩んだのですが, 結果としては「内輪ネタを薄くするのではなく, 逆に受講者を積極的に内輪に巻き込んでいくようにしよう!」という結論に至りました.

前提として, やはりコミュニティに人が集まると, その中で通用するコンテキスト, 文化, 習慣がどうしても生じてきてしまいます. 例えばPerl入学式では, 声優さんやアイドルのイベントのことを「宗教行事」と呼んでいて, 「その日は宗教行事があるのでサポーター行けません...」みたいなやり取りが頻発したりしています. こういった独自のコンテキストや文化は, コミュニティの特色にもなりますし, コミュニティの内輪にいる人達にとっては大なり小なり楽しく, 面白く感じるものだと思っています.

Perl入学式が, 受講者から参加費を頂いて, それを講師やサポーターに報酬として分配できる形の勉強会ならともかく, 運営について全て手弁当で行っている状況を考えると, こういった要素を撤廃するのは, コアスタッフとしてコミュニティに関わるモチベーションを下げてしまう要因に成りうると思っています. ...というか, これは自分の仮説? 想像? ではありますが, コミュニティからコンテキストや文化, 習慣を消し去ることは, 「コミュニティ」そのものを消し去ってしまうことと同義では? と思っていて, 現実的に不可能なのかもしれません.

だからこそ, IT勉強会やコミュニティを運用するにあたっては, 参加者に対して, 既にコミュニティにいる人達にだけ通用する「内輪ネタ」を押し付けず, 「内輪ネタ」を自然と浸透させて(?), 参加者をコミュニティの内側へ, 「内輪」へ引き込んでいく動きが非常に大事だと思っています.

東京のPerl入学式では, @xtetsujiさんや@ytnobodyさん, @gomaaburamaxなどが, 積極的に受講生とコミュニケーションを取りながら, 自然とそういった動きをしてくださっていて, 非常に助かっています.

なぜPerl入学式が5年も続いたのか?

最後に, Perl入学式という勉強会が, なぜ設立から5年も続いたのかについて考えたいと思います. 結論から言えば, 「コミュニティにおける大事な概念を示せていて, それに則った上でガンガンやっていこう, という文化を作れた」からではないかなあ... と思っています.

Perl入学式では, 「Perlを通して, プログラミングの楽しさを知ってもらおう!」というところを理念として, その為に, 次のような勉強会にしよう! というポリシーを持って運営してきました.

  • プログラミングにチャレンジするにあたって, 最大の障壁は環境構築なので, 環境構築についてはしっかり取り組もう
  • Webアプリケーションフレームワークを使ったWebアプリの開発をやって終わり! ではなく, Perlから他の言語にチャレンジしても活きる, プログラマの考え方や基礎的なところをしっかり教えよう
  • 受講者とサポーター, 受講者と受講者の相互コミュニケーション(質問やアドバイス)によって, 壁を越えられるようにしよう

...まあ, まだこれらのポリシーは完全に実現出来ている! という訳ではないのですが, この辺りの理念やポリシーについては, 5年間やっている中で何となくスタッフの間で「こんなもんだよね」と共有出来ていると思っていて, それによって無駄なやり取りが減っているのは確かだと思っています.

そして, この辺りが概ね共有出来ているからこそ, Perl入学式という勉強会, そしてコミュニティの主催者である自分は, 積極的にタスクをコアメンバーに移譲し, 任せることが出来ると思っていて, 今年は東京/大阪/沖縄の各コアメンバーが, それぞれの地域で上記の理念やポリシーに則りつつカリキュラムを運営し, その中で新しいチャレンジが出来ていると思っています.

勉強会やコミュニティは, 1人で運営できるものではありません(もちろんやろうと思えばできますが, 属人性が高まりすぎて勉強会やコミュニティの持続性が低まってしまいます). だからこそ, コミュニティとして抑えるべきところ(理念やポリシー)はしっかり抑えつつ, それに則った上で, 勉強会やコミュニティのメンバーが, いい感じに動いて「やってみたい!」に取り組める, そういったコンテキスト, 文化, 習慣を作っていくことが大事なのかもしれませんね.

まとめ

Perl入学式という勉強会, そしてそのコミュニティについて綴りました. 勉強会やコミュニティの運営は, 大変なことも多いですが, 楽しいこと, 得られるものも多く, 非常にやりがいがあります.

とはいえ, その「メリット」を目的として勉強会やコミュニティを立ち上げるのは, だいぶ不毛だと思っていて, やっぱり「○○について, 語りたい!」とか, 「××の素晴らしさを伝えたい!」とか, 「△△があったらいいのに, 出来たらいいのに...!」みたいな, そういう「熱い思い」を出発点にするのが良いのかな, という感じはしています. 「努力は夢中に勝てない」みたいな言葉もありますし. ...まあ, だいぶ, というか, かなりの感情論になってしまうのですが...

なにはともあれ, 今後, 皆さんが勉強会やコミュニティを立ち上げる際, この記事で紹介した内容が少しでも役に立てば幸いです. 最後まで読んで頂き, ありがとうございました.