プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

『SQL書き方ドリル』の第2章まで学び終えた

以前記事で触れたように、『改訂第3版 すらすらと手が動くようになる SQL書き方ドリル』を勉強中です。

takuan-osho.hatenablog.com

つい先日、やっと第2章である「ひとつのテーブルを扱う」まで学び終えました。

学んだ事項は以下の通りです。

  • SELECT
  • FROM
  • AS
  • WHERE
  • 演算子
  • 集合関数
  • CASE
  • GROUP BY
  • HAVING
  • ORDER BY
  • DISTINCT

恥ずかしながら正直な話、これらのことも理解し切れていなかったので、非常に勉強になりました。

第3章以降は結合など複数のテーブルを扱うことが学習範囲になってきて、より実践的な内容となるので早めに終わらせたいと思います。

改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus)

改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus)

『Goならわかるシステムプログラミング』を勉強し始めました

表題の通りです。

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング

以前から多少golangは触っていたのでほんの少しは分かるけど、インターフェースの扱いを含めて本格的な使用に耐えるほどの知識と運用能力は無かったことに加え、私自身がOSなど低レイヤーの知識が仕事上必要なのに不足していたのでどこかで勉強しなくてはいけないと感じていたことが重なったので、時間を見つけて少しずつ写経したり問題を解いたりしています。

今のところ大半が写経なのですが、どうせやるならgithub上にコードを残していつでも参照できるようにしたかったので、練習用リポジトリを作って学習の成果を残すようにしました。

github.com

まだ第3章の最後にある問題も解いていないという状況ですが、これまでと同じく時間を見つけながらボチボチ勉強していきたいと思います。

ただ、前回の記事で触れた「SQLの知識不足」の方がクリティカルなので、そちらを基本的に優先していくつもりです。

takuan-osho.hatenablog.com

まあ、何とかやっていきます。

SQLが分からないので勉強し直し始めました

タイトルそのままなのですが、プログラミングをやり始めてもうすでに結構時間が経っているのにSQLがまともに書けないという欠点を抱えているので、これを機会に勉強し直し始めました。

改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus)

改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus)

詳細はこの本を読み終えた後、別途記事としてまとめようと思いますが、この本がいいというふうに聞いたので、この本に書かれたことを一つずつやり始めています。

正直な話三日坊主で終わる可能性もなきにしもあらずですが、とりあえずやりはじめた数日間ぐらいはまともに取り組んでみようと思います。

今年はこういう感じで、今まで宣言していたけれどやり終えていない学習だったり読書だったりを最後までやって記事にしてまとめるということを重視して生活していきたいです。

2018年の抱負

去年も抱負を書いたのと、はてなブログの今週のお題だそうなので、今年2018年の抱負も書こうと思います。

takuan-osho.hatenablog.com

去年の抱負と同じく、以下の制約を課して考えました。

  • 1年間で達成しようという目標は多くても「3つ」に絞る

2018年の抱負

IT系技能関連の目標

[UI|UX|Web]デザインを勉強して、自分でプロトタイプを作れるようにする

実はもう既に始めているのですが、自分でWebアプリを作ろうと思って最近作業をしていて、その一環で、まず自分だけでまともなプロトタイプやワイヤーフレームを作れるようになった方がいいと思い、最近UIデザイン、UXデザインやWebデザインを勉強しています。

今までAdobe Creative Cloudに加入していたのに全く活用してなかったので、無駄金を払うくらいならそういうことに使おうと思ったのも大きいです。

取りかかりとして、今はAdobe XDを使って以下のUdemyの講座を受講して勉強しています。

https://www.udemy.com/adobe_xd/

計測可能な目標としては以下のようなことを考えていて、どれか一つでも年内にできれば達成と見なしていいかなと思ってます。

  • 参考となるWebサイトを選び、そのWebデザインをAdobe XDなどで模写する
  • 自作のアプリのプロトタイプをAdobe XDなどで作成する
  • カスタマージャーニーマップなど、UXデザインをする際に行う一連の流れを自分で一通り体験する
  • 自分自身のポートフォリオサイトを立ち上げる*1

ITはあまり関係ない目標

1年で12冊は本を読み、感想ブログを書く

