一角獣は夜に啼く

ただの日記です。

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

読んだ : 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 がんがん使っていくぞ!!!

家用のモバイル PC を買い替えたい (20 万円前後で 1 kg ちょっとでそこそこいいスペックのマシン)

家で使ってる VAIO Z (2015 年モデル) が膨らんできて (おそらくバッテリーが……) 怖いので、そろそろ買い替えようと思っている。

何を買うか悩んでる

VAIO Z は結構良くて、1 kg そこそこの重量で (第 5 世代の) Core i7 を積んでて、20 万円台でわりとバッテリーの持ちも良い。 だいぶ気に入っているので、似たようなマシンが欲しい。 VAIO Z の後継機があったら多分それを買うところなのだけど、残念ながら VAIO Z は 2016 年を最後にモデルチェンジをしてないので、別の会社で探すことにした。

いくつか良さそうなマシンは見つけたのだけど、イマイチ決めてがなくてどれにするか悩んでる。

候補

(大体第 8 世代の Core i7 が載ってるマシンを選んでるけど、ADM 派なので Ryzen が載ってる PC があればそれも使ってみたい。 が、日本で手に入る欲しいスペックのマシンはなさそう。)

ASUS ZenBook S UX391UA

ASUS 製品。 重量やヒンジといった物理的な部分に特徴が見られる。

ASUS ZenBook S UX391UA | ノートパソコン

Dell XPS 13 (9370)

Dell の製品。 ASUS 製の上記製品とスペック的には結構近い。

Dell Cinemaと次世代InfinityEdge搭載のXPS 13ノートパソコン | Dell 日本

Razer Blade Stealth

ゲーマー向けブランドの RAZER の製品。 ゲーミング PC、とはいうものの GPU が積まれてるわけでも無くて、そこそこいいスペックの PC という感じ *1。 個人的には、ゲーミング PC というのは割とバランスが良くて開発者にも使い易い気がしている。 (会社でもゲーミング PC で仕事をしてる。) US キーボードじゃなければこれで決まりで良かったのだけど、US キーボードというところでだいぶ悩み中。

The New Razer Blade Stealth Ultrabook Laptop

HP EliteBook 830 G5

ディスプレイ周りは Full HD でタッチでもないので上記の製品よりやや見劣りする気もするけど、その代わりに非光沢液晶なのが個人的には嬉しい。 メモリも 32 GB 積めるので、割と良い気がする。

HP EliteBook 830 G5 製品詳細・スペック - ノートパソコン・PC通販 | 日本HP

  • 個人的に惹かれるところ
  • 個人的な気になりどころ
    • 他と比べると薄さや重量の点で見劣りする。
    • ディスプレイ解像度も小さい。 (とはいえ Full HD あれば十分という気もする。)
東芝 dynabook (PRZ63FS-NND または PVZ82FL-NNB)

RZ63/FS 2018春価格.com掲載モデル コスモシルバー | 【公式PC通販】東芝ダイレクト
VZ82/FL 2018春価格.com掲載モデル オニキスブルー | 【公式PC通販】東芝ダイレクト

  • 個人的に惹かれるところ
    • 非光沢液晶!
    • 安い! (東芝の公式サイトから 15 万円 / 17 万円ぐらい。 会員価格でさらに安くなる。)
  • 個人的な気になりどころ
    • プリインストールアプリがいろいろある……。
    • ディスプレイ解像度も小さい。 (とはいえ Full HD あれば十分という気もする。)
Surface Pro (Core i7 / メモリ 16 GB / SSD 512 GB)

Microsoft 製の Windows マシン。 基本的には家で使う用なので、タブレット型でもいいのかなーという気がしている。 (電車内などでタイピングするならラップトップ型がいいとは思うのだけど、そうでなければキーボードは Bluetooth 接続のものでいい気がしている。) 故障率が高いという情報と、CPU が第 7 世代の Core シリーズという点、それと価格がやや高いのが気になるところ。

新しい Microsoft Surface Pro | 思わず持ち歩きたくなるような、超軽量なノートパソコンを

*1:外に GPU ボックスをつなぐことができるらしい。

読んだ : 「便利な」 保育園が奪う本当はもっと大切なもの

保育園問題』 が行政側の視点で書かれていた書籍であった一方、こちらは保育園の理事長という立場の人による著書。

「便利な」保育園が奪う本当はもっと大切なもの

「便利な」保育園が奪う本当はもっと大切なもの

概論としては、下記のような感じ。

  • 国の施策として、経済政策の一環として出産前後の女性の就業率の向上などが図られている。
  • そのために必要な保育園の規制緩和がなされている。
  • また、子どもにとって良い保育ではなく、親にとって便利なサービス提供が求められるようになっている。 (行政的側から指導主事がそのようになっている。)
  • その結果、子どもにとっての保育の質が低下してしまい、子どもの健全な成長が阻害されるという状況が起こっている。
  • 子育ての主体者は保護者であり、保育園は子どもの成長・発達を保証するという役割と、子育てにおける親の役割の大切さを伝えていくという役割を果たすべき。

