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

気ままなつぶやき

おべんきょしたこととか

2016年の振り返り

もう2017年が始まっている。

振り返るつもりはなかったけど、気が向いたので。

2016年は、一言で言うと”情報の処理に追われた一年”だった気がする。

12月に転職(初転職!)した。日本の会社からインターナショナルな会社へ。

前職は自由度の高い会社だったので、会社の雰囲気や自由度、使ってるツールとかについては転職後と、大きく変わった印象はなかった。

ただ、使う言語が変わった。これはとても大きかった。

日本語から英語に。
JavaからRubyに。

(アプリケーション寄りのバックグラウンドだったけど、インフラ寄りの知識がたくさん必要でそれにも追われていた気がする。。。)

情報の処理速度と処理精度が一気に落ちて、テクニカルなやりとりも、組織的なやりとりも、コミュニケーションでさえ、大変だった。
新しい情報がたくさんある中で、それを処理する能力が無さ過ぎて、毎日があっという間に過ぎて行った。

もともと、文章にしてもコミュニケーションにしても、”感覚的”な動きをする人間なので、情報処理速度とその精度が悪いと、結果として非効率的な動きをしてしまうことが多かった。

マルチタスクは得意な方だと思っていたけど、それも、言語がわからないとあんまり発揮できない。。むしろ情報に翻弄されてしまっていた。

2016年は、海外出張が多く英語に触れる機会もたくさんあったけど、それを処理するのもかなり大変。最初の方は、ほとんど頭に入ってこないし、自分の言いたいことも全く表現できない。今は、相手によって理解できることが増えてきてる。だけど、まだまだだなー。言いたいことも、話す内容によっては上手く表現できない。

情報の処理方法を改めて、情報の処理精度を上げることに重点を置いてやっていこう。インプットもアウトプットも。

さてさて。ちゃんちゃん

2015年を簡単に振り返り

2015年は、いろいろと転機が多かった気がするので、振り返っておこう

2011年の振り返り 1年のふりかえり - pnskのブログ

2012年を振り返り。 - 気ままなつぶやき

2013年は振り返ってなかったようだ

2014年の振り返り - 気ままなつぶやき

グループ会社の人たちと女性エンジニアコミュニティを作ってみた

2015年は、会社の制度に関わるワーキンググループに参加させてもらう機会があって、
グループ会社の人も含めて、会社全体について考える機会を多く得た。

その流れで、グループ会社を含めた女性エンジニアコミュニティを作った。(もともと先駆けみたいな集まりやってたけど。)
女性で何か集まってやりたかったわけじゃないけど、たまたまグループ会社の知り合った女性エンジニアたちが同じエンジニアとして魅力的で
一緒に何かしていきたいなって思ったのと、何かやるのにとてもいい規模感だなーと思ったのが理由であった。
結果的に、たくさんのエンジニアから刺激をもらうことになった。

結婚した

個人的には結婚したのも大きな節目。
もともと一緒に住んでいたので、生活が大きく変わったことはなかったけど、関係が公になったことで
前よりは、家をちゃんと回していかなきゃいけないなーという考え方になった気がする。
そして、お家のプロジェクトマネージメントをしながら、仕事もしつつ・・・のバランスをなるべく保つことを考えるようになった気がする。

転職

そして転職。人生、初転職。
不思議なもので、転職活動を始めると(と言っても1社しか受けてないけど)、
「この会社はいい会社だな〜」と(今となっては前職だけど)、会社の良さがたくさん見えた。
自分が思っている以上に制度は整っているし、たくさんのチャレンジをさせてもらった場所であった。
それなりの発言権ももらっていた。
何より、一緒に働いているチームの人達がとてもいい人たちばかりだった。
チームをマネージメントする立場にいたので、責任と権限をもらって仕事ができたし、自分の時間もある程度は確保できた。

じゃあ、なぜ転職したのか??ってなるけど、しない理由がなかっただけですた。

今の会社は英語話せない人なんかいなくて、多分私が一人目の英語を話せない人で、
日本支社はまだまだ人がいなくて、これからどんどん結果を出していかなきゃいけない状態で。
同僚は海外からリモートでやりとりしていてエンジニアとしてもかなり優秀な人たちな匂いがプンプンしていて・・・
と挙げれば挙げるだけ、チャレンジとチャンスとドキドキがあった。


とかなんとか。

去年の振り返りをしている頃は、まさか転職しているとは思っていなかったので、
来年はどんな振り返り書いてるだろうね。

TOKYO GAME SHOW 2015にいてきたよ

海浜幕張までいてきたー。
 

