btoメモ

なんか適当に書く

UUUM株式会社執行役員CTOを退任します

おはこんばんちは!! 尾藤 a.k.a. BTO です。

2015年4月に技術顧問として参加し、2015年6月に執行役員CTOとして入社したUUUM株式会社を退職します。2019年12月27日が最終出社日で約四年半在籍したことになります。正確にはまだ有給消化中で在籍はしておりますが、近いうちに正式な退職となります。

何をやってきたか

入社した当初はほぼエンジニアのいない組織で開発を外注に丸投げしている状態で、ディプロイは手動SCP、テストも書かれてない、コード整形もされてない、DBのスキーマ変更はメールでALTER TABLE文を共有するなど、散々な環境でした。今では約30人規模の開発組織を立ち上がってて、10個ほどのプロジェクトを(技術的には)大きな問題もなく開発できる体制まで成長させることができました。とあるITコンサルの会社からも、他のベンチャーや大企業と比べてもレベルの高い技術力を持った組織だと評価をいただくことができました。自分で言うのもなんですが、エンジニアリングのバックグランドのない会社でここまでの開発組織を作ることができたのを少し誇りに思っています。

入社した当初は社員数は40人程度で、今では450人にもなり、入社してから10倍以上になりました。この短い期間で拡大路線を続け疾走していく会社の中で働くことができ、自分自身も大きく成長することができました。IPOも経験することができたし、ベンチャーから大企業に変化するなかで戸惑うことも多かったですが、ベンチャーにいただけでは理解することのできない大企業ならでは事情や動きを間近で見ることができたのは貴重な経験でした。

なぜ辞めるのか

会社が大きく成長するにつれ、ベンチャーと比べるとどうしても動きが遅くなってしまうことが増えてきました。誰が悪いとかではなく、これはもう必然の出来事なのでしょうがないなと思いつつ、納得できない自分がいました。自分は性格的に自由と刺激を求めるタイプなので、もっと違うことや新しいことをやっていきたいという思いが強くなってきました。開発自体も安定して回るようになってきたので、自分の存在意義も薄れていく(会社としては人に対しての依存度が下がるのは良い傾向)なかで、そろそろ後進に道を譲って、自分は違う道に進もうと決心しました。

UUUMは今後も成長し続けます。第7期第2四半期の決算も増収増益でした(株価は暴落していますがw)。会社の中にいて、その勢いを感じてきた人間だからこそ断言することができます。今後は社員としてではなく、一株主として UUUM の未来を応援していきたいなと思っています。

次どうするの?

まだ何も決まっていませんが人伝でいくつかお話をいただいたり、お手伝いさせてもらっています。しばらくはいろんな方とお話させていただきながら、今後のことを決めていきたいと思っています。ですので、会社訪問とかお茶とかランチとか飲み会とか行かせてもらいたいです!!少しでもご興味がある方はご連絡ください。調整して伺わせていただきます。

PaizaのUUUMの求人がいっぱいブックマークされてたw

なんかPaizaの求人がいっぱいはてブされてて嬉しい。

はてなブックマーク - 技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

せっかくコメントしてくれた人に返信できないので、ここで返信しちゃいます。

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

“尾藤がCTOとして就任して” まー、それなりに人は集まるんじゃねーのと思わなくもない。

2015/07/28 01:33
id:tsekine ありがとうございます!!いままで全然ダメだったので、それなりに来てもらえるの大歓迎!!

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

エンジニアなめてんだろ?コンビニの菓子食い散らかしてブンブンハロー言ってるだけでくりえいたー名乗れるゆーちゅーばーと訳違うぞ

2015/07/28 01:28
id:brav0 なめてるつもりはないんですが、ご気分を害されたようでごめんなさい。どの辺がなめてると感じられたのか教えてもらえると嬉しいです!! ゆーちゅーばーも結構いろいろやってるので、ぜひ見てください!!

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

グレートサイヤマン

2015/07/27 22:41
id:redreborn イミフw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

"グレートWebエンジニア(LAMP)"/名刺にこう書かれるのかな?

