一角獣は夜に啼く

ただの日記です。

思ってることとか考えたこととか適当に書きます。 主にソフトウェア開発の話題を扱う 「ひだまりソケットは壊れない」 というブログもやってます。

2018 年 秋アニメ 見始めてる #日記 #アニメ

最近病床に伏せっているからかアニメを見る数が増えている。 この数クールは 『ダリフラ』 とか 『シュタゲ ゼロ』 とか物語性の高い作品を見ることが多かったけど、今期は今のところえっちな作品しか見てない気がする。

最初に見たのは 『抱かれたい男 1 位に脅されています。』 (だかいち)。 俳優同士の BL 作品。 主人公 (?) のたかとさんのプライドの高さと東谷くんの子犬かわいい感じなのに強引なところのギャップ萌えなどが魅力。 東谷くんの強引な攻めがえっちだった。 たかとさんが 「プライベートでは喰われても、仕事では喰われてたまるか」 みたいな謎のプライドを見せてくるところがよい。 今後関係性がどう変わっていくのかとかが気になる。

こないだ僧侶枠という概念を教えてもらったので 『終電後、カプセルホテルで、上司に微熱伝わる夜。』 (終カプ) も見てる。 僧侶枠というのは 『僧侶と交わる色欲の夜に…』 から始まった ComicFesta のアニメ作品群を指すらしい。 初めて僧侶枠の作品を見たけど画面全体が白い光になるぐらいの過激さでえっちだった。 カプセルホテルなのに自分の部屋 (?) に他の人が寝ていることがあるのかとか、人が 2 人も入れるのか、とかいろいろ思うところはある。 2 話以降どう展開していくのか気になる。

それから 『CONCEPTION』。 異世界を救うために 『愛好の儀』 という名の性交を行う話らしい。 えっちだった。

そして 『閃乱カグラ SHINOVI MASTER -東京妖魔篇-』。 1 期とは世界観が変わった気がする? (あんまり覚えてない。) 相変わらずの爆乳ハイパーバトルでえっちだった。 クリスマスもやしケーキが泣ける。

ゴールデンカムイ』 の 2 期も見てる。 江渡貝くんの作品がえっちすぎた。 こういう感じで職人を極めるみたいな人よいよね。

えっちじゃない作品としては 『ユリシーズ ジャンヌ・ダルクと錬金の騎士』 とか 『学園 BASARA』 を見た。 『ユリシーズ』 は 1 話を見ただけだと展開についていけなかったけど、面白そうではある。 2 話以降も楽しみ。 『学園 BASARA』 は 『BASARA』 を知らない人にはちょっと難しかったので 2 話以降は見ない気がする。

『技術書典 5』 に行ってきた

techbookfest.org

初めて 『技術書典』 に参加してきた。

技術書に限らず同人誌即売会的なものに参加したのが初めてだったので、どきどき、って感じだった。
戦利品はこちら。

f:id:nobuoka:20181009225739j:plain

釘宮さんの本Android Jetpack の活用方法を学んだり、へんてこさんの本でシェーダを学んだりするぞー、という気持ち。
最近分割キーボードに興味があるので自作キーボードの世界にも入ってみる。

東芝の dynabook VZ82/FL を買った

家用のモバイルノート PC を買いたい と言っていたのだけど、結局、東芝の dyanbook VZ82/FL を購入した。

購入した製品

toshibadirect.jp

これを購入した。

こういう感じで、お値段はなんと 163,944 円! お安い!

ほかの候補について

お店に見に行ったところ、やはり光沢液晶は目に優しくなくて候補外となって、候補の中だと dynabook ぐらいしかないかなぁ、という感じになった。 代わりに候補外でもいくつか良かったものを見つけたりはした。

  • ASUS Zenbook UX430UN-8550 : 結構良かった。 税別 138,360 円と値段もかなり手ごろだった。 電池の持続時間が他の候補と比べてちょっと短い。
  • VAIO S11 や S13 はもともとスペックがそんな高くないという認識で候補に入れてなかったのだけど、意外と良いスペックだったということがわかってこれも候補に入れた。 ただ値段は高い。

