2017年2月24日

「知識がないと、どれくらい知識があるのか測れない」問題

過去3回ほど、仕事と組織構造が両方一緒に変わるという意味での、おっきな異動がありました。


1回目は「C言語はまぁできる人」というフダがついてドナドナされました。

何も勉強せずにネトスペがとれた直後だったりもしたので、僕本人はIPネットワークとかLinuxとか黒い画面とかマルチメディアまわりについてそれなりの人、のつもりでした。

アセンブラとCで記憶型液晶を戦う世界で、μITRONがーとか言う世界でした。ところが、ある日突然WinCEでMacromedia FlashとかVC++でDirectDrawみたいなのに方針が変わる事件が発生しました。今思い返すとなぜ契約続行したのか、おかしさしかありません。


2回目は「どちらかと言えば問題児で、WinCEをやってた人」というフダがついてドナドナされました。

2年ぐらい上司と面談の時にしか話をしない期間があったので組織に残すべき人とは判断されなかった模様です。この後、DirectShowに泣かされた次ぐらいにJavaEEとDebianと出会って「だいたいインターネットとLinuxで世の中なんとかなる」という世界に出会えたので、ドナドナされてよかったと思っています。問題児だったことは否定しません:)


3回目は「だいたいなんでも屋の、いくつかのジャンルでスペシャリストの人」というフダがついた感じで、異動というよりは仕組みのシャッフルがおきました。

スペシャリストは「どこかが尖っている人」だと思いますが、どのくらい尖っているのか、測るモノサシがないと、鞘が用意できません。

分かりやすいジャンルを挙げると、僕は(ピークが2年前なので現時点ではなまくらがさらに錆びた感じなのは置いといて)

・Android:社外でもそれなり
・iOS:ゼロじゃないけどひよっこ
・Web:社内標準よりははるかにマシだけど世間標準かは怪しい

ぐらいの自覚なんですが、これが今のぼんやりとした会社のモノサシに当てると多分こうなっています

・Android:できる
・iOS:できる
・Web:できる

おーい。


流石に物理的に組織が縦割りになりすぎて。「○階に物差しもって遊びに行く」とか「○○拠点に背比べしに行く」とか機会がなくなっちゃいましたね。

2017年2月23日

共有されないと情報として意味がないのだから、「情報共有」という用語はそもそもおかしいのではないか

mixiクローンなグループ会社向けSNSの利用が推奨になった
→意識高い人から友達申し込まれて疲れた
→特化コミュニティつくって好きなこといっぱい書いた
→反応ほぼないしあっても顔見知りだし、どうせ社内情報書けないし自分のblogでやったほうがよいのでやめた

社内Wiki貸し出しサービスが始まった
→複数のWikiでいっぱいノウハウ書いたりBBS系プラグイン整備してみんなで「新聞や雑誌を読んだ所感を述べよう」日記みたいなのをやった
→○○部/課Wikiみたいなのにするから組織変更のたびに死亡して廃墟となっていった

全社Wikiができた
→ただのぐぐった結果のコピペ寄せ集めになってぐぐった方が早いオチになった
→交渉して権限もらってリニューアルした、各部門のジャンル特化WikiのRSSクロールしてソートするポータルにした
→各部門のジャンル特化Wikiがプロジェクト情報を放置したりして、NDA事故の気配がする危険な廃墟が現れ始めた
→廃止された

PukiWikiに慣れていたのでPerlのFreeStyleWikiは色々ノウハウが足りず、PukiWikiで皆が書きやすいプラグインを導入しようと思った
→IISではPukiWikiは動かなかった。
→UbuntuでWordPressの運用を開始した。
→めっちゃエントリを書いたが残念なことに固定客ばっかりだった。それなりには楽しかったしURL一つメールで投げればいいのはやはり便利だった。
→その後、「みなもすなるblogというものを」な流れで、WordPressが乱立した
→誰も書かない、メンテできない、ただの固定IPなPCを各地で動作させており、アドレスがわからず流入口がない、で寂れた
→LDAP認証必須の流れに従って一斉閉鎖となった