ここ最近感じるようになったのですが、「技術書以外の本を読まない」という状態が続いていて、学生時代の頃と比べるとつまらない人間になりつつあるなーと思ってきているので、それを修正する目標です。

読みっぱなしにして身につかないということを最低限防ぐため、感想をブログ記事にしてアウトプットするということにしました。

1年で12冊というのは要するに1ヶ月1冊なら何とか可能だろうという目算ではじき出しました。ただ、1ヶ月1冊だと達成できなくなる可能性があるので1年単位にしています。

今月は早速以下の記事で達成できました。

takuan-osho.hatenablog.com

出来る限り技術書以外(小説やビジネス書など)でやろうと思っていますが、できなさそうなら今まで読んできた技術書の中でブログにしていないものを扱ってもいいという風にしてやります。

(骨盤が後傾せずに)開脚ができるくらいの柔軟性を得る

昨年の目標の「(180度の)開脚をできるくらいの柔軟性を得る」の延長戦の扱いの目標です。

2017年の振り返りでも書いたように、昨年は180度開脚を目指して柔軟していたら左脚内部の筋を痛めてしまったので、そういうことにならないように目標をほどほどにしておきました。

正直な話、1年以内に達成できるか微妙な目標ですが、最近柔軟もサボり気味になっているので、ここら辺でてこ入れしようかと思い、入れています。

まとめ

最初のデザインの目標はいい塩梅にハードルが高めなので頑張ります。

*1:これは労力かかって無理かなとは思いますが。

『SINGLE TASK 一点集中術』を読み終えた

takuan-osho.hatenablog.com

『やり抜く力 GRIT』を読んだ後、「一つのことに集中する方法論が知りたい」と思っていたところ、本屋で見つけたので読んでみました。

SINGLE TASK 一点集中術――「シングルタスクの原則」ですべての成果が最大になる

SINGLE TASK 一点集中術――「シングルタスクの原則」ですべての成果が最大になる

例によって例のごとく、これも期待に応えられるほどの内容ではなかったですが、最近の自分の集中力の欠如を意識するにはいい薬だったかと思います。

雑念が入りにくい環境下で今日の12時頃から1.5時間くらいでバーッと読みました。一応シングルタスクを標榜している書籍なので、それに習って読書も集中してやるようにしました。

この書籍を一言で要約すると「マルチタスクは効率が下がるので、効率をよくしたかったらシングルタスクで作業せよ」というものでした。

この主張自体は人によっては至って当たり前で何の新鮮味もない*1ですが、これくらいシンプルな法則は日々の生活で実践していくのが難しいと相場が決まっているものです。

この本の著者もその辺りは分かっているようで、SNSを含め情報に溢れた現代でマルチタスクをせずにシングルタスクで作業していくことの難しさに対処していくか、そんなことも含めて書かれていました。一番最初に「集中を削ぐものから離れる」という趣旨の項目が書かれていることからもそれが伺えます。

GTDを日々実践できている人にはもう既にやっていることばかりなので「何を当たり前な」と思うことばかりですが、私みたいに何回もGTDをやって途中で挫折している人間にとっては「これくらいやることを絞ってくれるならできそうかも」と思える分量だと思います。

本もそれほど厚くなく、数時間で読み切れる分量だと思うので、気になる方は本屋で手に取って読んでみるといいかと。

自分用のメモに残していた文言を適当に書き散らして終わりにします。

p72

シングルタスクとは、単なる行為を指すわけではない。自制心を発達させることでもある。

p76

シンプルに考えたいのなら、一日のあいだに「ひとりでじっくりと考え事をする時間」を決めるのがいい。

p188

いま自分にとっていちばん大切なことはなにかを考え、それに誠実に取り組もう。

*1:私もそうです

『やり抜く力 GRIT』を読み終わった

学生時代の読書のパターンと比べて、ここ10年間、技術書以外のジャンルの本をほとんど読まなくなってしまっていて、あまりよろしくないなと思い、以前は読んでいたビジネス書や小説なども読み始めるようにしました。

今回はビジネス書*1の読後感想です。

やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける

やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける

人生色々あったことも影響してか、学生時代と比べて物事をやり遂げる経験や力が少なくなっていると感じることが多く、立てた目標を完遂する癖をつけたいなとここ最近感じていたところ、たまたまこの本の著者のTEDトークでGRIT(やり抜く力)のことを知り、実践的なことが書いてあるのかと思って買って読んでみました。

読み終わった今感じることとして、率直に言うと期待外れでした。

というのも、『人生において何かを成すには「才能」よりも「やり抜く力」の方が重要度が高いことが研究の結果分かった』ということらしいのですが、その「やり抜く力」を伸ばす方法については(まだ研究途中ということなのでどうしようもないのでしょうが)、効果的な方法が研究の結果分かっている箇所もあればまだ不明なところもあるという箇所が多いようで、学問的に裏付けられた「やり抜く力を効果的に伸ばす方法論」が確立されてなさそうだったからです。

一応、「自分のスキルを上回る目標を設定してはそれをクリアする練習を習慣化する」など、指針となる方法は何個か提示されていましたが、どれも確立された方法論というよりは単なるガイドライン程度に(少なくとも私は)思えるレベルで、個人的に期待していたものが無かったということです。

ただ、本を読んでいてモチベーションを高める効果はあったのと、誰もが努力無しに楽に成功しているわけではないということを再認識できた効果があったのは良かったかと思います。

読む時の注意としては、ここで書かれていることを自身を対象に実践するのはおおよそ問題がなさそうですが、他者に対して実践しようとすると、容易にブラック企業がやるようなやりがい搾取的所業をするように振る舞ってしまいそうだなと思ったので、基本的に自分の人生だけに適用するように使った方がいい考え方だなと思いました。

もっと研究が進んで、やり抜く力を効果的に育成する方法論が確立されるといいんですけどね。

*1:というより自己啓発書?

『プロフェッショナルSSL/TLS』は業務で即役に立った良い本でした

言いたいことはタイトルに書いたのですが、「『プロフェッショナルSSL/TLS』、良い本です」というのが結論の書評です。

『プロフェッショナルSSL/TLS』 – 技術書出版と販売のラムダノート

『プロフェッショナルSSL/TLS』に関しては前回のブログ記事で以下のように軽く触れていました。

業務でSSL証明書周りの作業をしていて、今まで穴だらけだったSSL/TLSの知識がむっちゃ足を引っ張っている現状だったので、以下の書籍を買いました。

最近こんなことを勉強してます - プログラマ行進曲第二章

まだ1/4も読めていないですが、それでも十分仕事に活かせているので原著の作者と翻訳者とラムダノートさんありがとう、という気持ちです。 前職でSSL証明書を取得する必要があったときにネットのリソースだけでSSL/TLS周りを勉強しましたが、知りたいことを探していても古かったりして本当に正しいのか逐一調べながらやっていたのに対して学べなかった経験からすると、SSL/TLSの勉強をしたかったらさっさとこの本を買って勉強した方が時間の節約になっていいと思いますね。

最近こんなことを勉強してます - プログラマ行進曲第二章

引用で触れている業務*1が終了したので、上記の引用のように軽く感想を書いて終わりにするのではなく、一回振り返って書評をブログ記事にしてまとめた方が今後の自分のためにもいいかなと思って今書いています。

本の内容の真っ当な書評としては他の方がもっと詳細に書いているので、そちらを見た方がいいでしょう。

【書籍】プロフェッショナルSSL/TLS:Geekなぺーじ

jovi0608.hatenablog.com

私の書評はどちらかというとユースケースに相当するもので、「こういう問題があって困ったので買って、無事に問題を解決しました」という風に読んでもらうといいのではないかと思います。

あと、書評とは書いていますが、まだ私はこの書籍を全て読んだわけではなく、業務に関連して参照した部分+αくらいしか読んでないことも記載しておきます。

何を必要として『プロフェッショナルSSL/TLS』を買ったのか?

上でも引用したように、業務でSSL証明書を扱う必要のある作業を担当することになり、元々のSSL/TLSの知識があやふやな状態でやっていたら仕事が進まなかったのでそれを解消するために買いました。

担当した業務についてもう少し具体的に書くと、Apache Kafkaを利用したプロダクトがあるのですが、KafkaがSSLを利用*2している箇所があり、そこに必要な証明書の設定をgradleでしていたのをopensslにしてシンプルにするという業務でした。

