そーだいなるらくがき帳

そーだいが自由気侭に更新します。

香川大学の学生向けにソフトウェアエンジニアの生存戦略について話をしました

7/21に香川大学で講演させていただきました。そーだいさんと言えばRDBでしょ!?みたいな感じで先にタイトルが決まった感じですがRDB全然関係ない感じになりました。

僕が超絶リスペクトしてる id:t-wada さんとそこそこリスペクトしてる上司の id:onishi さんの名言を引用させてもらいました。僕はこの2つの言葉が10年戦えるエンジニアの核心をついてると思っています。
つまり

  • 技術は螺旋なので継続的な知識の更新は必須
  • 手を動かす(一歩目を踏み出す)者が未来を作る

という2点を踏まえた上でエンジニアにはそれぞれ得手不得手があるわけです。この得手不得手を理解して自分がどのフェーズを戦場として戦うか?って話をしました。この話は前もブログに話をした内容です。

soudai.hatenablog.com

そこで僕の経験談としてDBを交えて話をしました。

サービスを作るのが特に好きなタイプではないけど技術は何となく楽しい人はどうすれば?

香川大学の生徒たちはとにかくみんな積極的で常に質問攻めで非常に楽しい時間を過ごしました。そして懇親会の中で上記の質問がありました。作りたいサービスがあったり、プログラミングで実現したいことがあれば手を動かしやすい。けどPythonを覚えました、じゃあ次に特に作りたいものが無いんですってのがその若者の悩みでした。その気持ちは僕も一緒なのでめちゃくちゃわかります。何かを学ぶことは知的好奇心を刺激するので楽しい、技術的な話をするのは学びがあって楽しいんですよね。でも次の一歩目が出ない。そんな時はOSSの小さな問題を解決していくと楽しいよって話をしました。例えば既にそれなりに成長してるOSSのドキュメントの誤字脱字を直すだけでも貢献です。ドキュメントを読むことでそのOSSにより詳しくなります。僕もPostgreSQLMySQLのドキュメントはそこそこ読みました。また例えばマストドンのissueなんかは解決するとサクッとプルリクエストがマージされる印象があります。マストドンは最近はパフィーマンスのissueが多いので解決を繰り返すとすごいパワーがつくと思います。そういうことをすると 0→1 が得意じゃないとしても 1→10 や 10→100 の時に重宝される実力が身につきます。なのでどんどんOSSとコミュニティを活用してほしいって話をしました。

まとめ

今回の話をする中で自分自身の今までのキャリアを振り返るいい機会になりましたし、若者からの質問攻めは非常に刺激的でした。僕も多くのスターエンジニアの人たちに多くの学びを貰って今があると思っています。勿論、先人の方々に並べたとは思えないのですが少しでも恩送りが出来たかなと思っていますし、僕自身が非常に良い経験をさせてもらいました。香川大学、機会があればまた行きたいです。

次回のそーだいさんは?

来月初めのBuildersconでRDBアンチパターンリファクタリングの話をします。

builderscon.io

若者に貰ったパワーをさらに増幅してこの月末のタスクを倒していきたいと思います。

日本PostgreSQLユーザ会のサイトのSSL証明書が毎年切れるので自動化して監視した話

f:id:Soudai:20170721011231p:plain

日本PostgreSQLユーザ会(以下 JPUG)が管理するサイトが毎年夏になるとSSL証明書の更新を忘れて期限切れになっていました。

日本PostgreSQLユーザ会 | 日本PostgreSQLユーザ会

JPUGはボランティアの団体だから責任は無いのですがJPUGの管理するサイトには優れた日本語ドキュメントなどがあり、影響範囲は決して少なくありません。

PostgreSQL 9.6.3文書

そのためこの度、JPUGの関連するサイトは全てLet's Encryptを利用する自動化を行いました。

knowledge.sakura.ad.jp

これにより、今後は3ヶ月に1回自動的にSSL証明書が更新されます。

自動化したけど失敗したらどうするの?

仰る通り、システムとは止まる物なので監視が必要です。
そこで今回はSaaSのサーバ監視サービスのMackerelを利用しました。
MackerelにはURL外形監視の機能があります。
とても簡単にSSL証明書の有効期限やサイトの死活監視が出来ます。