めっちゃCGIって感じの重役やベテラン持ち回り日記はそれなりに機能した
→「いいね!」が「いいですね!」なのは苦笑いだったが慣れた
→閲覧権限整理の流れで縮退したが一応生き延びている気配がする

社外ページがMovable Type製でリニューアルされた
→外注丸投げ後、仕組みを理解していない人が出力されたHTMLを直接編集して耐えていた
→静的HTMLを直接差し替えてデザイン刷新が行われるという事件が起きた
→Movable Typeはどうなったのか知らない。今はおそらく違う仕組みのはず。

GitHubに感動したのでGitLabを立てた
→エクスプローラから右クリックできないと困る亀Subversion勢の迫害を長く受けた
→定着したがWeb UIは特に使われていないようだ

DevOpsの流れでChefとかが盛り上がった
→社内VPSでGitBacket+Redmineイメージ貸し出しサービスが始まったこれは勝つる
→RAM 512MBという貧弱スペックでも割高で、プロジェクトが終わるたびに即座に破棄が必要で、不人気だった
→OSがアップグレードされず他のアプリ(主にnode系)をあわせるのが面倒で形骸化した

Slackを使ってChatOpsが楽しいと思ったので、DevHubでそれなりに遊んだ
→GitLab/GitBucketからのWebHookを書いたが僕しか喜んでいない気配はした
→「ようてんさんいますかー?」「質問があるんですが」とチャットで反応を待つ同期コミュニケーションマンがとても多く、Slackで楽しかったようには使えなかった

テキストノウハウはいい加減git+mdでいいだろう、とGitBucketのWikiで全部書き始めた
→GitBucketはLDAP認証にも対応だ、これで勝つる
→パスワード変更時、MacがOSレベルで認証proxyを越えようとしてロックがかかるので、定期的に必ずアクセスできない日ができるという恐怖のリポジトリになった

顧客からの指定でBacklogやSlackなどを聞くようになり、もう一回ChatOpsだ、とSlackクローンを試行した
→そもそもSlackも含め「Webchat」はWebフィルタリングの対象だった、インストールできず敗退した。


今、ないということは、必要がなかった、ということだと整理している。

2017年2月22日

「認証proxyヤバイ」問題

1. 設定しないとインターネットが利用できない

 逆に言うと設定したら利用できるぐらいならそこまでコストは高く無いです。

2. 種類が何種類もあり、OS・ソフトウェア・バージョンによって設定方法がマチマチ

 IDEとシェル・バッチのうち片方しか越えない、みたいな話はザラで、Ubuntu14.04と16.04で違うとか鬼なラインがあります。

 ぐぐって見つけた解決法で解決しない確率が体感50%を超えます。とくに国外(英語)の情報は勝率が悪いです。
 実現方法に何種類かがあるのが原因なようで、「i-○ィルター」が最恐っぽいです。

3. ブラウザの利用までしかサポートされていないケースがあり、ブラウザしか使わない層はコストが想像できていない

 運用者と責任者がコストを把握できなくて、適切な対策がとりづらくなります。

4. 認証proxyを使っていない人にコストが説明できない

 「認証proxyのせいでセットアップに苦戦して時間がかかりました」とか顧客に言うわけにもいきません。

5. セキュリティ目的で導入されるとそれを理由に詳細仕様が手に入らないため、ノウハウが共有されづらい

 環境のアップデートですぐ形骸化するので、それなりにコストを払ってでも共有すべきだと思うのですが、
 業務情報や個人の情報を省いた形で情報を整備するのが面倒らしく、組織的なサポートは最終的にはほぼなしでした。

2017年2月21日

2段階目以上の組織長は「同じ仕事をする仲間が隣に常に居る」問題

10年スパンといわずもっと短いスパンでも観測できそうですが、「同じ仕様のITシステムを構築するのにかかる時間」というのはなんかやたらめったら短縮されてしまいました。

プログラム開発によるITシステムを用いたサービスを実現するのに以下の3つの工程に強引にまとめて考えるとします。