ディスプレイがタッチパネルになっているのは dynabook しかなくて、値段とタッチパネルの有無あたりで検討した結果、dynabook が一番よかろう、ということで dynabook を購入した。

dynabook VZ82/FL を買って

個人的には買って良かった。

Windows Hello が良い

dynabook VZ82/FL は Windows Hello 対応機で、顔認識や指紋認証でログインできるようになっている。 私にとっては初めての Windows Hello 体験。 これが思ってた以上に良くて、Windows PC を起動したりスリープから復帰したりすると、自動的にカメラと赤外線センサーが動いて、顔認識を始めてくれる。 PC の前に居たら勝手に顔認識をしてくれてログインできる。 単にそれだけではあるのだけど、体験としては結構良い。

指紋センサーがタッチパッド上にあるのは 「なんでや……!」 って気持ちにはなるけど、実際に使ってみてて気になるかというと全然気にはならない。

ファンの音

CPU がちょっとでも動いているとわりと温度が上がるので、ファンも結構頑張って回ってくれる。 静けさを求めてるとちょっとうるさく感じる気はする。 とはいえ最近の薄いモバイル PC は大体こんなもんという気もする。

ディスプレイ

輝度を落として全画面真っ白にするとわかりやすいのだけど、ちょっとぎらつき? を感じる。 人によると思うけど、長時間このディスプレイを見続けるのは個人的にはしんどい。 普段は外部ディスプレイを使ってるのでそこまで気にはしないのだけど。

タッチディスプレイになっていて、タブレットモードでも使用できるのは個人的には嬉しい。 (電車の中で立って使うときとか。)

ペンでお絵かきできる

ペンが付属しているのでお絵かきしたりできる。 筆圧 2048 段階だし、ちょっと遊ぶ分には十分という感じ。

その他基本的な性能

デスクトップ用 CPU と比べちゃうと非力ではあるけど、薄型のモバイル PC としては十分な CPU なので、開発等に使うにもさほど困りはしない。 Android の公式エミュレータ (Hyper-V 版) もいい感じに動いてくれる。

ちょっと気になるのは、スリープからの復帰がやや遅いこと。 ログイン画面が表示されるまで 10 秒ぐらいかかる。 設定で高速化できるんかな……。

おわり

というわけで、新 PC として dynabook VZ82/FL を購入した。

1 kg そこそこで 10 時間以上のバッテリーのもちで、スペックもそこそこ良くてタッチパネル付き! という PC の中では、本製品が現状では一番良いのではないかと思う。 かなりバランスは良いし、万人に薦められる PC だと感じた。 唯一の欠点はディスプレイのぎらつきで、外部ディスプレイを使わない人にはちょっとお薦めできないかもしれない。 それ以外はすべて満足している。

読んだ : ALLIANCE アライアンス ―― 人と企業が信頼で結ばれる新しい雇用

著者の 3 人はシリコンバレーの起業家。 環境変化の速いシリコンバレーにおいて、組織が成長していくために組織と人がどのように相互信頼を築いているかが描かれている。 監訳の篠田さんは 「ほぼ日」 の糸井重里事務所の人 (当時) で、彼女による少し長めの前書きも本書に引き込まれる一つの要素であった。

ALLIANCE アライアンス―――人と企業が信頼で結ばれる新しい雇用

ALLIANCE アライアンス―――人と企業が信頼で結ばれる新しい雇用

だいぶ前に読んでずっと放置してたのだけど、下記のついーとが結構ふぁぼられたので書き残しておく。

もともと社内インターンシップみたいな制度を考えていて、「別チームへの移動を頻繁に行うとか、短期的に別チームに移ることでチーム間の知見の交換が活発になるのではないか?」 というような話を社内でしていたときに 「『ALLIANCE』 って本にコミットメント期間って概念について書かれていて、そこのローテーション型がまさにそういう感じだったかも」 って教えてもらって読み始めた。

どういう内容か?

