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

コンパクトでない空間

a good experience become even better when it is shared

Web管理係の引き継ぎをした振り返り

私はこの一年間サークルでWeb管理係をやっていたのだけれど、その引き継ぎが今日行われて、私は任期を終えることになった。思えば、一年前の今頃は基礎中の基礎であったpwdすら怪しいものだったから、ただのうのうと言われるがままに操作していただけのわりには、一年間で随分サーバー管理に詳しくなったものだと思う。それにしたって、まだまだひよっこではあるけど。

この一年間で、サークルのサーバー構成は随分と変わった。というより、M2の先輩のいかろちゃんが変えた。私が知っている限りは、先代、先先代ではサーバー構成の変更はほとんどなかったので、激動の一年を担当させてもらえたと思う。サーバー構築もansibleという構成管理ツール*1で自動化され、しかもそのansibleもgithubでバージョン管理*2されるようになった。今後サークルのサーバーに変更を加えたくなったら、直接サーバーをいじるのではなく、ansibleをいじり、そのansibleのバージョン管理を的確にgithubで行う必要がある。うちのサークルはサーバー管理サークルではないし、そもそもプログラマばかりでもない。次の代のみんながみんなそんな技術を持っているわけではなく、次代のWeb管理係も例に漏れず、一からのスタートだ。つまり、私の仕事はまだ全然終わっていない。私がいかろちゃんにそうしてもらったように、これからは私が後輩を育成していく番なのだ。とはいえ、いざとなったらいかろちゃんがなんとかしてくれる。この安心感は心強い。いかろちゃんといういい指導者、教育を受ける環境に恵まれたと思っている。

さて、以下はその後輩指導の第一歩として、今日の引き継ぎを振り返ってみようと思う。自分自身反省するためのメモのようなものだ。今日の引き継ぎには、いかろちゃんこそいなかったけれど、先先代Web管のkakiraさんも同席してくれた。話はまず、Web管理係って何をするの?というところからはじまる。

これはかなり難しい問いだと思う。障害対応、サーバー構成の変更、セキュリティの設定、議事録のアップロードを含めたHPの更新、etc。サークルのサーバーに関わることはなんでもやるのだ。ただ、忙しい中興味のないことを無理にやらせてもお互い得はない。そもそもサークルは仕事ではないし、それぞれができることをできる範囲ですればいいもの。だから、後輩がなにをどれだけしたいかを尊重するつもりだ、やらない部分は他のサークル員にも協力してもらうなどの代案をこちらで考える、と伝えたら、「なにができるようになるんですか?」という質問。これまた難しい。一年間、本業の学問やサークルの他の活動で忙しいなか少しずつ学んでいくのであれば、できるようになることももちろんあるが、できないことも多い。私はこの前SSL証明書の取得に伴うwikiの障害の原因が一人では特定できず、いかろちゃんの力を借りたし、サーバーの移転に伴い、会則の変更差分が移行されていなかった問題も、HPがansibleで管理されていないため直にサーバーにアップロードしなければならないことがわからず、いかろちゃんに質問をした。少なくとも私の一年での成長はこんなものだ。

今日の引き継ぎの目的は以下の三つだった

  • 議事録をアップロードできるようになってもらうこと。そのための環境構築

  • 後輩がサーバー管理にどのように関わりたいのかの希望の確認

  • 今後の予定決め

ひとつめに関しては、かなり苦労した。新サーバーでは、いかろちゃんがpython2*3で動くマクロを使って議事録を自動的にアップロードできるようにしてくれているのだけれど、それにfabric*4というライブラリを用いている。これが、私のUbuntu*5機では比較的あっさりインストールできたのだけれど、後輩のWindows7にはなかなか入ってくれなかった。

http://qiita.com/yuu116atlab/items/79f92dd38b79364b8e68 http://qiita.com/Kuchitama/items/18b63271bf706e34e8b1 http://k-holy.hatenablog.com/entry/2013/04/08/202042

これらの記事を参考にインストールしようと試みたものの、どうにもうまくいかなかった。最終的には、Microsoft visual c++ 9.**6が必要というエラーメッセージが出て、古いバージョンのC++を追加するのは危険、というkakiraさんの進言に従い、Windowsへのインストールは諦めることにした。代わりに、仮想マシンを立ててもよかったのだけれど、また仮想マシンの環境構築に時間がかかるので、サークルの予備サーバーのCentOS*7ssh*8で遠隔操作し、予備サーバー上から議事録をアップロードすることに決めた。しかし、CentOSへのインストールにも罠があり、fabricをインストールするのに必要なPyCrypto*9がインストールできない。

http://qiita.com/satoruf/items/6844755b6378fedde037