1) 企てる →人間が相手
2) 作る →機械が相手
3) 試す →人間が相手

「2) 作る」という工程の中にも、機械が相手のものと人間が相手のものはあると思いますが、人間が相手のしくみは世界の歴史上、生産性向上がサチっていますが、機械が相手のしくみは生産性がまだまだ上がり続けています。

その結果、時間の短縮もありますが、体制がガンガンスリムになっている印象です。

<例>
10年前:システムの要素Aの機能αを3人で
5年前:システムの要素Aを機能α・β・γを1人1機能で
 最近:システムの要素Aを1人で
 今後:サービスのITシステム部は1人で

この一人(以下)ってのが強烈にリスクで、ちゃんとしたITエンジニアであればその危機感をトリガとして、「なるべく標準の技術で、ノウハウを共有して、薄く広くでも守備範囲を重複させて」といったリスク管理をすると思います。

さて、ちゃんとしていない「ふつうの」ITエンジニアだった際には、どうなるかというと、これがまぁ驚くほど「あるがままに降って湧いた技術を選択し、ノウハウは共有せず、特定顧客と仕事をしたことを価値と考える」モードになるんです...

僕『何の仕事してたの?』
*「○○(顧客名)の仕事をしてました」
僕『何をしてたの?』
*「XYZ(プロジェクト固有名詞)を触ってました」

こんな感じなので、「この技術は1人しか把握していない(他に居るのか居ないのか分からない)」状態が進んでおり、1段階目の上司は気づき始めている人が多いのですが(プロジェクトの合間にすぐ困りますからね)、どうも2段階目以降の組織長は「客は変わったけど仕事のやり方は変わってない」の範囲で済んでしまっているギャップを観測しています。

まぁホワイトですし、お金さえあればガチャは引けるわけで、なんとかなると思いますが、そこに面白さは感じません。
みんな同じ役割をこなすのは効率がよくないと思いますが、一緒の仕事(目標)をしてない人と同じとこに所属してもメリットは...

僕は
「新しいことがしたかった」
わけでも
「みんなと違うことがしたかった」
わけでも
「みんなに新しいことを教えたかった」
わけでもなくて
「みんなで同じことがしたかった」
んですが、主張や説得が下手だったのであまり理解してもらえなかった模様です。

2017年2月20日

LINE BeaconはBLEビーコンの1種だったのですね

さっぱり知らなかったのですが、RasPiみたいにでかくて電源系のお守りが必要な子でクローンがんばるのも大変だろう、とiBeacon互換(でスマホクローンができるのかどうか)のあたりだけちょっとのぞいてみました


ラズベリーパイでLINE Beaconが作成可能に!「LINE Simple Beacon」仕様を公開しました
https://engineering.linecorp.com/ja/blog/detail/117
LINE Simple Beacon
https://github.com/line/line-simple-beacon/blob/master/README.ja.md

>LINE Simple Beaconは、デバイスのなりすましを抑制するメカニズムが存在していません。 そのため、ビーコンデバイス識別IDでの正真性を前提としたBotサービスには利用しないでください。
うい。

02 # Data length : 2byte
01 # AD Type : Flags
06 # BR/EDR Not Supported(4) | LE General Discoverable Mode(2)

03 # Data length : 3byte
03 # AD Type : Complete list of 16-bit UUIDs available
6F # 0xFE6F固定 LINE corp
FE

0E # Data length : 14byte
16 # AD Type : Service Data
02 # 02固定 [LINE Simple Beacon仕様] Frame Type
XX XX XX XX XX # HWID, Line Botから払い出される
7F # 7F固定? [LINE Simple Beacon仕様]

というわけで比較するとこんな感じ。

iBeacon:
 Flags(3bytes) + Manufacturer Specific Data(26bytes)(UUID+Major+Minor+TXの入ったいつものやつ)

LINE Simple Beacon:
 Flags(3bytes) + Service 16bit-UUID(4bytes) + Service Data(14bytes)(HWID 5bytesのみ)
 または
 Flags(3bytes) + Service 16bit-UUID(4bytes) + Service Data(23bytes)(HWID+Device Message 9bytes含む)

