僕とコードとブルーハワイ

omega (@equal_001) の日記

2017 -> 2018

振り返り。

2017年

総評

40/100点
特別な努力はせず、
今までの能力でふわふわとやってきた感じ。
めちゃくちゃ脳を使った後の、あの気持ちの良い疲労が無かった。
エンジニアリングの分野で熱意持ってやりたいことも特に無かった
ので、40点。

2017年やったこと・学んだこととか

  • TreasureDataで効率の良いクエリそこそこ書けるようになった
  • TreasureDataのdigdag使った
  • Python本書いた
  • ユーザの行動分析やった
  • ユーザにとっての価値とは何かを考えてサービスに落とそうとした
  • PyQtで業務用アプリ1つ作った
  • 仕方なくPHPとZendFramework 2を触って色々学んだ
  • 仕方なくWebViewについて少し学んだ
  • PHP->Python移行とかやった

他にもやった気がするが記憶にない。
別の趣味に時間を多く割いていたのでQOLは高かった。


2018

2018年(前半)でやること・やりたいこと

  • Kotlinでまともに動作するWebアプリケーションを作ってみる
  • Real World HTTPを業務で使えるレベルまで理解する
  • いくつかのDesign patternを"使える"ようにする
  • Djangoのコードを読んでWeb Application Frameworkへの理解を深める
  • Frontendのレベルを人並みにまで上げる

他の分野は今まで通り進めるとして
エンジニアリングでやりたいことはこのくらいしかない。

  • 旅行たくさんする
  • 実験をどんどんやっていく
  • おいしいご飯食べる

今年も静かに知識を深めていこう。

喋れば喋るほど

ドツボにハマる

これで良いのかい?

本当にこれで良いのかい?





この記事は DARK Advent Calendar 2017 17日目 です。
なんでも書いて良いよって主催が言ったので自分の好きな曲を紹介します。


背景、

皆さまいかがお過ごしでしょうか。
クリスマス・イブもあと1週間後に迫ってまいりましたね。
巷では彼女できないエンジニアアドベントカレンダーが流行っていますが、絶賛恋の駆け引き中エンジニアとかも居るんじゃないかと思います。
そんな今日を思う時に聴きたくなるのが、「12月17日」。

12月17日

といえば、
クレイジーケンバンドの名曲「12月17日」
僕の大好きな「龍が如く 2」というゲームのエンディング曲でもある。

Amazon Prime会員なら無料でAmazon Musicで聴くことができる。
クレイジーケンバンド 12月17日

クリスマス・イブを目前に控え、曖昧な関係の男女が、夜の海までドライブへ。
ハッキリさせたいけど、口喧嘩になったり黙り込んだり、喋れば喋るほど時間は過ぎて行く...。

このサイトさんでも書かれているが、
まさに「濃密な車内空間系の曲」「車のヒーター感を大事に」という表現がぴったりの曲。

最初にこの曲を聞いたのは2008年くらいで、自分はまだガキ臭い高校生。
この曲に出てくるような曖昧な二人の関係的なものなんて体験したことなんてない時代。
でもなんとなく、この緊張感や情景が想像できて、良い曲だなぁ〜なんて子供ながらに思った記憶がある。

時は流れて10年後。ちょっとは歌詞の意味を咀嚼できる歳になった。
伝えたいけどなんとなく重い空気に流されるあの感じ、
一歩進むより今の関係のままがいいんじゃないかという気持ち、
わかる、わかるぜ・・・。

あの何とも言えない雰囲気が、この曲に凝縮されている。


駆け引きを終えた人、あるいは

これから誰かに会いに行く人。

このくだらない記事を書いている今でも、どこかで様々なドラマが作られているんだろう。
舞台は鎌倉とか山下公園あたりで、海を眺めてさ。

そんなことを妄想しながら、この曲を口ずさんで窓の外を眺める。

積読本 AdventCalendar 1日目

この記事は 積読本 AdventCalendar の1日目です。