2015/07/27 22:35
id:tA9 お望みとあればw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

スキルが高いは歓迎要件であって必須要件ではないって書いてあるんだから別になにもおかしくない条件だと思うんだけど,みんな何に反応してるの..?

2015/07/27 22:00
id:qittu ですです。タイトルと年収の下限でみんな釣られた感じですかねw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

こういうスキル高い人欲しいけどお金は払えませんみたいな…タイとか中国の技術者年収調べたら、日本で働くことがバカバカしくなると思うな。

2015/07/27 21:25
id:TequilaBancho 400万は下限なので、スキルの高い方には、ちゃんとお給料はお支払いいたします!! 実際スキルの高い方には、希望年収よりも高い金額をこちらから提示させていただきました。

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

根っからのエンジニアが応募するのかな

2015/07/27 19:46
id:kiyo_hiko そういう方に、ぜひご応募いただきたいです!!

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

求む、グレートなエンジニア!(給料はグレートではありません)。というか六本木ヒルズにオフィス構えるお金があったら人材にお金かけた方がいいんじゃないですかね。

2015/07/27 19:40
id:kenjou スキルの高い方にはちゃんとお支払いいたしますので、ご安心を!!

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

これが噂のグレートWebエンジニア(LAMP)か

2015/07/27 19:27
id:mikesorae 噂になって嬉しいですw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

技術に拘りはあるが給料に拘りのない奴来い!ということですねまるでわかりません

2015/07/27 19:23
id:el-condor 給料にこだわりもってもらって大丈夫ですー

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

パソコンの大先生なら雇えそう…真面目な話、技術力があんまり無い中小の独立系のPGが同じくらいの給料だからそれなら雇えるね。その前に使えないベンチャーオタクが群がってきそうだけども。Paizaこんなんばっかw

2015/07/27 19:22
id:TTEST 今後はそういう方は採用しない方向でやっていきますー

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

「低レベルなエンジニアとは一緒に仕事したくない!!!!」 いや、教育も大事だと思いますよ。ポテンシャルも評価しないと。

2015/07/27 19:19
id:cyberglass はい。今スキルが高くなくても、向上心の高い方なら大歓迎です!! UUUMはエンジニアに対してはブランド力がないので、すぐに良い人に来てもらえるとは思っていないです。 ただし向上心がないとスキルアップは望めないので、技術が好きじゃない方はアウトです。

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

技術にこだわりの持てない奴は来るな!!(ただしPHP)

2015/07/27 18:32
id:megascus 技術の中身ではなく、使ってる言語で評価するタイプの人は嫌いです。

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

600万くらい出せないのかなぁ。

2015/07/27 18:27
id:Error401 出してるんですよー。600万以上の方いますよー

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

「グレートWebエンジニア(LAMP)提示年収 400万円」 / 「他なんかいろいろあるけど、モダンな開発スタイル」 / 「はっきり言って、クソみたいなシステム」 / 尾藤さん…

2015/07/27 18:18
id:honeybe ありがとうございますw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

“ポジション グレートWebエンジニア(LAMP) 提示年収 400万円 〜” 大草原不可避

2015/07/27 17:46
id:pullphone ありがとうございます!! ちなみにどの辺が一番草生えましたかw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

ここ本社内にユーチューバー結構集まるしゲーム機とかもおいてるよね

2015/07/27 17:43
id:north_korea よくご存知で!! ユーチューバーがたまにゲームしてますw

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

うーむ。

2015/07/27 17:28
id:mhkohei うむむ

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

これ月給22万からで想定年収400万からなのってあとはどういうふうに埋めるの?

2015/07/27 17:02
id:gin0606 埋めるっていうのは何をでしょうか?

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

"低レベルなエンジニアとは一緒に仕事したくない!!!!" "400万円~" "グレートWebエンジニア(LAMP)"

2015/07/27 17:01
id:tbpg ありがとうございます!!

技術にこだわりの持てない奴は来るな!!(Webエンジニア)の求人:UUUM株式会社 | ITプログラマー・エンジニア転職のpaiza

“グレートWebエンジニア(LAMP) ”