Photo log 

CLASH OF CLANS

会場入ってすぐ目に入ったのはCLASH OF CLANS!!!!
 
今はほとんどやってないけど、結構はまったゲームだったのでテンションがあがった。
力の入れようが凄く伝わるな。
f:id:pnsk:20150918142827j:plain
 
ブースの迫力もなかなか。会場外にも広告打っていたので、このGAME SHOWへの意気込みを感じるなー。
f:id:pnsk:20150918142838j:plain
 

GREE  消滅都市

消滅都市以外のアプリ紹介もあったんだろうけど、今は消滅都市!

最近ずっとやっていたアプリ♪

謎のバーみたいなエリアがあって、踊る人たちが。。

f:id:pnsk:20150918142851j:plain
 

チェス

すげー楽しそうなチェスボードがあった。これゲーセンにあったら凄く楽しそうだな。

家に欲しい。

f:id:pnsk:20150918142910j:plain
 

BATTLE FRONT

スターウェーズ!!
すごいやりたかったけど、並びすぎてたので断念。
ハッシュタグをつけてSNSあげるとステッカーもらえるよ!って書いてたので、ステッカーだけGET!!
f:id:pnsk:20150918142924j:plain
 

Cygames グランブルファンタジー

かなり力の入った感じだな

f:id:pnsk:20150918142952j:plain
 
ディスニーランドをなぜか連想してごめんなさい。
駅降りてすぐに水やウェットティッシュを配布していたり、こういうところに広報の人の強さを感じてしまう
f:id:pnsk:20150918142942j:plain
 

進撃の巨人

どうしても自分の興味あるものにひかれてしまう。

 

進撃の巨人のゲーム出るってよ!やりたいけど難しそう!

 

むしろ巨人になって人間を食べるゲームやりたってみたい

f:id:pnsk:20150918143002j:plain

 

 

Buisiness DAY

今日はビジネスデイなので、ビジネス周りもみてきたよ。

ビジネスブースは小さくて、なかなか見つけられなかった。

JBS 

CG制作環境用VDIの紹介がされていた。社内、外注、外出先など多環境からアクセスできる統合環境。オンプレもクラウド版も提供される様子。セキュリティー面、ID管理も考慮されているようで、とても興味深かった。デザイン制作は、外注とのやり取りも多いし、著作権周りもすごく気をつけないといけない部分なので、良さげだなーと。デザイナーさんじゃないからあれだけど。

Critical Hit

スマホアプリ向けのクラッキング耐性診断サービス。

他にも色々ありそうではあるが、安さを強調してきていた印象があるので相場が気になる。

BrushUp

デザイナー向けのプロジェクト管理ツール
クラウド版のみでオンプレはない。
アカウント管理は独自管理なので、他ID管理の連携は非サポート。APIなし。
psdなどのファイルをそのままあげて、コメントなどに表示しながらデザイナーさんのタスク管理が出来る。
sketchは対応していない。
Slackなどチャットツールとかと連携はできないようだなー。デザイナーさん向けだからそれでいいのかな。
 
「履歴管理」をサポートしているっぽいけど、アップロードされるタイミングでpsdとかはpngなどに変換して保存しているっぽいので、いわゆる画像データの履歴管理ができるわけではないのかな。。あげたタイミングのスナップショットを保存しているといった感じなのかなー。どうなのかな
 
nulabのBacklogを意識しているようであった。※話した感じ 
 

Oculus

Oculus自体の展示もあったけどOculus Riftを使ったゲーム?の紹介を展示しているところがいくつかあった。

これからOculusを使ったゲームがどんどん増えたら楽しそうだなー。

Oculusはデバイスの座標とってるっぽいけど、アイトラッキングもできるのかなー

tobii

Oculustに近しいのかな・・? 

tobiはアイトラッキングができる。

事業スコープとしてはゲーム以外にも、医療事業とか入ってるみたい。

行列ができていたので体験はできなかったー。(並べ・・)

MiraiDC

岐阜のデータセンター。足湯があるらしい。

つってもまだサーバないから冷たいですっていってた(笑

岐阜だし、名古屋圏とかから利用されるイメージなのかなー

Unreal Engine

キーワードでよく目にしたゲームエンジン。私の周辺ではUnityやcocos-2dxがほとんどだったので、もう少し注意してみておこうと思った。 

Amazonアプリストア

そんなのあったんだ。知らんかったw 

 

 スーベニア

f:id:pnsk:20150918151828j:plain
 
わーい(^ω^)
 
たまにはこーやって刺激を受けるのもいいですな。

 

 

Appear.in for HipChat

|з゚)チラチラ