mackerel.io

これでSSL証明書の更新が失敗したり、サイトが落ちたらアラート通知が来ます。
またこの問題はAWS Certificate Managerでも起こります。
その場合も下記の例のように同じく簡単に監視できます。

tech.yayoi-kk.co.jp

でもお高いんでしょ?

OSSに貢献するコミュニティなどはOSSプランがあります。
こちらはMackerelのスタンダードプラン相当を無料で提供されます。
そのためもし同じような問題を抱えている方が居ましたらぜひMackerelをお試しください。
OSSプランなどの問い合わせから下記のリンク先から受付しています。

docs.google.com

おまけ

まさかこのときは はてな のしかも Mackerelチーム に来るなんて欠片も考えてなかったですね

誰と一緒に働くかってめっちゃ大事って話

表題の件を吉祥寺.pmの懇親会で話をしてきた。

吉祥寺.pmについて

kichijojipm.connpass.com

なお、吉祥寺.pmのPはPostgreSQL、MはMySQLと伺ったのでいつも通り、@yoku0825 さんとキャッキャウフフしてDBについて話をしてきた。

github.com

細かいことは #kichijojipm のハッシュタグを追いかけてくれるといいですがまぁ15分の話なので大した話はしてないです。強いていえば中国地方DB勉強会って最高のDBの勉強会があるよって話しました。

dbstudychugoku.github.io

本題

はい、前置きが長くなりましたがめっちゃ楽しかった吉祥寺.pmですが更に懇親会でもホント色んな人と話が出来て最高でした。その中で表題の事について色々考えたり話をしたりしたのでメモを残します。

例えば僕がはてなを選んだ理由には id:Songmu さんを筆頭に id:daiksy さんや id:y_uuki さんが居るからって理由は大きかったわけです。で実際に来てみて id:motemen はCTOとして色んな道標をくれるし、 id:a-know さんは最高のライバルだし「あぁ来てよかった」って気持ちでいっぱいです。

簡単にまとめると「はてなで働くの楽しい」って言葉に集約されるのだけど、みんなは今の仕事楽しいですか?勿論仕事だから大変なこともあるし、不満を感じることもあると思います。0から10まで全部楽しいってことは稀だけどそれでも「胸を張って楽しい」といえるってことは大事ですよね。

そして吉祥寺.pmの懇親会で話をした人たちはみんな楽しそうに仕事をしてるし技術の話をしてました。僕だってyoku0825さんとかしんぺーさんと一緒に仕事出来たらそりゃ最高でしょっ!!って思うし、その当の本人がめっちゃ楽しそうです。そういうのを見てる中で表題の話をしてきました。僕としては一緒に働く人は以下の理由でめっちゃ大事だと思ってます。

  • モチベーションの高いチームに入ると自然と自分も引っ張られてモチベーションが上がる
  • 高いスキルの人と仕事をすることがもっとも成長への近道
  • 成長を実感出来ると仕事は楽しい
    • ※結果が出て認められる(褒められる)ってすっごい大事
  • 仕事が楽しいと(成功体験を得ると)余暇の使い方が変わる

上記のように仕事自体が充実するって効果も大きいですが自分の成長率にも大きく影響します。だからこそ一緒に働く人は大事だし、○○さんと一緒に働きたいって目標は大事だと思っています。
ですが

  • 働く相手は必ずしも選べるとは限らない
    • 大きな会社だと部署異動もありますしね
  • 働きたい相手がずっと同じ職場に居るとは限らない
    • 転職などで去っていくこともある

などの理由から必ず成就するとは限りません。ですので仕事を選べるように自分の価値を高めたり、一緒に働きたい人が居るならその人と働けるような努力はすべきですって話もしました。
じゃあ「どうやって自分の価値を高めていくのか?」って話を今週ちょうど香川大学で学生向けに話をするのでそこでしたいと思います。

まとめ


おまけ


頑張ろうと思いました。
吉祥寺.pm、次回も絶対参加しますっ!!