adventar.org

読んだ本

なぜ、出来る人から辞めていくのか? モチベーションを左右する本当の理由

最近、身近でバンバン辞めていく人が多いので読んでみた。
その感想とかダラダラと述べる。

以下、本の内容について触れているのでネタバレ的なものが嫌な人は読まないほうが良い。

本の概要と感想

対象読者層は「部下を持つ社会人」だった。
前半の方では、「会社」という仕組みの成り立ち、部下が転職を決意する瞬間はどこにあるのか、モチベーションを上げるためには上司としてどういうアクションをしたら良いのか、といったことが述べられ、最後の章で、チームで仕事をして成果を出していく大切さや喜びについて書かれていた。
筆者が本当に言いたいことは最後の章に詰まっているのではないかなぁと思う。

ーーー
まず、この本でいう出来る人とは「いつでも舵取りの上手い船(会社)に乗れるくらいにはスキルを持っている人」だと思われる。
その前提を明記していないので、このタイトルは少し商用的な施しがなされているなと感じた。
全体的に「あるある」が多かったが、その「あるある」が発生する理由や対応が体系的に纏まっていてスラスラ読めた。
目次を見ればだいたい内容がわかるのと、各章のまとめがあり、ポイントは太い黒字で書かれているので、かいつまんで読むのが楽。


1章「会社に所属する理由の変化」で、会社は人の欲望を満たすものであり、昔は「食欲」、今は「自由」を欲しているという切り口で語られているのはなかなか良かった。
ただし、これは同じような文化・教育・生活レベルにいる人たちの間の話であり、別の国では安定的に安全な食を手に入れたいという欲望が大部分なのではないか。なので、この本に書かれている内容はどこでも通用するかというと、微妙かなと思う(例として、中国は独特の価値観を持っているので彼らの流儀を知らないと商売がうまくいかないというのは有名な話である。)。


2章で書かれているのは、辞める決意をした人間を引き止めるのは難しい。が、予兆はどこかしらから出ているはずなので、普段から部下の言動をみておこう。もしヤバそうな感じだったら目線を変えてあげるアクションを取ろう、といったところ。
転職を考えている人がいいそうな事みたいなのがかかれていたけど、今色んな所でよく耳にするワードが入っていて少し笑ってしまった。
組織や上司に対する不信感、評価制度の不透明さ、社内スターの欠如、当事者意識の欠如、社への既決感...

個人的に、部下の様子をみるのって上司自身が余裕が無いとできないだろうなと思う。
小さなサイレンを聞き分けるには、センスや人身を読むスキルが必要。
対話の時間をとるために1 on 1みたいな文化があるのだろう。
でも、そもそも上司が信用されていなければ対話をしたとして不平不満は上がってこない。


3章のメインは、仕事の意義をどう作り出していくかということだった。
でも個人的に面白かったのは、近年では「父性的な概念で強制的に全体を動かすやり方」→「個人に選択の自由を委ねるやり方」に変わったという点。
本でも触れているが、時代によってこの2つが行き来している。今は後者の方だけど、年代によってこれに気づいていない人も本当にいるので変な争いが起きたりもする。
あと、人材流出の失敗をした時に「失敗への対処」「失敗しないためにはどうすればいいか考える」まではやるけど「失敗を生み出した構造そのものの改革」までしないと二の鉄を踏むよねという話も書いてあったのも良い。強いて言うなら「構造改革に終わりはない」という点も付けてほしかった(平和とは問題が問題とされない束の間のことをいうのだ)。

構造を変えることは、全体と細部をみる力がないと難しい。
時間が無い・余裕がないというエクスキューズを述べて付け焼き刃の修正をするにとどまることがほとんど。今の会社もそういう面がある。
ここで同僚の一言をあげよう。「バケツの穴を埋めずに流入を増やそうとする傾向にある」