2015/07/27 16:07
id:ainame グレートですよ。こいつはァ

javascriptだけで棋譜形式の変換(jsShogiKifuで棋譜データの出力に対応)

jsShogiKifu棋譜データが出力できるように機能追加しました。

これによりオンラインでjavascriptだけで棋譜形式の変換ができるようになります。

サンプルページ

新たな棋譜形式の対応はモジュール追加のみ

jsShogiKifuでは棋譜解析部分を独立したモジュールにしているので、各棋譜形式専用のモジュールを追加するだけで、他の棋譜形式に自由に相互変換可能になります。

現在のところkif形式とcsa形式だけにしか対応してませんが。

jsShogiKifuをアップデートした

以前公開したJavascriptで実装した将棋棋譜ビューワであるjsShogiKifuですが、いつのまにか改造してくれてる人が現れた!!

嬉しい限りです。

せっかくなので変更内容を取り込ませていただきました。

READMEから抜粋した変更内容は次の通り

kkosさんによる変更

1. 各局面の最終着手を強調表示可能

2. 駒画像の表示サイズを指定可能

3. 枡のサイズを指定可能

4. 先手、後手それぞれに対して、王と玉を指定可能

(駒画像が用意されている場合)

5. 初期表示局面を指定可能

6. 6種類のサイズの駒画像を追加

(文字表示だけで、駒の形ではない単純なもの)

7. サイズの異なる盤面を一つのページに表示可能

(test/sample_multi.html)

8. 手順一覧選択リストで、コメント付きの指し手には'*'マークを表示

9. KIF形式の記述が'龍'ではなく'竜'の場合にも対応

10. KIF形式の詰将棋に対応

(test/sample_mate.html)

11. KIF形式の駒落ちに対応

12. KIF形式の初期局面指定に対応

knuさんによる変更

* 画像を使わないレンダリングをサポート。

* レンダリングエンジンを選択またはユーザ定義可能。

* UIを改善。

盤上左右1/3領域をクリックすることで前後の指し手に移動可能。

* jQuery Mobile上での動作をサポート。

- 左右のスワイプによりそれぞれ最初、最後の局面へ移動。

- 指し手を示すselectボックスの状態更新通知を追加。

いろいろ調整

お二人の変更を取り込ませていただいた後、僕の方でもいろいろ調整しました。

機能的な追加は特になく単に整理したぐらいです。

ちょっとがばっと変更しちゃいましたが、たぶん以前よりかはコードがいじりやすいのかなと思います。

* Kif形式の解析モジュールを改良

kkosさんにいろいろ機能を追加してもらったのをシンプルになるよう変更しました

* サンプルファイルを全部sampleディレクトリに突っ込んだ

* test/ ディレクトリの中身を整理

* ソースコード複数ファイルに分割

それに伴いMakefileを追加。配布用のkifu.jsはdistディレクトリに動的生成するようにしました

* インデント(ハードタブなくす)や、メソッド名をちょこっと変更(統一感持たせるため)

さくらVPSを借りた後の初期設定まとめ

さくらVPSを借りた後の初期設定メモ 一般ユーザを追加する
# useradd masato
# passwd masato
sudoを使えるように。 wheelグループにsudoを許可して、一般ユーザをwheelグループに追加する。
# visudo
%wheel  ALL=(ALL)       ALL
# vigr
rootでの作業終了。一般ユーザで再ログイン。
# exit
local:$ ssh masato@*.*.*.*
SSHの鍵をコピー
local:$ scp -r ~/.ssh masato@*.*.*.*:
dotfilesを同期
$ cvs -d '****' checkout .env
とりあえずyum update。 yum-fastestmirrorはデフォルトでインストールされてた。
$ sudo yum update
コマンドラインを快適にするため、とりあえずzsh, screenを入れる。 keychainはなかった。
$ sudo yum install zsh screen
zshにシェルを変更して再ログイン。 ssh-agent起動。 keychainは後で入れる。 screenも起動。
$ chsh
$ exit
local:$ ssh masato@*.*.*.*
$ eval $(ssh-agent)
$ ssh-add *****
$ screen
とりあえずiptablessshだけ許可する。
# 関連のある入力を許可
$ sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# icmpを許可
$ sudo iptables -A INPUT -p icmp -j ACCEPT
# ローカルの接続は全部許可
$ sudo iptables -A INPUT -i lo -j ACCEPT
# sshを許可
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22  --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
# INPUT, FORWARDを原則落とす
$ sudo iptables -P INPUT DROP
$ sudo iptables -P FORWARD DROP   
sshでrootログイン禁止、パスワード認証禁止。
$ sudo vi /etc/ssh/sshd_config
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
これで一通りのセキュリティ周りの設定終了。 一安心