|з゚)ちょっと触ってみただけのやーつ

appear.in — appear.in plugin for Hipchat


なんか、今日ブログでAppear.inのHipChatプラグインが出たよっていってたので早速いれてみた

プラグインいれる

HipChatの管理権限をもっている前提

[Group admine]から[Integrations]を選択し、Appear.inのインストールボタンを押せばいい

とりあえず、[Configure]とか[details]的なリンクあるけど、何か設定とかしてない。

appearコマンド⇒ルーム作成

/appearコマンド叩けっていってるのでやってみた

f:id:pnsk:20150401012500p:plain
なんかリンクでた(※黒で隠してるところは、HipChatで使ってるユーザ名が表示されている)。ほほう。


リンクをクリックするとConnectingしてる
f:id:pnsk:20150401014958p:plain

きたー。:+.゜ヽ(*′ω`)ノ゙。:+.゜
f:id:pnsk:20150401015425p:plain

ていうか突然、顔が映ったので、うっひゃあって隠れた。

https://appear.in/[room_name]/efficacious-tarsier
https://appear.in/[room_name]/long-goldfish
みたいなリンクになってる。room_nameの後ろの単語は、勝手に付けられるroom名っぽい

標準では、公開になってるようなので、このリンクを共有したらみれちゃう

ルームをロックする

ヘッダのリンクから簡単にロックできるのでロックする
f:id:pnsk:20150401015634p:plain

そうすると、他のアクセスがあると「ノックしてね」ってでる
f:id:pnsk:20150401015713p:plain

ルームを固定して作っちゃう

「Claim room」からルームを固定して作成できる
これをすることで、カスタマイズとかができる。
ルームへの招待も、管理者としてキーを発行することができる

とりあえず、「pnsk」って作ってみた。プロフィール画像は写真撮ってこようとしてきたので、とりあえずiPhoneケースのネコちゃんを犠牲にした
f:id:pnsk:20150401015938p:plain

そのあとは、携帯番号またはメールアドレスを指定すると認証コードが送られてくるのでそれで認証する

するとデスクトップの通知を勧められるので、ONにするとchromeのアドオンが入った。通知してくれるらしい

プロフィール画像を設定して
f:id:pnsk:20150401020509p:plain


できたー
f:id:pnsk:20150401020531p:plain

その他

同時チャットは8名までっぽい

対応ブラウザ

chrome, firefox, operaのみ対応っぽい

safariでアクセスすると怒られる
f:id:pnsk:20150401020952p:plain

appearコマンド

変なの入れたら律儀に怒られた
f:id:pnsk:20150401021347p:plain

日本語のroomはだめ

日本語のHipChatルームからappearコマンド打つと使えない

テストroomでうまくいったから、調子のって他の人がいるルームでやるとこんな目にあった↓ (´;ω;`)ブワッ
f:id:pnsk:20150401021507p:plain

対応端末

mac,win,iOS,androidで対応してるぽい

画面共有できる

f:id:pnsk:20150401105923p:plain

音声や動画のON/OFFができる

とりあえず、動画をOFFにしてみたら、生活音の聞こえる匿名チャットツールになった。
誰が発言してるかわからなくなる
f:id:pnsk:20150401152818p:plain

ページを開きっぱにしないこと

グループチャットで、ページを開きっ葉にしてるとアホ面が公開され続けてしまった。。。orz



もうちょっとイロイロ使ってみて、HipChatでいかせるか検討したいなー

【IntelliJ】Bash Support

bashスクリプトをいつもvimで書いてたんだけど、IntelliJbash対応してるってきいたので。

プラグインあった。
JetBrains Plugin Repository :: BashSupport

[IntelliJ] > [Preferences...] > [Plugins] で bashで検索してなかったのでインストールした。

作った関数を補完できる

f:id:pnsk:20150330174133p:plain

変数も補完できる

f:id:pnsk:20150330174212p:plain

なにこれ便利。

いつも変数を ${PARAM}って括弧で囲んでるんだけど $PARAMじゃないと補完されない。

bashの関数も補完

ifeeって補完されたし、なんやろって選択したら
f:id:pnsk:20150330174259p:plain

こんな感じに補完された。 
f:id:pnsk:20150330174321p:plain

あら便利٩( ᐖ )و

Hubotと戯れる

Hubotインストール

$yum install npm
$yum install nodejs

バージョンはこんな感じ

$node --version
v0.10.28
$npm --version
2.5.0

で、必要なモジュールとか入れる