4章は部下が変わるようなアクションについて述べている。
良い部下は良い上司から生まれるという。これには賛成だ。無能な上官が優秀な部下を殺してきた例はごまんと存在する。
この本は、まずは上司であるお前が変われ、という。部下を気持ちよく働かせるために自分がとるべきアクションを心得よ、という話。
このあたりは心理学的な分野にも噛むが、そんなに専門的なことは書いていない。ロールモデル、ライバル、スポットライト効果といった有名どころを紹介している。
この手の話についてもっと詳しく知りたければ、「How to Win Friends and Influence People(日本語タイトル:人を動かす)」という、日本の国民性が強く反映された邦題が付けられたDale Carnegie著の書籍を読むと良い。

本書がいうには、モチベーションの高さは「目標の魅力」x「危機感」x「達成可能性」によって決まるらしい。
なるほど、いわんとしていることはわかる。
危機感は諸刃の剣ではないかなと思う。不満が増大するきっかけにもなる。燃え尽きてしまう人を多く見てきた。
まぁ逆もあって、連帯感を植え付けるチャンスでもある。


5章は、社の人間とは運命共同体であることを認識し、チームで助け合い成果を分かち合って働く土壌を作ろう。良い影響力を与える上司になろう。という感じの事が書かれていた。
土壌づくりは大事だなぁとつくづく思う。人(チーム)に合った土壌づくりをするのが腕の見せどころなのではと思う。
筆者が一番主張したいところって、たぶん5章につまってるんだろうなーと感じた。



全体的に簡潔な文面で、読みやすかった。
長期的に改善したほうがよいことと(考え方とか)、すぐに行動に移せるようなこと(部下へのアクション)が書いてあったので、わりと良書なんじゃないかなと思った。
とりあえず、会社に一冊入れておいた。

Djangoをバージョンアップしたら AttributeError: module 'lib' has no attribute 'SSL_ST_INIT' が出た

Django 1.10.1 から 1.10.5にバージョンアップしたところ、サーバ起動中に以下のエラーが出た。

  File "/Users/omega/xxx/client.py", line 2, in <module>
    import requests
  File "/Users/omega/venv/lib/python3.6/site-packages/requests/__init__.py", line 84, in <module>
    from urllib3.contrib import pyopenssl
  File "/Users/omega/venv/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/Users/omega/venv/lib/python3.6/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/Users/omega/venv/lib/python3.6/site-packages/OpenSSL/SSL.py", line 118, in <module>
    SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: module 'lib' has no attribute 'SSL_ST_INIT'

2つくらい前のバージョンが入ってたので最新のものを入れ直した。
これで無事サーバが起動した。

$ pip uninstall pyOpenSSL
$ pip install pyOpenSSL
$ pip show  pyOpenSSL
Name: pyOpenSSL
Version: 17.3.0
Summary: Python wrapper module around the OpenSSL library
Home-page: https://pyopenssl.org/
Author: Hynek Schlawack
Author-email: hs@ox.cx
License: Apache License, Version 2.0
Location: /Users/omega/venv/lib/python3.6/site-packages
Requires: six, cryptography

たまーに遭遇するエラー。pyOpenSSLは定期的にアップデートしたほうがよいかも。
深く調べる体力はなかった。

PyConJP2017に参加してきた

そういえば今年も参加していたので回想メモ。

今年のプロポーザルは通らず

今回もプロポーザルを2つ出したけど見事落選したので、登壇はしなかった。
今年は分析系が多かったですね。

pycon.jp

pycon.jp

1日目

Keynote聴きながら朝食。
今年の朝食は豪華だった。量が多くて食べきれなかった。

午前中は友人・知人と歓談して終了。

お昼はメディア会議という企画で喋って来ました。

pycon.jp

どういう企画かというと、

メディア会議は今年初めて開催する新しい企画です。 9/8(金)に2つのイベントを行います * ~あなたとメディア、新たな出会い~ * 登壇者とmeet up ~本を書きたいあなたと握手~
企画の狙いは「エンジニアとメディア企業との交流の場を設け、新しいPythonの書籍などを生み出すきっかけをつくる」です。