簡潔に言うと 「終身雇用の時代が終わり、信頼関係のない、うわべだけの雇用関係が多く結ばれている。 そのような状態では、企業としては長期的思考ができないし、雇われる側の個人としても企業からの支援を得づらく、お互いにとって良い状態ではない。 これを脱するために、雇用を 『取引』 ではなく 『アライアンスの関係』 として捉えなおそう。 それによって相互信頼と相互投資を実現し、相互に利益を高めあえる状態にしよう」 という趣旨である。 アライアンスの関係のもとでは、事業の変革と個人の成長が同時に達成され、また、仮に退職するとなっても話し合いは建設的なものになり、退職後もその人と企業の間は良好な関係が続く。

アライアンス関係の重要性が説明された後、下記の内容が続く。

  • コミットメント期間
  • ネットワーク情報収集力
  • 卒業生ネットワーク

コミットメント期間

  • コミットメント期間 (ツアー・オブ・デューティ) : 「ツアー・オブ・デューティ」 は軍隊用語で、任務や配置の割り当て 1 回分を表す。
    • (「アライアンス」 の文脈においては) このコミットメント期間を繰り返してキャリアを積み上げていくという考え方になる。
    • 重要なコンセプトは、「ミッションを期限内に成し遂げることに専念し、そこに個人の信用をかける」 ということ。
    • コミットメント期間はあらかじめ期間が決まっている。 → ピリリとした緊張感をもたらすし、将来の関係を話し合うための良い時間軸でもある。
  • 誠実に話し合うこと。
    • 将来のキャリアについて、退職することも含めて話し合う。 「コミットメント期間」 があることで、そういう話もやりやすくなる。
  • 3 種類のコミットメント期間
    • ローテーション型 : パーソナライズされておらず、入れ替えやすい業務。 体系化された有期の制度で、新入社員の実地研修として用いたりもされる。
      • Google の人事部門の新人だと 27 か月の間に 3 職務、Facebook のプロダクト・マネージャーだと 18 か月の間に 3 プロダクトをローテートするとのこと。
      • 必ずしも新人社員の実地研修のためだけではなくて、業務内容によってはずっとローテーション型というのもあり得る。
    • 変革型 : 個人個人で異なるミッション。 期間を一定に定めるよりも、特定のミッションを完遂することに重きが置かれる。
      • 経験則では、その人の初めての変革型コミットメント期間は 2 年から 5 年ほど。
      • 一つの製品開発などのプロジェクトを最初から最後まで終えるぐらいの期間。
      • 会社にとっては大きな変革がもたらされ、本人にとってはキャリアを一変させるものになる。
    • 基盤型 : 創業者や CEO など、人生と仕事がほぼ不可分になっているような場合。
      • とはいえ上層部だけに限らない。 会社のコアバリューを守り伝える役割。 本人にとっては仕事から大きな目的と意義を得られる。
  • 3 種類のコミットメント期間は組み合わせること。
    • ローテーション型は会社に規模拡大をもたらし、変革型は適応力を、基盤型は継続性をもたらす。
  • コミットメント期間を設定するために、会社のミッションと個人の価値観をすり合わせる必要がある。
    • この時、すべてをすり合わせる必要はなく、コミットメント期間の間でのすり合わせができればよい。 (ミッションと価値観のすり合わせを完全に行うことは基本的には不可能だが、期間を限定することでそれが可能となる。)