ここで問題になったのが、何回も述べているように、私の元々のSSL/TLS知識があやふやなことでした。

今回担当した業務では「既存の設定のフローをシンプルにする」というものでしたが、この既存の設定の仕組みが割と複雑で、まずそこを理解してシンプルにするところで難儀していたのに加え、SSL/TLS関連の知識があやふやだったせいで「そもそもどの設定を変更すればいいのか、あるいはいけないのか」ということが分からず、既存の設定のフローをシンプルにする前の段階で詰まることが業務初日に多発していました。

ここで「まずい、このまま行くと何も進捗が出ずに何日も経ってしまいそうだ」と思ったことと、元から「いつか買おう」と思っていたことが重なり、『プロフェッショナルSSL/TLS』をラムダノートさんのサイトに行って即購入したという流れになります。

『プロフェッショナルSSL/TLS』のどのあたりが役に立ったのか?

個人的にこの『プロフェッショナルSSL/TLS』という書籍が素晴らしいと思う点の一つは、「そもそも証明書とは何か、使用されているプロトコルは何か、それらがどういう風に使われているのかといった、SSL/TLS関連の全体的な知識」と「opensslコマンドを使ってCSRを生成するといった、より実装や具体的な作業に近づいた知識」の両方がちゃんとした分量でまとめられていて、自分の求めている情報がどちらの種類であっても引き出しやすくなるように章立てられていることです。

私みたいにSSL/TLSの知識があやふやな人がインターネット上のリソースだけでSSL/TLSに関することを調べようとすると、以下のような問題にぶち当たると思います。

  • 自分が分からなくなっている問題がSSL/TLSの全体的な知識を要求するものなのか、それとももっと実装に寄った具体的な知識なのかが判別付かない
    • 判別が就かない位なので、ネット上のリソースの正しさが判断できない
  • SSL/TLSに関して自分が抱える問題を解決してくれる情報が各サイトに散らばっていて、かき集めるだけでも一苦労

実際、私は前職でサイトのHTTPS化をする際に(余力がなかったので)ネット上だけでSSL証明書に関する事項を調べましたが、上記の問題に結構ぶち当たって時間を使ってしまった記憶があります。

それに比べると、この『プロフェッショナルSSL/TLS』は一冊手元にあるだけで疑問に思った点をすぐに調べることが出来、調べた点に関連しそうな情報も書籍内のみで少なくとも概要は知ることが出来るようになっていて助かりました。

私の業務の場合で言うと、既存の設定フローで証明書にAuthority Information Accessの情報を追加しているところがあったのですが、そもそも証明書のフィールド自体の知識がなかったので、「3.3.1 証明書のフィールド」と「3.3.2 証明書の拡張」のセクションで書かれている知識が非常に役立ちました。

加えて、実際に設定フローを変更する際、CAを立てて自分の望む設定で証明書を発行したり署名する際に必要なopensslの具体的なコマンドや設定ファイルの書き方などについては、「11.2 鍵と証明書の管理」と「11.4 プライベートCAを作る」に記載されていることをそのまま活用できました*3

私は今回使いませんでしたが、ApacheやNginxで設定する場合などの章もある*4ので、そういう知識が必要な業務でも十分役に立つと思います。

まとめ

最初にも書いたとおり、「『プロフェッショナルSSL/TLS』、良い本です」というのが感想です。

私みたいに「SSL/TLSの知識があやふやなのに業務で急に必要になった!」という人は、ネット上のリソースだけで消耗しそうになったら、「この本の購入を検討した方が結果的に安上がりになるかも」ということを頭の片隅にでも置いておくといいでしょうね。

安くはない書籍なので、会社のお金を使って購入するのもいいと思います。

*1:といってもチケット単位のそれほど大きくないものでしたが

*2:公式ドキュメントだとこのあたりの話です

*3:opensslのコマンドに関しては多少知りたいことが書かれてなかったのでmanコマンドによるヘルプと他サイトに記載された情報でカバーしています。

*4:これらの設定に関してはIPAが発行している「SSL/TLS暗号設定ガイドライン」で足りる場合も多いかと思いますが。