#npm install coffee-script hubot -g 
#npm install -g yo generator-hubot

で、このままhubot動かそうとするとやたら権限まわりで怒られる。

良く見ると npmでグローバルインストールすると`/usr/lib/node_modules`配下にインストールされてくるんだけど、なんか権限が軒並みこんな感じになってた。 nobody....

ll /usr/lib/node_modules/ | grep hubot
drwxr-xr-x 9 nobody cy_admin 4096  213 18:46 2015 hubot

yumでインストールしたやつは軒並みrootになっているんだけど。。
とりあえず、あとでインストールしたものは、`chown -R root. hubot`みたいに権限を合わせました。

このままでも権限のエラーがでるんだけど、どうやら、実行ユーザのホームディレクトリ配下に `.npm`ディレクトリがあって色々キャッシュしている様子。
この中できっと権限がごちゃごちゃしちゃってるのであろう。。。てことで削除したらひとまず準備完了

hubot起動など

$mkdir chako
$cd chako
$ yo hubot

テスト

$cd chako
$./bin/hubot

Hubot> hubot ping
PONG

hipchatと連携

$cd chako
$npm install hubot-hipchat

これみて設定いれただけ。
hipchat/hubot-hipchat · GitHub

#!/bin/sh

set -e

npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
export HUBOT_NAME="chako"
export PORT=80

#see https://github.com/hipchat/hubot-hipchat

export HUBOT_ADAPTER="hipchat"
export HUBOT_HIPCHAT_JID="hogehoge@chat.hipchat.com"
export HUBOT_HIPCHAT_PASSWORD="hogepassword"

#optional
export HUBOT_HIPCHAT_ROOMS="hogeroom@chat.hipchat.com,hoge2room@chat.hipchat.com"
#export HUBOT_HIPCHAT_ROOMS_BLACKLIST=""
#export HUBOT_HIPCHAT_JOIN_ROOMS_ON_INVITE=""
#export HUBOT_HIPCHAT_HOST="cyberagent.hipchat.com"
#export HUBOT_HIPCHAT_XMPP_DOMAIN=""
#export HUBOT_LOG_LEVEL="debug"
#export HUBOT_HIPCHAT_RECONNECT=""

exec node_modules/.bin/hubot "$@"

optionalで色々指定できるみたいだけど、特に何も指定していない。
hubot-hipchatは、hipchatに5222ポートで通信しにいくのでサーバからポート空いてるのを確認してれば問題ない

f:id:pnsk:20150308191012p:plain

hubotのスクリプトを使ってみる

github/hubot-scripts · GitHub

カタログがいくつかあるので、楽しそうなのを追加する
Hubot Script Catalog

hubot-scripts.json
に追加すれば良いらしい

ちょっとやってみた

["room-info.coffee","flip.coffee"]

room-infoの方はこんな感じ
hubot-scripts/room-info.coffee at master · github/hubot-scripts · GitHub

f:id:pnsk:20150308194730p:plain
※chako_testというhipchatのroomでやってる


flipの方はこんな感じ
hubot-scripts/flip.coffee at master · github/hubot-scripts · GitHub

f:id:pnsk:20150308194753p:plain

※flipをnpm installした

hubotのスクリプトを書いてみた

GHEのライセンスの利用状況ができるものと、サイズの大きなリポジトリランキング(2GB以上のもの)を表示するスクリプトを書いた。

使ったAPIはこれ
Enterprise | GitHub API
Search | GitHub API

ライセンスのAPIはGHEの2.1から利用できるものらしい


hubot-script/ghe-status.coffee at master · pnsk/hubot-script · GitHub

でたでた
f:id:pnsk:20150310135457p:plain

なんかもっとちゃんと書けそうだけど・・・。いったん。。

ちゃんちゃん。

【maven】帰ってきたnexusの設定いろいろ

アカウントの設定

Security > LDAP Configurationで設定する

LDAP認証

ユーザはLDAPアカウントでログインできるようにする。
LDAPのログイン条件は、こんな感じ

$ldapsearch -x -h xxx.xxx.xxx.xxx "(&(uid=*)(description=maven))"

LDAPアカウントを持っていればOKではなくて、descriptionでフィルタをかけている

LDAP Configuration

「Connection」項目でLDAPサーバの設定をする。
f:id:pnsk:20150210190339p:plain

「Check Authentication」ボタンでConnectionの確認
f:id:pnsk:20150210190425p:plain

ユーザとグループのマッピング

設定内容はこんなかんじ
f:id:pnsk:20150210190655p:plain

User Element Mapping