さくらインターネットの田中社長との思い出

そろそろ個人サーバを乗り換えようと思ってVPSサービスをいろいろ検討したんだけど、結局さくらのVPSにした。さくらは使い慣れてるし、今までの実績からくる安心感がある。さっき一年一括で支払い申し込みして、準備ができるまでの間に、ふと思い出したさくらインターネットの田中社長との思い出を書いてみる。思い出っつっても僕の一方的な思い出で、もちろん田中社長は僕の事なんぞはみじんも知らないがw

インターネットとの出会い(高専4年)

僕が新居浜高専というど田舎の高専4年生の頃に、初めて学校がインターネットに接続された。新居浜高専のネット回線は愛媛大学を通して世界に繋がっていた。電話回線もない寮で生活していた僕は、インターネットと聞いて「パソコン通信ができる!」とわくわくしていた。ネット=パソコン通信と思い込んでいたのだ。それくらいバカだった。

インターネットは当初期待してたものとは違ったが、それ自体はとても面白くどんどんのめり込んでいった。そしてインターネットの仕組みが知りたくなって、いろいろ先生に聞いてインターネットのサーバはUNIXで動いているのを教えてもらった。MS-DOSしか知らなかったバカにはUNIXは衝撃的だった。そして無謀にも自分でWebサーバを構築したいと考えるようになった。

apacheのMLに入会

先生にWebサーバはapacheが使われているというのを教えてもらった。何も考えていない僕は早速コンパイルをしようと思ったがうまくできない。それでapacheのMLに入会して質問をした。

コンパイルできません!」

今の僕なら"マニュアルを読め!"と突っ返すような質問に親切にも答えてくれる人がいた。

「./configureを実行しました?」

コンパイルできない問題は見事に解決した。ちなみにこの質問に答えてくれた人は田中さんではなく吉藤さんという方で、数年後にLinuxIPv6の実装であるUSAGIプロジェクトの中心人物となった方だ。もちろん吉藤さんは僕の事なんか覚えてないだろうがw

apache MLを運営していた舞鶴高専の田中さん

このapache MLを運営していたのが舞鶴高専の田中さんという方だった。僕と同じ高専4年生。田中さんはapacheのMLを運営するだけでなく、apacheのモジュールを書いてたりと、./configureを知らない誰かさんとは雲泥の差だった。同じ学年なのにここまで実力が違うのかと衝撃を受けた。

そして田中さんは当時から草の根レンタルサーバである「さくらネット」を運営していた。そう、今のさくらインターネットの前身である。後になってさくらインターネットの名前を聞いて、すぐにさくらネットの事だと分かった。高専の時から僕と田中さんの差は全く縮まってなかったのだ。

僕も頑張って前に進んでいるのだが、田中さんはそれ以上のスピードで前に進んでいる。いつか追いつけるように努力し続けていたい。

javascriptで動作する将棋棋譜ビューワを作った

最近というかここ2年くらいから将棋にはまってて、いろんな将棋を観るのが趣味になってます。特にプロのタイトル戦は解説付きの棋譜が公開されてて、観るだけでも楽しい。やはり素人にはプロの解説がないと指し手の意味がよく分からない。