はてなに入社して6ヶ月経ちました

早いもので今年ももう半分終わりました。
つまり私がはてなに入社して半年経ちました。

soudai.hatenablog.com

というわけで入社して半年の振り返りをします。

ぶっちゃけ「はてな」ってどうなの?

企業としてはホワイトです。
特にエンジニアにとってはとてもいい環境だと思います。
まほろば工房の時と比べても勝るとも劣らないエンジニアの住みやすさです。

www.ate-mahoroba.jp

soudai1025.blogspot.jp

あとはエンジニアもそうですがバックオフィス、営業、デザイナー、関わる人みんなが例外なく優秀。
私の持論は成長に1番手っ取り早いのは優秀な人と一緒に仕事をすることだと思っているのでそういう点で非常に恵まれてる環境です。

はてな独自で良いなと思う点

まかないランチがあります。
最高に旨いですね。

officelunch.hatenastaff.com

お菓子も食べ放題だし、ドリンクも無料です。
会社に行くと餓死しないので独身男性も安心。
あと月に2回は会社内での飲みフラグがあります。
(社内勉強会とTGIF)
あと毎月人が増えているので歓迎会もあります。
更に突発で僕が呑み会に誘うので実質毎週呑み会があります。
とは言え「飲みケーション必須」というわけではなく、好きな人は行くけど苦手な人はシュッと帰れるのが良いところですね。

あとは社内勉強会も活発です。
最近だと詳解システムパフォーマンス輪読会してたりする。

blog.a-know.me

私も不定期でデータベース勉強会に参加したり、社内技術勉強会に参加したりしてます。

社内だけではなく社外の勉強会にも積極的です。
明日のYAPC::Fukuokaには弊社から4名登壇します。

yapcjapan.org

他にもいっぱい参加者がいます。
私もYAPC::Kansaiには参加しました。

soudai.hatenablog.com

コミュニティに対して理解のある会社だと思います。
あとOSS活動にも協力的です。
同僚にはなんとSwiftのコミッターもいます。

ikesyo.hatenablog.com

このようにエンジニアにとっては最高の職場です。

はてなの残念なところ

東京オフィスは表参道にあります。
表参道の更に会社が駅から10分程度歩きます。
私はセールスでよく外出するので結構地味に効いてきます。


大体こんな感じです。

まとめ

はてなに入って良かったなと思います。
自分のキャリアとしても単純に仕事の楽しさにおいても充実してます。
また はてなが好き って人が多いのもいいですね。
自分たちの仕事に誇りを持っているからこそ、いい仕事ができますからね。

というわけではてなは控えめに言っても最高って感じです。
次は1年くらいのタイミングで振り返りたいですね。


おまけ

はてなは仲間を募集してます。
特に私と同じセールスエンジニアをしてくれる方、大募集です!!

hatenacorp.jp

人生という貴重なリソースを何に使うかという話

人生は限られてる。

当たり前だけど意識しないと忘れてしまいがちですよね。 だからこそ、人生の限られた時間、特に若い時の時間を大切にしなさいと多くの人が言っています。 選択肢としては次のようなものがあります。

  • 家族と時間
  • 友人との時間
  • 趣味の時間
  • 仕事
  • 自己啓発

他にも無限に選択肢はあります。 その中で自分で楽しいと思うこと、大切だと思うことに時間を使うのが一番大切。 これは多くの人が感じていたり、考えていたりすることでは無いでしょうか。 人生のリソースは限られているので費用対効果や機会損失を考えて立ち回る事は大切です。 私もここには激しく同意する中で、私なりの考え方を纏めました。

休日の過ごし方

休日は幸福感を得れる使い方をするのが1番です。 休日は週に2日程度しかなく、また自由に使える人生の中でも貴重なリソースです。 だからこそ、好きな人とデートをしたり、自分の趣味の時間に投資したりしたいですよね。 しかし時々休日に夕方まで爆睡して何もせず一日を終えてしまい(俗に言うドブ日)自己嫌悪することはありませんか? 私も特に10代から20代の前半にかけては寝ることすら勿体無いと考えており、ドブ日を作った日にはとても後悔していました。 ですがある出来事を境に考え方を変えることが出来ました。