https://pycon.jp/2017/ja/events/media-meeting/

もうちょっと詳細を説明すると、
最近はじめて本を技術書を書いた人、出版社、編集者が集まって、
「実際執筆ってどうよ?」とか「なにが大変だったの?」みたいなのを話すという感じです。
今年から始まった企画なので手探り感有りましたが、弁当食べながら聞ける気軽さもあってか結構好評だったそうです。
来年もやりたいねーという話がでていたので、今度初めて本を出すよ!という人は手を上げてみると良いかも。

午後はブースを回ったあと、

プレゼンテーション:Pythonistaで始めるiOSプロトタイプ開発 | PyCon JP 2017 in TOKYO を聞いてきた。
objc_utilでネイティブオブジェクトを扱う方法とかObjective-Cでのアプリ開発を知っていないとよくわからない部分があって割とレベル高めだった。

Partyでは、色々な人が近状を見て声かけてくれたり(会社で無能上司達に潰されて心身壊した件)、療養していた間会ってなかった友人たちと久しぶりに話したり、久しぶりにPythonについてちゃんとした質問とか出来たり(会社でpython関係で突っ込んだ質問しても答えてくれる人がいないので)、とにかくとても楽しく過ごせました。

2日目

色々質問した結果深夜まで作業が捗ってしまったので昼過ぎに眠気抜けないまま会場へ。

前職の人たちとお弁当食べながら雑談。
とにかく眠かったのでコーヒーを飲んで作業してた。

プレゼンテーション:Pythonをとりまく並行/非同期の話 | PyCon JP 2017 in TOKYO は聴きたかったのでコーヒーをキメて最前列着。
最近だとasyncioの説明だけで終わる発表が多いけど、この発表はタイトル通り非同期IOについて体系的に説明した内容。
個人的には2017年にざっくりおさらいできてラッキー!という感じだった。
並行/並列処理とはなにか、というところから話してたのも理解しやすさに繋がったかも。

ここで力尽きてLT見ずに寝てた。


イベント終了後、pyconjpに参加してた友人とサイゼリヤで飲み食いした。


今年も楽しかったです。
ありがとうございました!来年も楽しみにしてます。

Python入門者向けハンズオン #6 のメンターをしてきました

Python入門者向けハンズオンのメンターをしてきました。
メンター参加は今回で3回目です。

python-nyumon.connpass.com


◼どういうイベント?

Pythonに興味があるけどまだ触ったことがない方向けにハンズオンを行います。 イベント冒頭にてPythonの概要に関する講義が行われたあと、 実際に手を動かしながらPythonの基礎を一通り体験して頂きます。 さらにその後、ご自身で簡単なアプリケーションを作って頂きます。

https://python-nyumon.connpass.com/event/62147/

プログラミング自体まったく初心者という人から、他の言語を10年以上触っているという人まで来ます。
今のところ、大体5か月に1回のペースで開催しています。


◼イベント内容は?

イベント内容は基本的に毎回同じで、以下の4つのパートに分かれます。

1. Python言語入門

  • Pythonのはじめかた、基本的文法
  • 標準モジュールの使い方
  • 3rd-partyの使い方
  • 仮想環境の構築方法

2. スクレイピング

3. オリジナルプロダクト開発

  • 今日学んだことを活かして好きなものを作ってみる
  • 作ったものの共有会

4. 懇親会

  • ピザやお酒、ノンアルコール、お菓子を手に取りながら歓談

イベントで使用する資料はGithubで公開しています。


◼ハンズオン #6 の感想・多かった質問

感想

今回は今までの中で一番メンターの人数が多かった(13人)ので、かなり手厚いサポートができたと思います。
参加者が36人だったので、1メンターあたり2.7人の参加者が付くという計算になります。
この内、多言語経験者が半数ほど居たのでもくもくと進めてる人が多く、メンターへの質問待ちが発生する状態は見られませんでした。
アンケートでの満足度も高かったようで嬉しい限りです。