公開されている棋譜のビューワにはKifu for Flashがよく使われています。他にも棋譜ビューワはいろいろありますが、ほとんどがFlash製です。Javascriptの実装もいくつかあるようですが、他のサイトに組み込んで利用するようなケースはあまり想定されていないような感じでした。Flashの最大の欠点がiPhoneで表示できないこと。Kifu for iPhoneでいいじゃないかと言われそうですが、特定のアプリじゃWebサービスに組み込みできんだろということでJavascriptで動く棋譜ビューワを作ってみました。githubで公開してます。今のところ柿の木形式とCSA形式に対応。

jsShogiKifu サンプルページ

使い方

ソース一式をダウンロードします。 jsShogiKifuダウンロードページ

"src"ディレクトリにあるファイル一式を適当なディレクトリに突っ込む。

jQueryもダウンロード jQuery

jQuery, kifu.js, jquery_shogi_board.jsを読み込む。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="kifu.js"></script>
<script type="text/javascript" src="jquery_shogi_board.js"></script>
棋譜ビューワを表示する場所にspanなりdivタグをid付きで追加。
<div id="board"></div>
適当なdivなりspanなりのid付き不可視(style="display:none")タグに棋譜データを突っ込む。 "Kifu"に"棋譜データのid", "フォーマット(kif or csa)"を渡してkifuオブジェクトを作成。 jQuery棋譜ビューワを表示するタグに"shogiBoard"メソッドにkifuオブジェクトを渡して表示する。
<span id="kifu_text" style="display:none">
棋譜データ...
</span>

<script>
var kifu = Kifu('kifu_text', 'kif');
$('#board').shogiBoard(kifu);
</script>
別ファイルの棋譜データを読み込むにはKifu.ajaxLoad()を使います。 Kifu.ajaxLoad()に"棋譜ファイルのURL", "フォーマット", "関数オブジェクト"を渡します。 関数オブジェクトにkifuオブジェクトが渡りますので、上記と同様にshogiBoardにkifuオブジェクトを渡します。
<script>
Kifu('./kifu_text.kif', 'kif', function() {
  $('#board').shogiBoard(kifu);
});
</script>

以下、プログラマ向け説明

棋譜解析とビューワを完全に分離

棋譜解析部とビューワを完全に分離してます。棋譜解析の結果は全てkifuオブジェクトに格納されて、盤面の操作や情報の取得はkifuオブジェクトのメソッドを通して行います。ビューワはkifuオブジェクトから取得した情報を元に表示処理だけ行います。

jsShogiKifuにはjQueryプラグインとして実装したjQueryShogiBoardが付属していますが、ビューワが完全に独立しているため全く違う実装に置き換える事が可能です。jQueryShogiBoardはいろいろとアレなので、自分で好きなプログラムに変更するといいでしょう。

jQueryShogiBoardはデザインがダサダサなんですが、html部分は別ファイルになっているので、これを置き換えるだけでもいいかと思います。

kifu.jsはjQuery非依存

Kifuクラスの処理は一部を除いてどのライブラリにも依存してません。ajax棋譜データを読み込む(Kifu.ajax(), Kifu.ajaxLoad())ときのみjQueryを使用しています。それ以外はどのライブラリにも依存してませんので、ajaxを使用しなければ外部ライブラリは一切必要ありません。

jQueryShogiBoardがjQueryプラグインなので、jQueryが必要かと勘違いしてしまいがちですが、そんな事はありませんので好きなように組み込めます。

名前空間を汚さない

kifu.jsを読み込んだ時に使用するグローバルな名前は"Kifu"のみです。他にはグローバルな名前空間を使用しませんので、他のJavascriptライブラリと名前空間で衝突する心配はありません。

"Kifu"も衝突する場合はkifu.jsを読み込んだ後に"Kifu.noConflict()"で実行することで、"Kifu"を元に戻し別名に変更できます。

var jsKifu = Kifu.noConflict();  // Kifuを元に戻し、代わりにjsKifuに変更する

ファイル形式ごとにモジュール化

ファイル形式ごとに解析プログラムをモジュール化してます。kif形式だろうと、csa形式でも最終的な解析結果はkifuオブジェクトに格納されます。このような実装になっているため、他の形式の棋譜ファイルを読み込む場合に、その棋譜形式用のモジュールを作るだけですむようになります。