ネットワーク情報収集力

  • ネットワーク情報収集力 : 人脈 (ネットワーク) 全体が所有する知識・情報のこと
  • 終身雇用の時代には、マネジャーも社員も社内に集中することが良しとされたが、現在ではそれは破滅的な自己陶酔でしかない。
  • 社外に存在する優れた頭脳は社内よりも多い。 表には出てこない情報を得られることもあるし、異文化交流による新しい発想が生まれることもある。 新しい機会の発見につながることもある。
  • 個人のキャリア構成のためにも人脈は重要。
  • 会社は仕事の中で人脈を広げるサポートをして社員のキャリアを一変させる手助けをし、社員は自身の人脈を仕事に活かして会社の変革を手助けする、というのが理想的な形。
    • 『社員が仕事中についったーでつぶやいても、就業規則違反をしたかのように扱わないこと。 むしろ推奨しよう』
    • 『面白い人たちとランチをしたら会社の経費にしてよいと社員に伝えよう』
  • 副次的な効果として、採用活動にも役立つ。
  • ネットワーク情報収集力をどうやって育てるか?
    • ネットワーク力のある人を採用する : 単にフォロワー数が大きい人とかではなくて、適切な人とつながりがあるのか? そのつながりの質はどうなのか? 面接では、仕事において最も助けてくれた人について聞くのが良い。
      • 人脈があることだけを基準にするという話ではなくて、他が同じ条件なら人脈のある人を採用すると良い、という話。
    • 会話やソーシャルメディアの駆使 : 「非公開情報 = 機密情報」 であると考え、「機密情報の漏洩」 を恐れてソーシャルメディアでの発信などを抑える会社もあるが、金融系でない場合は非公開情報は必ずしも機密情報ではない。 機密情報以外については積極的に社外と情報交換することを促す。
    • 会社への還元の仕組み作りもできると良い。 定例の中で、「社外から得たうわさ話を持ち寄り、一番いいうわさ話に賞金を出す」 みたいな施策をしている会社もある。
    • ネットワーク予算の確保や勉強会の開催など。

卒業生ネットワーク

  • 終身雇用が当たり前でなくなった現在、退職後の元社員 (卒業生) は現役で仕事をしていることが多い。
  • 卒業生と良好な関係を築くことは、会社にとっても卒業生にとっても利益がある。
  • 会社にとっては
    • 優れた人材の確保に役立つ。
    • 有力な情報を得られる。
    • 顧客を紹介してくれる。
    • ブランド・アンバサダーになってもらえる。
  • ROI も高いのに、実際に会社の施策として卒業生ネットワークを運営できているところはあまりない。
  • 関わり方はいくつかある
    • 非公式の卒業生ネットワークを支援する。 ピザ代を出すとか。
    • 卒業生ネットワークを正式なものとして、積極的に投資する。

感想など

読んだ当時は一人のソフトウェアエンジニアだったのだけど、ラインマネージャになった今改めて振り返ると、マネージャにとって非常に重要なことが書かれているなぁと感じる。 重要なのは 「信頼関係」 ということで、会社と個人の間も、個人同士も、まずは信頼関係があってこそ未来に向けての建設的な話ができるというのは間違いない。 うわべだけの話で雇用関係を結ぶのではなく、明確に期間を定めてミッションを設定するというコミットメント期間の概念は、会社と個人の間の関係構築のためにも役立つもので、組織を強くしていくためにも有用であると感じた。

うちの会社のことを思うと、価値観とミッションのすり合わせだったり、いつか退職することを前提とした関係構築といったところは文化として根付いている。 一方で、ミッションが半年ごとの区切りになっていて大きなプロジェクトごとのコミットメント期間を設定する設計になっていなかったり、社外の人との交流がやりやすい制度になってるかというとそうでもなかったり (推奨はされてるんだけど大きな企業だから事前確認が必要とかでちょっと面倒)、みたいなところは改善の余地があるよなぁということを思った。

ちょうど先週、「評価制度」 をテーマにした社内の話し合いの場 (ワールド・カフェ形式でざっくばらんに話した) があって、そこでも 「半年ごとのミッション設定が、大きな仕事をするのに向いていない」 という話が出てきたりもしたし、個人的にも 「業務によっては半年ごとのミッション設定でいいけど、半年ごとだと長すぎたり短すぎたりもする場合も多いなぁ」 ということを感じていたので、ローテーション型と変革型のコミットメント期間という考え方をミッション設定に適用していくことを考えたい。

Kotlin に関して最近取り組んでいるもの

「Kotlin Fest 2018」 がいよいよ明日になりましたね! 私も何か LT しようというつもりだったんですが、チケット販売開始直後に LT 枠のチケットを買おうとしてカード決済周りでまごついてたらチケットが売り切れちゃってました! みんな熱い!!!

というわけで (?)、Kotlin を使った最近の個人的な取り組みを書き残しておきます。 「Kotlin Fest 2018」 に参加する人で何か興味があるものがあれば、ぜひ会場でお話ししましょう!

最近 Kotlin で取り組んでいるもの

DB アクセスライブラリを書いてる