感想

概要だけ見ると良いことを言っているように思える。 特に保育の質については、『保育園問題』 でも触れられていたことではあるけれど、園側の視点で具体的にどういう状況が起こっているのかということが語られたので、より深く理解できた。 また、行政の施策に対して園側からの批判的な目線で語られるのも、行政側の意見だけでは見えない部分が見えて良かった。

一方で、細かい部分では感情的な論調もあったり、やや過激な主張があったりするので、そこは気になった。 例えば 「母親を働かせるのではなく (ニートや引きこもりの) 若者を働かせるべきだ」 とか、「3 歳までは基本的に家で親が育てるべきだ」 とか。

良いことも書いてあるし、「ちょっと違うんじゃないかな」 って思えることも書いてあるけど、全体としては保育業界に対する理解が進んで良かった。

読んだ : 保育園問題

横浜市の副市長として、保育園にまつわる課題や待機児童問題の解決に取り組んできた前田正子氏による保育園問題についての書籍。 2017 年の発行で、こども園についてなどの、わりと最近の話題まで取り扱われている。

序章では保育園に子どもを預けるまで (いわゆる保活) の大変さが描かれ、1 章で日本の保育制度について説明される。 様々な形態の保育施設 (認可保育園、認可外、認定こども園、家庭的保育、事業所内保育など) について説明がなされ、また、認定区分や利用指数、保育料についても説明されるので、保育制度の全体像を掴みやすい。

2 章では待機児童がなかなか解消されない理由の説明。 働き手が不足する中で、国としては 「一億総活躍」 を掲げ、出産・育児中の女性にもどんどん働いてもらいたい。 そこで待機児童対策を重点課題として保育事業の規制緩和などを推し進めていて、保育園の定員数は増加傾向にある。 少子化もあり、全国的に見ると現在は定員割れしている状況になっている。 それでも待機児童問題が発生するのは、保育利用率が上がっていること、保育の需要が都市部に偏っていること、子どもの年齢によっても需要と供給の不一致が起きていること、供給が増えればそれに応じて需要も増えること、などの理由がある。 特に地域差や年齢差による需要と供給の違いといった部分は保育業界の仕事をしていくうえでは重要だなーと感じる。 (都市部しか見てないと地方では全く受け入れられないとか、いろいろある。)

3 章は保育士不足の話。 よく言われる給与が安いという理由 *1 だけでなく、子どもの命を預かるという責任の重さや事務作業の多さ、保護者への対応が大変といった理由や、キャリアパスを描きづらいといった理由がある。

4 章は、保育の量が求められる一方で質も担保していかなければならないという話。 本書の著者は行政の人なので行政側の視点で 「量を確保しながらいかに質を担保するか」 という視点で述べられている。 最近読んでいる 『「便利な」 保育園が奪う本当はもっと大切なもの』 という本では園長という立場から質の低下について述べられていて、この本よりもさらに園に近い視点で保育の質について知ることができる。

「便利な」保育園が奪う本当はもっと大切なもの

「便利な」保育園が奪う本当はもっと大切なもの

最後の 5 章では、育児しやすい環境にするためには単に待機児童を解消するだけでは不十分という話。 実情として、子育てに不安を覚える親は多く、また、父親が育児に参加せず、他に相談相手もおらず孤独感を抱える母親が多いという。 育児休業の期間は一般的に長くて 1 年であるが、保育園への入園をしやすい時期が 4 月であるために、本当は 1 年の育児休業を取りたくても 0 歳から子どもを保育園に預ける親が都市部では多い。 保護者が保育園へ過剰な要求をするのは、保護者がそれだけ過酷な労働環境にあるからとも言える。 その他、海外の状況なども挙げながら 8 つの提言がなされている。

  1. 育児休業を原則 1 年取ることを徹底する。 0 歳児保育を減らすことで、1 歳児以降の定員を増やすことができる。
  2. 育児休業を父親と母親で交代で取ることを推進する。
  3. 育休の過度な延長よりは保育園整備を進める。 育休が長すぎるとキャリア形成に悪影響だったり、事業者の負担増といった問題がある。 (ドイツでは当初は育休を長くする方針だったが、うまくいかず保育所整備に方針転換したらしい。)
  4. 働き方改革
  5. 保育士の給与改善。
  6. 給与以外の面での保育士の待遇改善。
  7. 都心部への一極集中の解消。
  8. 幼稚園にも待機児童解消の役割を果たしてもらう。

単純に保育園を作ればいい、みたいな話ではなくて、都心集中・仕事中心になりがちな現代社会の生活を文化ごと変えてゆとりを持った生活を送るようにするのと、保育士の待遇改善、といったところが大きそう。

保育にまつわる課題をわかりやすく解説した良書だった。

*1:公立園は公務員の給与体系で年功序列で上がっていくが、私立園はそうではない