このツイートに対して、とある友人から下記の本を勧められました。

かなり分厚くて読むのに苦労しましたがこの本を読んで

  • 意識とは何か
  • 時間とは何か
  • 文明とは何か

を意識できるようになったし、考え方が大きく変わりました。 (この本自体は一般向けする本では無い上にそこそこお高いので興味のある人が読む程度で良いと思います) 例えばドブ日を作ることが出来るのも休日があるからで貴重な一日だなと考えることが出来るし、私達の一日など世界からすると小さな一部分でしかないのですから一日中寝た所で何も変わらないのです。 だからこそ楽しい事に力を注ぐべきだし、眠い時は寝ればいいのです。 それが許された自由こそが特権なのですから、その一日を過ごしたときにいかにポジティブに受け入れることが出来るかが大事です。 僕の友人に夜勤の仕事の人が居て彼は夜勤明けに朝からビールを飲み、昼から就寝します。 彼は「人が出勤中にビールを飲み、仕事中に寝る。それがこの仕事の醍醐味だ!」とよく言うのですがみんなは彼が出勤中にビールを飲んでるし、出勤中に寝てるので物は考えようだなと思いました。

まとめ

この土日は妻とスプラトゥーンを朝までし、昼間に寝て夜は子供らと一緒に寝て深夜に目を覚ます、みたいなドブ日のような一日だったのですが「こういう日も良いな」と思ったのでブログを書いてみました。 楽しい一日は色んな形が人それぞれありますし、視点を変えると今まで無駄だと思っていたことが楽しく感じます。 ですので皆さんも楽しい日曜日を思い出しながら今週の平日も楽しみましょう!!

実は平日の過ごし方とか平日があるから休日はより幸福感を感じるみたいな事も書こうかなと思ったのですがこんな時間なので私は寝ます。

エンジニアの信頼を得るには良質なアウトプットが必要な話

先日、僕が大好きでリスペクトしてるソフトウェアエンジニアさんたちと意見交換会(呑み会)中にソフトウェアエンジニアの信用と信頼について話題になったのでメモ。
僕が「このソフトウェアエンジニアは信用できる」っていうのはどういう指標がありますか?って質問した時に出た意見としては

  • コードに対して何らかの貢献をしている
    • 新規プロダクトの開発など
    • OSSのメンテナンスなど(パッチを送るなど)
    • 自分の持つプロダクトに対する反応など

が出てきた。
これらのような「良質なアウトプット」を定期的に行う頻度も大事だよねという感じ。
なるほど、確かにって思ったのだけど更にその中で良質なアウトプットとは何かという話題になった。

ソフトウェアエンジニアの属性

ソフトウェアエンジニアには得手不得手がある。
言語だったりレイヤーだったりで好き嫌いも含めて得手不得手がある。
更にもっと言えば「プロダクトの成長段階」でも得手不得手がある。
例えば

  • 0から1にする
  • 1を100にする
  • 100を10000にする
  • 10000を維持する

これらは全て別々のスキルだ。
そしてどれも重要な役割である。
とある人の話でその人は0から1を作るのが得意であった。
とても手が早いし、作るプロダクトの目の付け所が素晴らしい。
しかしその人は「プロダクトのメンテナンスをするつもりが全くない」という特性があった。
だからその人が作るプロダクトに対して会社としてその他の人たちを雇用してアサインする。
その結果、そのプロダクトは世界的に使われるOSSとして評価されている。

どの属性のソフトウェアエンジニアが凄いか

0から1を作り出すソフトウェアエンジニアは凄い。
では他のフェーズを担当するソフトウェアエンジニアはどうなのだろう?
結論、どのフェーズを担当するソフトウェアエンジニアも凄い。
前述にも言ったがそれぞれは別のスキルなのである。
そしてそれぞれのフェーズで適切な成果、アウトプットを出せることがその人の価値なのである。
もちろん複数フェーズを担当できる人もいるし、前述のような0を1にするのがとても得意な人もいる。
重要なことは自分が何が得意でその分野において評価されるアウトプットの有無なのである。