個人的に Ktor で web アプリケーションを書こうとしているのですが、DB アクセスライブラリとして何を使うのかで悩んで、ExposedJdbi 3 を試してなかなかしっくりこず、最終的に自分で書いてみてます。

API はリレーショナルデータベースの思想にのっとるつもりで、インターフェイスに拡張関数として定義します。 んで、実際の DB アクセスの処理は拡張関数を持つインターフェイスの実装をリフレクションで提供する、という感じです。

// リレーションの各属性を持つタプルを表すクラスを定義。
data class FooTuple(
    @AttributeName("id") val id: Long,
    @AttributeName("value") val value: String
)

// リレーションを表すインターフェイスを定義。
@RelationName("foo")
interface FooRelation : BareRelation<FooTuple>

// リレーションの実態とリレーションに対する操作を定義。
interface FooRelationContext {
    val fooRelation: FooRelation

    @Insert
    fun FooRelation.insert(value: FooTuple)
}

// 複数リレーションを扱うコンテキストを複数集めてアプリケーション用の
// DB アクセスのコンテキストを定義。
// OrmQueryContext は、各種リレーションに対する select 操作を提供するインターフェイス。
interface AppOrmContext : OrmQueryContext, FooRelationContext

// 以下のような感じでインターフェイスの実装を生成できる。
val connection: Connection
val ormContext = JdbcOrmContexts.create(AppOrmContext::class, connection)

// 下記のような感じで insert したり select したりできる。
with (ormContext) {
    fooRelation.insert(FooTuple(1, "Hello"))
    val selected = fooRelation.select(where { FooTuple::id eq 1 }).toSet()
}

今のところは JDBC を使った DB アクセスの実装を軽く書いてるというぐらいなのですが、オンメモリでリレーションの実装を提供する仕組みも作るつもりです。 (そうするといちいちモックを定義しなくても DB アクセスを含むユニットテストが書けるようになって便利。 戦術的 DDD のリポジトリインターフェイスにしてテスト時にはオンメモリの実装を提供するなどすることでテストしやすくするのと同様のことをもう少し低レイヤで実現したい。)

内部的にはリフレクションでごりごりやっているので、Kotlin のリフレクション周りを触る人と知見交換したいなーという気持ちです!

Ktor での Twitter ログイン

Ktor の routing の中で以下のような感じでメソッドを呼ぶことで Twitter ログインのエンドポイントをはやすことができる仕組みも書きました。

        setupTwitterLogin(
            "/auth/twitter/start", "/auth/twitter/callback",
            "http://localhost:8080", twitterClientCredentials, env,
            object : OutputPort {
                override val success: OutputInterceptor<TwitterToken> = { token ->
                    // Twitter ログイン成功時の処理。
                }
                override val twitterCallFailed: OutputInterceptor<TwitterCallFailedException> = {
                    // Twitter との通信に失敗した時の処理。
                }
                override val temporaryCredentialNotFound: OutputInterceptor<TemporaryCredentialNotFoundException> = {
                    // Temporary Credential が見つからなかった時の処理。
                }
            })

こっちは普通に実装しただけですが、Ktor で Twitter ログインを実装したい人の参考になれば。 (そのうちライブラリ化するつもりではある。)

WebDriver 経由でブラウザ上で処理を実行してスクリーンショットを返す、という Ktor アプリケーションを書いてる

Ktor から WebDriver を使ってリモートエンドのブラウザ上で何か処理をして、そのスクリーンショットを Ktor のレスポンスとして返す、というような web アプリケーションを書いています。

Ktor へのリクエストをキューにためて WebDriver を使ってリモートエンドのブラウザ上で処理を行う、みたいな流れや、WebDriver のセッション管理、ヘルスチェックのための WebDriver へのリクエストをいい感じに割り込ませる、みたいな仕組みのためにコルーチンをいい感じ (?) に使ってます。 「Kotlin Fest 2018」 では八木さんのコルーチンについてのセッション 「Kotlin コルーチンを理解しよう」 もあるので楽しみです。

Kotlin を愛でていきましょう!

Kotlin がんがん使っていくぞ!!!