ここでは、LDAPデータからNexusのユーザ情報をマッピングして登録するのと、ログインするときのフィルターの設定をしている

ldapsearchコマンドで返却された項目から、必要なものを紐づければいい。
今回はNexus上のユーザIDを、LDAPのuid項目に当てはめたかったのでそう設定している。

今回は、description=mavenのフィルターを付けている。

Group Element Mapping

Group側の設定では、今回LDAPのfilterでグループを作っておく。
このGroupの設定で、あとでrole(権限)を付けるために作成しているけれど、roleをグループで管理したくない場合は、Groupの設定はしなくて問題ない

※ここでdescriptionっていうグループがあるわけではなくて、LDAP上のdescription項目でグループ作るよって決めただけ。


「Check User Mapping」ボタンをクリックして、対象のユーザが表示されれば、設定は正しい。

f:id:pnsk:20150210191647p:plain

LDAPアカウントでログイン

上記のLDAPマッピング設定をしただけだとLDAPアカウントでログインはできない。

Administration > Serverの「Security Settings」で「OSS LDAP Authentication Realm」をSeleceted Realmsの方に移動してやる必要がある
f:id:pnsk:20150210192130p:plain

個別アカウントの設定

CIツール経由でmvn deployする場合等を想定して、ユーザアカウントとは別でアカウントを作成する

Security>Usersから
f:id:pnsk:20150216123733p:plain

「Nexus User」を選択してアカウントを作成する。

roleの制御

さてはて。作成したユーザに権限(role)を設定する
Security>Rolesから、権限の指定をできる

結構細かく権限の付与をすることができる

roleのカスタマイズ

「Nexus Role」を選択
f:id:pnsk:20150225021138p:plain

「Add」から好きなのを組み合わせる。
f:id:pnsk:20150225021211p:plain
今回は、deployの権限と、artifact uploadを組み合わせた権限を作ったお

LDAPで紐づけたアカウント群にroleを付与

「External Role Mapping」を選択する
f:id:pnsk:20150225015628p:plain

LDAPで設定されているdescriptionたちが沢山出てくる(なんか色々あれなので一部モザイク・・)
f:id:pnsk:20150225015822p:plain

これはユーザ作成時にGroupMappingでdescriptionを指定したから、出てくる。

今回はmavenを選択して、descriptionがmaven(本当はhogehoge.mavenだけど)に該当するユーザに権限を付けていく
f:id:pnsk:20150225020652p:plain

最初はこんな感じで作成されるから「add」を選択して、権限つけて「save」すれば完成
f:id:pnsk:20150225020859p:plain

今回はあらかじめ作成しておいた、カスタマイズしたroleを追加した。

jvmの設定変更

wrapper.confで変更できるよ。

${NEXUS_HOME}/nexus/bin/jsw/conf/wrapper.conf

ポートの変更

nexus.propertiesで変更できる。

${NEXUS_HOME}/nexus/conf/nexus.properties

でも80とかにはできないお。nexusさんjetty使ってるので。

リポジトリの設定

リポジトリは大枠で3つ管理するイメージ

  1. nexusに直接あげた内部ライブラリ
  2. 3rdpartyのライブラリ単体
  3. 外部mavenリポジトリ

nexusに直接あげた内部ライブラリ

標準で用意されている「Releases」と「Snapshot」を利用する。
nexusにログインして直接アップロードしても良いし、pom.xmlに設定してアップロードしても良い。
アップロードは、ユーザにアップロード用のroleが設定されている必要がある

3rdpartyのライブラリ単体

標準で用意されている「3rdparty」を利用する。
但し、なるべくライブラリ単体ではなくて、リポジトリが存在するならそれを指定すべき。

外部mavenリポジトリの登録

外部のmavenリポジトリは、proxyリポジトリとして登録する

例えば、Springframeworkのmavenリポジトリを登録する場合

http://maven.springframework.org/release/

Views/Repositories>Repositoriesから

f:id:pnsk:20150217152952p:plain

設定内容
f:id:pnsk:20150217153039p:plain

Repository Policyは登録するリポジトリに合わせる(snapshotとか)

トラブルシューティング

データ上存在するのに検索にでてこない

データ移行してきたときによくある。

springframeworkのmavenリポジトリを例にとる

こんな感じに、データ上は存在する
f:id:pnsk:20150223154553p:plain

でもインデックスでは存在しない(勿論、検索にも引っかかってこない;;)
f:id:pnsk:20150223154626p:plain

そんなときは、リポジトリを選択して「右クリック」!!!

「Repair Index」で元通りやで
f:id:pnsk:20150223154703p:plain