また、3回目のメンターということで初回に感じていた緊張はなくなりました。
(資料内容も大きく変化していないというのもある)

今回結構多かった質問

Anacondaをインストールしていたので、venvモジュールと衝突するというものでした。

この対処法には幾つか方法があるのですが、
今回は先に進まないとオリジナルプロダクト開発に進めないということもあり、

  • Anacondaをマシン上から削除するか、
  • 諦めてcondaコマンドで仮想環境を作る

という方法で対応しました。
他のメンターの方とも相談しましたが、
まずはcondaでやってもらい仮想環境とは何かを知ってもらう、という方に切りました。
(venvモジュールについてはイベントで解説&資料に使い方が書いてありますしね)


◼メンターを3回経験して学んだこと

毎回学ぶことはたくさんあります。
今回は、メンターを3回やってみて何を学んだことのなかで、
初学者の方からエラー系の質問がきたときにどうしてるかを脳内整理のためにまとめてみました。

よく「資料にあるコマンドを入力したらこうなった」という質問をされることが多いです。
この質問がくるとき、以下について一緒に確認するようにしています。

  • どういう命令を実行させようとしているのか
  • エラーとなる原因は何なのか
  • 何故実行が成功/失敗するか

まず最初に、
そもそも、今どういうことがしたくてこのコマンドを実行しているか、という部分を説明する。
ここがわかっていないと、後で「これってなんでこの結果返ってくるんですか?」という質問が来ます。

次に、
エラー(または例外)の原因を一緒に探る。
Stack Traceの読み方、表示内容の意味を説明します。
"xxxError:.." の意味を説明して、エラー発生場所を一緒に確認します。

最後に、
失敗の原因について説明します。
成功したコードと失敗したコードの差を見比べます。
ここで、ミスしない方法とか(lintツールとか)、公式ドキュメントを紹介したりすることもあります。


こんな感じでやってます。


◼おわりに

毎回メンター側も学ばせてもらっています。
今後も予定が合えば参加していきたいと思います。

最近、Python Boot Campというイベントを各地でやっているみたいなので、Python入門者向けハンズオンがないときはそちらへ参加してみるのもアリです。
Python Boot Camp(初心者向けPythonチュートリアル) — PyCon JP

「いちばんやさしいPythonの教本」が出版されました

先月、前職時代に同僚と共著で執筆した「いちばんやさしいPythonの教本」が出版されました。
実は8月に出版されてました。あれから1か月程経ったのか。早い。



いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで (「いちばんやさしい教本」シリーズ)

以下、本書の簡単な紹介

今年はいろんなPythonの入門本が出てますが、「いちやさPython*1」は、本当に初めてプログラミングをする人向けの本となっています。

プログラミング初心者向け本

Python・エディタのインストールから、ターミナルとは、コマンドとはなんぞや〜というところも解説しています。
前半はPythonの基本文法、後半はbot開発やbottle*2を用いた簡単なWebアプリケーション開発について解説しています。

「解説パート」と「実践パート」からなる講義形式

各章、「解説パート」と「実践パート」の2構成で成り立っており、講義のような形式をとっています。
まず最初に解説パートで用語や概念の解説をし、次の実践パートで「解説パート」で出た新しい要素を用いながら実際に動作するプログラムを作っていく、という流れになっています。

フルカラーで解説図が豊富

本書内のデザインはフルカラーなので、重要ポイントがパッと見でわかりやすくなっています。解説図が多く挿入されているのも特徴です。


初心者向けだけど、Pythonでできることを幅広く解説している一冊になったなぁと思います。
この一冊を手に取った人が、プログラミングを楽しみ、ものづくりの可能性が広がった!とちょっとでも思って貰えたら嬉しいなー。

*1:本書タイトルの「いちばんやさしいPythonの教本」の略称。

*2:ここに脚注を書きます Bottle: Python Web Framework — Bottle 0.13-dev documentation