どうやってアウトプットし、信頼を獲得するか

上記をまとめると

  • 自分の得意なレイヤー、フェーズのことを深掘りする
  • 得意なことをアウトプットする
  • アウトプットを定期的に行うことでその人の実力であったり、価値観が共有される
  • その結果、その分野において「この人は信用できる」

となるという話だ。
なので0から1をしたり1を100にするのが得意な人はプロダクトやツールのコードを書くと良い。
100を10000や維持するのが得意な人はOSSの世界でパッチを送ったりすると良い。
アウトプットはそれ以外にも

  • 良質な情報を発信する
  • 良質なサービスを開発する
  • 良質なチームを作り出す
  • 良質なコミュニティを作り、育て、運営する

なども含まれる。
この 良質 はコード同等に難しい、だからこそ評価されるのである。

そーだいなるアウトプット

僕はソフトウェアエンジニアとしての評価としてはそれほど高くないと自認している。
天才的なアイディアがあるわけでもない。
しかしそれでもエンジニアとして自分がアウトプット出来ることはある。
そしてそれがみんなの信頼を勝ち取れる内容になるように品質を高める必要がある。
例えばJPUGの活動もMackerelというサーバ監視サービスを世に広める事もそうだ。

日本PostgreSQLユーザ会 | 日本PostgreSQLユーザ会

mackerel.io

そういうことが僕の出来るエンジニアリングだ。
それ以外のRDBみたいな僕が得意なところも含めて貢献していきたい。
それを継続することがエンジニアの信用を勝ち取るってことに繋がると思ってる。

エンジニアの信頼を勝ち取ることはなぜ必要か?

そもそもなぜ、エンジニアの信用を高め、信頼を勝ち取る必要があるのだろうか。
それは一人で出来ることは限界があり、

  • やりたいことを実現する
  • 問題を解決する

これらをするためにはとても必要な事だからだ。
例えば自分が1を100にするのが得意な場合、0から1を作るのが得意な人が必ず必要だ。
逆も然りでプロダクトを大きく、サービスが成長すればするほど一人で出来ることの限界とぶつかる。
我々エンジニアは世の中の問題を解決するために何かを生み出し、成長させて問題を解決してその報酬として対価を得ている。
つまり大きな問題を解決するためには一人では限界がある。
だからこそみんなの力を借りるためにも信頼されたエンジニアで有る必要があるのだ。


まとめ

エンジニアの信用を高め、信頼を勝ち取るには良質なアウトプットを繰り返し行うことに他ならない。
そして何かを達成するためにはエンジニアの信頼が必要だ。

だからこそ定期的に良質なアウトプットする。
このエントリーはそれを行うという決意表明である。

今こそ知りたい、2大OSSデータベースのMySQLとPostgreSQLの違いについて話をしてきた

f:id:Soudai:20170525231808p:plain

去年書いたSoftwareDesignを題材にお話してください!って言われたので話してきました。
下の特集記事は1年経った今も現役で読める内容なので興味がある人はぜひ読んでみてください。
またRDBアンチパターンという連載をしていますのでこちらもあわせてご確認くださいっ!

gihyo.jp

そして当日の資料はこちらです。

SoftwareDesignにしっかりとMySQLPostgreSQLの違いについては触れているのでそこでは触れていない、ハマりどころや初めて両方のDBを知ったと言う人向けのカジュアルは部分を攻めました。
またDBだけの勉強会ですので普段説明するようなところは省略し、できるだけ経験談やコアの話に注力したつもりです。
このへんは資料に含まれて居ないので当日居た人たちだけの特典ですね!!

ということで実は今月は登壇3週連続だったのですが一段落しました。
来週はAWS Summitにブース出展するので今月は最後までバタバタするのですがこれを乗り切れたのは一つ成長したかなと思っています。
ここ数週間はアウトプットをかなり意識した日々だったので来月はしっかりインプットしたいです。
という事でMySQLPostgreSQLに興味が湧いたらぜひSlackのチャンネルに遊びに来てください。
みんなが暖かく迎えてくれますよ!!!

というわけでみなさまのご参加お待ちしています。