・LINEアプリが勝手に吸ってサーバにあげて、(必要なら認証の上)LINE bot/LINEアプリにコールバックっぽい。
・iBeaconじゃないのでiOSのBackgroundあれこれの恩恵は受けられない。iOSアプリでLINE Simple Beaconクローンも作れない。それで「お店でアプリを起動して、商品でボタン押してね」なのですかね
・Eddystone-UID互換でもない、やる気あるな。
・LINE BOTの「うおおおそこあけてきたか」級ではなくて、LINE MALLぐらいの感覚で期待するのが良さそう:)


○きがむいたらかくにんする

たぶんAndroidでもSimple Beaconは組める
https://developer.android.com/reference/android/bluetooth/le/AdvertiseData.Builder.html#addServiceData(android.os.ParcelUuid, byte[])

ただし、setConnectable(false)で02 01 06のFlagsがちゃんと出てくれそうなら。
https://developer.android.com/reference/android/bluetooth/le/AdvertiseSettings.Builder.html#setConnectable(boolean)
・setConnectable(true)だと02 01 16になって互換があやしい
・んでも本物のLINE Beaconはメッセージ書き換えとかできるだろうし02 01 16だったりしないかな...それとも多重Advertiseかな

2017年2月16日

歴代PCメモ

歴代ノートと歴代PCをよく忘れたり調べ間違えたりしてるのでまとめなおしてみた。
強いて言えばサブノートが好きだったけどスペック厨でもなかったし特に面白味はない。

○歴代ノートメモ

1998
SONY VAIO 505初代 PCG-505 Pentium MMX-133 64MB
http://www.sony.jp/products/Consumer/PCOM/VAIO/Note505/

2002
TOSHIBA Libretto L5 PAL5080TNLN Crusoe TM5800 256MB
https://www3.toshiba.co.jp/pc/catalog/libretto/020424l5/spec.htm

2005
Panasonic Let'sNote R4 Pentium M 753 512MB
http://panasonic.jp/pc/p-db/CF-R4GW5AXR_spec.html

2010
Acer Apsire A3820-A52C Core i5 460M 2GB(のち6GBに増設)
http://kakaku.com/item/K0000163585/spec/

2011
Apple MacBook Air 11inch Mid 2011 Core i5 1.6GHz MC969J/A 4GB
https://support.apple.com/kb/SP631?locale=ja_JP&viewlocale=ja_JP

2012
DELL XPS 12 9Q23(2012) i5-3317U 8GB
http://www.pasonisan.com/xps12/9q23-top.html

2013
Apple MacBook Air 11inch Mid 2013 Core i5 1.3GHz 8GB
https://support.apple.com/kb/SP677?locale=ja_JP&viewlocale=ja_JP

2014
MSI GS60 2PE-040JP i7-HQ4710 GTX870M 16GB
https://www.ark-pc.co.jp/bto/customizer/?pc_id=0234

2015
G-TUNE NEXTGEAR NOTE i5710 i7-6700HQ GTX970M 16GB
http://www.g-tune.jp/note_model/i5710/

○ついでにデスクトップ

1997
IBM PC350 Pentium MMX-166 128MB

1999
Celeron 433 256MBあたりだった気がする

2002
Athlon 1600+ Palomino GeForce MX 400 512MBあたりだった気がする
FX5200かFX5500をもってた気がするんだけどいつ運用したんだこれ・・・

2006.04
Pentium M 750 7600GS 2GBで新規購入
http://b2hs.netgamers.jp/archives/2006/04/pc.html

2007.08
C2D E6750に変更
http://b2hs.netgamers.jp/archives/2007/08/c2dg33.html

2010.01
9600GTGEに変更
http://greety.sakura.ne.jp/redo/2010/01/from-geforce-7600gs-to-9600gtge.html

2016.03
i5-6600K 970GTX 8GB(16GBのつもりが店に間違えられた)でケース以外刷新
https://twitter.com/youten_redo/status/714783130255695872