最終的に、kakiraさんがこの記事を見つけてインストールしてくれた。それから、コマンドコンソールからのsshもうまくいかなかったらしく、Tera Term*10を使ってアクセスしていた。Tera Termでscpもできるらしい。Tera Term、Windowsの良心だな、と思った。

というわけで、最終的には議事録のアップロードはWindows7からサークルの予備サーバーにTera Termのscpで議事録を送り、sshでログインし、pythonを動かす、という形になった。回りくどいことこの上ないけど、予備サーバーがインストール等のときに若干重い以外は案外ちゃんと動いてくれる。実際にアップロードも無事成功した。結果的にCentOSからアップロードすることになったことで、後輩にWindows7では使えないmv、pwd、lsなどの基本的なコマンド*11も教えられた。よかったよかった。今思うと、サークルの予備サーバーからアップロードした方が、今度毎年Web管理係が変わって行っても個々のパソコンの環境に依存せず同じ環境を使うことが出来るので、かえってよかったのかもしれない、という気もする。しかし、予備サーバーもなかったらLinux仮想マシンを立てるしか方法はなかったのか。fabric、ほんとにWindowsでは動かないのだろうか。なんというか、Windowsはサーバー管理にはつくづく向いてない。

今後については、現在会則が古い分+更新差分のpdf2つで管理されているので、古い会則の元となったTeX*12を更新し、githubでバージョン管理したいという問題に対応してもらおうかなと思っている。後輩にまずはgithubに慣れてほしかったので、その意味でもちょうどよさそうだ。新しく作った会則のpdfのHPへのアップロードまで手が回るかは怪しい。少しずつ段階を追って慣れて行ってほしいので、TeXのバージョン管理でいっぱいいっぱいのようなら、アップロードは私がやろうかと思っている。もし余力があれば後輩の現Web管理係にやってみてもらおうと思っているけど。

会則TeXなの?というのは誰に言っても突っ込まれるポイントだ。確かにTexは優秀な言語ではあるけど、会則を書くにはゴツすぎる。これから会則を変更する人たちは全員TeXを学ばなければいけない。正直私の目から見てもmd*13で十分だろうという気はする。mdを学ぶのはTeXを学ぶのに比べたらめちゃくちゃ簡単だ。TeXを学ぶ大変さが麻雀のルールを覚えるぐらいとするなら、mdを学ぶ大変さはババ抜きのルールを覚えるぐらいだ。それでもTeXを会則に使う理由はただ一つ、現行のものがなぜかTexで書かれているからだ。多分、会則が作られた当時まだmdが普及していなかったのだと思う。それか、書いた人がちょうどTeXがマイブームで使ってみたかったのかもしれない。とにかく理由は何であれ、私はそれをmdに書き直したくない。面倒くさいし、こういう堅苦しい書類ものはあんまり頻繁に大きく手を加えるものではない気もする。写し間違えて怒られたら嫌だ。これで、TeXが今時どこでも使われていないおわコン(死語)であれば、TeXで書かれた会則は負の遺産だし、早めにmdに移行してしまおうとも思うが、TeXは全然おわコンではなくまだまだ学ぶ価値のある技術なので、いい勉強になるのではないだろうか。そんな理由で別にTeXのままでもいいんじゃないかな、と私は思っているけど、いかろちゃんは気になるらしい。正直私はどっちでもいいので、現Web管本人がmdにしたいと思うのであればmdに直してもいいんじゃないかとは思っている。

*1:プログラミングした通りにサーバーの設定等を行ってくれる

*2:ファイルの更新履歴を保存しておいてくれる。変更によってなにか重大なエラーが発生したときに簡単に元の状態に戻せる

*3:わりとなんでもできるプログラミング言語

*4:離れたところにあるサーバーに通信するのに使うらしい

*5:WindowsMac等のOSと同じ働きをしてくれるもの。Linux系と呼ばれる

*6:c++というプログラミング言語のバージョン9シリーズ。今は14とか、古いもので11とかが主流なのでとても古い

*7:WindowsMac等のOSと同じ働きをしてくれるもの。Linux系と呼ばれる

*8:通信の方式のひとつ。暗号化されるのでセキュリティ的に安全

*9:よくわからないけど多分名前的に暗号化等に使うライブラリ

*10:Windows用ソフト。ssh接続をうまいことやってくれる

*11:ファイル構成を確認したり編集したりする方法の一つ。サーバーによく使われる低機能のパソコンでも使えるのでサーバー管理に必須

*12:数式等をpdfにするのに優れたプログラミング言語

*13:markdownというプログラミング言語。html、pdfなどの文書がめちゃくちゃ簡単に書ける