プログラマ行進曲第二章

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

最近読了した本のことについて軽く書いてみる

言いたいこと

ちょっとはプログラマの端くれとして最近読んだ技術書的な本の書評をブログにしたためたいと思いつつ、無駄に書評をかっこつけて書きたくなってきていつも無駄に時間をかけて結局お蔵入りすることが多いので、お蔵入りしないように適当に本のリンクと一言紹介だけで終わらせようという記事をかくことで精神安定を図ろうとする記事です。

無駄に長い。

ちなみに読んだ本、流し身じゃなくてちゃんと手を動かしたり一通り読み通したものを対象にしてます。

読んだ本 1冊目

はじめよう!  要件定義 ~ビギナーからベテランまで

はじめよう! 要件定義 ~ビギナーからベテランまで

読んだ理由

  • 仕事で要件定義っぽいことをすることになったけど、今まで経験無かったから。
  • こちらに代表されるような書評を読んで、ちょうどいいレベルの書籍だと思ったので。

感想

  • 「要件定義初めてやるけどかなり不安」という私にピッタリな分量&内容でちょうどよかった。
  • 特に分量がこれだけコンパクトで読み通しやすいのに結構内容が含められているのがよかったですね。

ちょうどこの本の読者を対象にしたワークショップをたまたま発見したのでそこに参加してもう少し勘所をおさえて実戦に活かしたいところです。

読んだ本 2冊目

Amazon Web Services 基礎からのネットワーク&サーバー構築

Amazon Web Services 基礎からのネットワーク&サーバー構築

読んだ理由

  • この書評読んで興味を持ったから。
  • AWSまともに使えない。
  • それ以前にネットワークとかサーバー構築でかなり基本的なところが抜けていると自覚していたので。

感想

  • 実際のネットワークの繋がり方をこれっぽっちも理解してないレベルだったので勉強にはなった。
  • ただ、AWSのことは大して理解が深まるわけではないのは当初の予想通り。
  • あくまで私みたいな初心者向け。AWSのことを深く知りたい場合は他の情報源を当たるしかないと思います。
  • とはいえ、「ネットワークのことを何も分かってない初心者がAWSを使ってどんなものなのかの触りを理解していく」ということは十分に達成できる書籍だと思うので、そういう場合には向いているかと。

穴が空きまくっている領域を少し埋めることが出来たので、次は『ハイパフォーマンスブラウザネットワーキング』とかを読んでおかないといけない気がする今日この頃。

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

ただ、実際のプロダクトとかWebサービス構築に繋がるように手を動かして作っていくことと上手くバランス取ってやらないと、いつまで経っても成長がないのでどんな風に進めようか悩んでいるのが最近です。

2015年3月まとめ

はじめに

「今年はもう少しブログ更新したい」とか思いながら前回の更新から1ヶ月以上経過してしまいました。

で、何かいいネタ無いかなと思っていたら、id:yosida95氏の2015年2月まとめのブログ記事をたまたま読んで、「この形式なら俺でも何とか出来そう」と思ったので手を出してみた次第です。

なので、章立てから何もかも全て上記記事のパクリです。吉田氏にお礼の念を飛ばしておきます。

やったこと

今年入ってからやったことをまとめようとすると書くのに時間かかって記事挙げられなくなると思うので今月のみを箇条書きで。

所感

1ヶ月単位で振り返ろうとしても記録取っていないと中々忘れてしまうものだなあと反省。そして頭脳労働だけじゃなくて身体を鍛える方にもう少しパラメータを割り振る必要があるかなと思う昨今です。何せ体力少ないので。

これから

前から書いていてまだ実現していない「これが私のプロダクトです」と言えるような何かを作る方向の作業に絞って行動したいなと思ってます。

2014年の振り返りと今後やっていきたいこと

要約

気がついたら前回ブログを書いてから半年近く経過していて、これはマズいなー、なんて思っていたので久しぶりに筆を執ってみようと思った次第。

Twitterとかでは休まず稼働していたけど、ブログでは近況も書いてないし、年末の振り返りとか年初の意気込みとかも放っておいたので、時季外れだけどそれらをやってみて文章書くのを思い出していこうというのが狙いです。

2014年(一部2015年)の振り返り

文章形式で書くと長くなってどうせ書くのに挫折するので、箇条書きで殴って書いていくスタイルにしていきます。

  1. 2014年の7月から働き始めた。

    • 実に無職期間2年超え(のはず)なので、生きるの大変。
    • この2年間、色んなことがありました…(遠い目)
    • この間に起こったことは一部ポエムにしたためたことがあるけど、オープンなインターネット上には書きたくないこと満載でした。はい。
    • Web系IT業界周りで散見されるけど、次の職場が決まっているのに「無職だ」とか言っている人たちの言動見て黒い感情がどろどろと湧いてきましたね*1
    • とりあえず今はIT企業じゃないところでHTML/CSS/JavaScriptとかWordPressで記事の更新してたりとかしてます。
  2. プログラミングは続けています。

    • だが成長遅くて泣ける…
    • とりあえず一つ「これ私が作りました」と言えるものが欲しいです。
    • できるならプログラミング分からない人でも存在意義が理解できるものを作ってみたい。
    • と思いつつ幾星霜。言うだけで形になっていないので辛い。
    • 最近は以下のことをやっている(気がする)
      • CSS設計の勉強。HTMLのお勉強も含めて。
      • JavaScriptで基本的なフロントエンド作りっぽいこと。
      • Go~
      • Webアプリケーションの作り方
      • iOSアプリの作り方(Swiftで)
  3. (仕事で)まるまる一つ全て自分の作業でサイトを作ってリリースした。

    • ごめん、嘘ついた。画像素材とかは別の人が作ったし、サイトのデザインはクライアントが要望したものだった。
    • どんなもの作ったかというと、「オンラインストアの期間限定キャンペーン用のランディングページ」です。
    • 「タブをクリックしたらそれに伴って商品画像とかリンクが切り替わる」的な挙動するページ作るの初めてだったので、何となく感慨があります。
    • 以前同様の仕事を担当していた人はjQueryでやっていたようなのですが、今回初めて要望された機能とかがあり、jQueryでやったらゴチャゴチャして死ねると思ったので、knockout.js使って解決。
    • knockout.js使うの初めてでしたが、かなり勉強になりました。オライリーのknockout.js本、マジ役に立った。
    • このknockout.js使った技術的な経験をブログかQiitaにまとめてみたいと思いながら時間だけが過ぎていく毎日です。

今後やっていきたいこと

これも箇条書きで。

  1. 何かプロダクトっぽいものを一つ出す。
    • WebアプリかiOSアプリで。
  2. SphinxのEpub3ビルダー、さっさとPRして取り込んでもらうようにする。
    • 英語辛い。
  3. epub関係のライブラリ作り。
    • epubで一攫千金目指す*2
  4. RubyHaskellを少しは書けるようにする。
  5. 低レベル・低レイヤーの技術や知識を深める
    • CとかRustとかDとか使うとか。
    • そもそもコンピューターサイエンスの知識をちゃんとやるとか
    • アルゴリズム分からない状態を解消するだとか。
  6. 自然言語処理とか機械学習だとか勉強したい。
    • でもトライしてみても特定分野の基礎学力無い人お断りな分野なので多分挫折する。
    • というかもう何回もトライしてみて挫折している。

もう書ける気がしないのでここら辺で締める。

*1:今でも湧きますけどね

*2:嘘だよ!

YAPC::Asia Tokyo 2014に行って、初めて #yapcasia に参加してきた感想

はじめに

この記事を書き始めたのは8/31辺りです。YAPC::Asia Tokyo 2014が終わってすぐ書き始めました。

…が、気づいてみたらもう9/14…PyConJP 2014が終わってしまっている!! さながら夏休みの宿題を片付けられずに新学期を迎えた子ども状態です。

というわけなので、宿題を片付けるため、下書き欄に残ったままの当記事を編集してブログ更新することにしました。

以下、本文

タイトルの通り、初めてYAPC::Asiaに参加してきました。「ブログ書くまでがYAPCだ」ということを主催側が何度も主張していたこと、別のイベントで運営とか関わったことがあるのでイベント後の参加者のブログ記事が運営側にとって励みになることが何となく分かっていること、最近ブログを更新してなかったことなど重なったので、久しぶりにブログ更新しています。

参加したきっかけ

普段一番よく使っている言語はPythonなので、普段参加する勉強会もPython界隈のものが多いのですが、そこで知り合った@さんが以前「YAPCに参加してみるのも面白いよ」という趣旨のことを言っていて気になっていたので、いつか参加してみようと思ったところ、今回ちょうどいい機会だったので参加しました。

きっかけを作った@さんの今回のYAPC参加記事はこちらですね。

参加した日程とプログラム

参加できたのは前夜祭と2日目です。1日目は仕事があって無理でした…残念。

前夜祭に関して

前夜祭は仕事終わりに何となく参加して途中からだったので半ば「ふーむ、最初からいないからよく流れが分からん」という状態でしたが、最後のクイズは印象深かったですね!

…あ、そういえば前夜祭の際に「失敗したなー」ということを思い出しました。

前夜祭の会場に入って、確か増井(@)さんがwri.peの話しをしていた中盤辺りの頃だったと思うんですが、私がいた場所の近くで弾(@)さんとどなたかがSwiftについて話し始めていたんですね。で、私、弾さんのSwiftのプログラムに参加したかったんですけど、1日目は仕事があって参加できなくて残念な思いをしていたところ、後ろで「type inferenceが云々」とか色々興味深いことを弾さんが話していて非常に興味あるなー、もっと聞きたいなー、と思って後ろを振り返ったら、どうやらうるさがって後ろを振り向いたものと勘違いされたらしくて弾さん達が話を止めてSwiftの話しをするために外に出てしまったんですね。

…あれは大失敗でしたね、個人的に。振り向かなければもっと話しが聞けたのに…

外に出てSwift話しに加わるという案も勿論考えましたが、YAPC初参加で会場の雰囲気を最初から味わわないまま行動するのもどうかなあと感じたので、結局最後まで会場で話しを聞いていました。が、それはそれでSwift話しを聞けないという後悔が残ってしまいましたね。ええ。

2日目に参加したプログラム

2日目に参加したプログラムは以下の通りです。

2日目のプログラムに参加した感想をそれぞれ簡潔に述べてみる

本当は長く感想を書きたいところですが、そうやろうとするといつも頓挫して記事がお蔵入りになるということを何度も繰り返しているので、一言くらいの感想を箇条書きにするくらいでとどめます。あと、感想が極端に短くなるプログラムの方、許して下さい!

突然ITインフラを任された人のための…監視設計入門

  • 個人的に一番楽しみにしていたプログラムでしたので参加。
    • というのも、監視とかITインフラ周りの知識が全くゼロの状態だったので、見取り図に当たる話しをちょうど聞きたかったからです。
  • 『Webアプリエンジニア養成読本』の「サービス運用の基礎知識」の担当著者が登壇者の@さんで、内容も期待できるからという理由もありました。
  • あと、始まる前の漫談がよかったですね。

当初の「監視に関わる運用の見取り図が欲しい」という私のニーズにマッチした内容で満足でした。PyConJP 2014にも参加されていたので、パーティの時に色々直接感想を伝えることが出来てよかったです。

Google BigQuery で DWH 構築

正直Hadoopとかそこら辺のものを一度も触ったことがないので、「PrestoとかImpalaとかnorikraとかBigQueryとか、何がどう違うのか全然分からん…」という所から少しは理解が進み、これからこれらのものをいじる必要が出てきたときに役立ちそうな話しだったのでよかったです。

JSON SQLインジェクション脆弱性と、そこから学ぶセキュアプログラミングの原則

すごいことを話していることは分かりましたが、余りに勉強不足で内容理解できなくてこれ以上感想書くのが難しいのが痛いですねえ…

後内容とは全然関係なのですが、登壇者の@さんは以前からネット越しに存じ上げていましたが、想像より声の高い方だったのが意外でしたね。

Perl入学式 in YAPC::Asia Tokyo 2014

  • Perl読めるようになりたかったから参加しました。
    • たまたま当日参加できるということを直前に知ることが出来たのがよかったですね。
  • 今回より前のPerl入学式を生徒側として修了した方が今度はサポーター側として参加者のサポートを行っているという体制が非常に印象的でした。

私の席の担当サポーターの方もそうでしたが、「仕事でプログラミングはしていないけれど、Perl入学式をきっかけにしてプログラミングを知って、今はサポーターになっている」という方の姿が眩しかったですね。

ほんの数時間しか参加してないですが、外野から見てると非常に良い体制でPerl入学式は回っているのかな?なんて思いました。

体調と予定さえ悪くなければ、第3回目も登録したので、これを機にPerlワンライナーで少し書けるくらいになりたいですね。

趣味開発のためのクラウド/VPS活用術

  • VULTR、名前だけ知っていたけれど使ったことはなかったので「なるほど〜」と思いました。
    • 東京リージョンがあるのはいいですね、確かに。
  • 発表の時間が足りてなかったのが非常に勿体なかったですね。もっと話聞きたかったです。

登壇者の@さんですが、自分の認識では「マコピーさんだったはずなのに何でファッションポエムって名前で登録されてるんだろう?」と思いましたが、セッション中に謎が解けてなるほど、と思いました。

Lightning Talks Day 2

  • TDD(Twitter Driven Development)の発表が非常に印象に残りましたね。とても面白かったです。
  • あと、Dancer2の開発者(?)の方もテンション高いなあと思いました。

キーノート

  • @さんの発表を聞くのは初めてだったのですが、「結構ウェットな内容を話すんだなー」とビックリしました。
    • 自身の心情とか身の上も含めた話しをするのって結構人生のスタンスがしっかりしてないと出来ない印象があるので、そういったスタンスで人生過ごせるようになっているのが結構印象的でした。

あと、自分に子どもがいればもっと理解できるところが増えるのかな?って思う、そんな内容でした。(…まとまらない感想だ)

全体的な感想

Perlを一ミリも読めない&書けないPythonistaの私でも十分楽しめたので良かったです!Perl以外の言語使用者でも十分楽しめる懐の深さがYAPCには確かにあるんだなー、と思いました。

あと、@さんがTwitterで語っていたコレ、本当にそうだと思います。

私も去年、PyConAPAC 2013でスピーカーとして登壇した経験があり、聴衆の方の反応があると非常に嬉しいしやりやすいということを身をもって実感したため、この意見はとてもよく分かります。

自分も聴衆として参加するときは少しそういった意識を持って自然と聴けるようになれればいいなあ、そう思いました。

最後に、運営されていたスタッフの方をはじめ、YAPC::Asia Tokyo 2014の関係者の方々、素晴らしいカンファレンスをありがとうございました。

こちらからは以上です。

積ん読状態になっている技術書(電子書籍)を再び読み始める方策を考えてみた

電子書籍で買った技術書がPCの奥深くに眠っていて紙の書籍よりも全然読み進められていないことに気がついたのでどうにかしないといけないと思ったのが動機。

結論

以上。

こんな感じ

狙っていること

  • PCを立ち上げたら嫌でも積ん読状態になっている技術書が目に入るので「しょうがない、読むか」と思う機会を増やしている
  • 読んでいないままだとデスクトップが乱雑なままなので、デスクトップを綺麗にしたい人は嫌でも積ん読を解消せざるをえなくなってくる。

注意点

普段からデスクトップが乱雑な人には恐らく効かない。

まあ、とりあえずの施策である。

WEB+DB PRESS vol.80の特集「エンジニアの学び方」の書評を読んで気になったので該当書籍買って読んでみた

要約

  • はてなブックマークを眺めていたら、「エンジニアの学び方」というタイトルの書評エントリを見かけた。
  • 記事を読む限り、今の自分のニーズに合致しそうなことが書いてありそうだったので、該当書籍の「WEB+DB PRESS vol.80」を買ってみた。
  • 該当特集の「エンジニアの学び方」を読んだところ、この特集内で言うところの「深い理解」軸と「応用対象」軸の学びに関して2年間くらい悩んでいたため、今後の学習計画の糸口が出来て非常に良かった。

Web+DB PRESS vol.80を購入したきっかけと実際に特集を読んでみて

直接のきっかけは上記要約に書いたように「『エンジニアの学び方』というタイトルの書評エントリを見かけて、内容が気になったから」というものです。

「じゃあ、何で該当エントリを読んで特集の内容が気になったの?」というと、2年くらい前から「個別具体的な技術とか知識とかツールの使い方ばかり覚えてきたけど、そういったものを自分の作りたいものに上手く活かせない…どういう風にしたら学んできた技術なりツールの使い方を実際のプロダクトを作る際とか目の前に表れた問題を解決する時に応用できるんだろう?」という疑問を持っていたからです。

そんな疑問を持っていた私に、この「エンジニアの学び方」では以下の2つのモデルを教えてくれました。

  • 知識には3つの軸がある

    1. 「広い視野」軸
    2. 「深い理解」軸
    3. 「応用対象」軸
  • 学びには3つのフェーズがある

    1. 「知識収集」フェーズ
    2. 「抽象化」フェーズ
    3. 「応用」フェーズ

それぞれの詳細について書くと長くなってしまうので割愛しますが、上記のモデルで言うと私は知識も学びも1ばかりに偏ることをずっとしていて、2,3を疎かにしていることが特集を読んだ後はっきりしてきました。

2,3に当たる部分を疎かにしていることは何となく自覚していたのですが、「抽象化」フェーズといった明確な名前と位置づけを与えられたことで「今自分がしている学びはどのフェーズに当たるもので、現在の自分に足りない知識はどの軸のものか?」といった判断がしやすくなったと思います。

領域は多少違えど、デザインパターンの文脈やリーダブルコード的な文脈で良く言われている「名前重要!」という話しと被るところが多く、理解をモデル化して適切な名前を与えることの大切さを実感できました。

特集「エンジニアの学び方」の内容に関してもっと知りたい方は著者の西尾さん自身がブログに書いているので、それを読むといいと思います。

結論

非常に俺得な記事でしたので非常に幸せになりました。

特集記事を書いた西尾(@nishio)さん、書評エントリを書いたmarcoさん、ありがとうございました! 手を広げすぎると失敗するので後回しになると思いますが、この特集が生まれるきっかけになった『コーディングを支える技術』も良い本だと聞いているので、いずれ買って読んでみようと思います。

特集気になった人はWEB+DB PRESS vol.80買ってみるといいと思います。他の特集も「Web技術入門」だとか「テスト駆動インフラ」だとか「Courseraで計算機科学を学ぼう」だとかあるので、私みたいに基本的なところがボロボロ抜け落ちている人間にはオススメだと思いますよ。

WEB+DB PRESS Vol.80

WEB+DB PRESS Vol.80

電子書籍版もあるみたいですね -> 電子書籍版 Web+DB PRESS vol.80

GAEとかVue.jsとかMartiniとかいじって何か作り始めた

地味にiOSプログラミングは続けているのだけれど、表に出せる結果が無いのでショボーンとしつつ、久しぶりにブログでも更新しようかなとか思い始めて今こうして書いている。

が、特にネタは無い。

強いて言えば、タイトルで書いたように、GAE/Goを使って何か一つWebアプリっぽいものをこしらえたいなと思ったので、まだ動作するわけじゃないけどMartiniを使ってアップしてみた。

本をどこまで読んだか読書記録を残しておけるものが欲しかった*1ので、それが出来ないかな?と思いながら作り始めた。

で、作りながら「これ、Vue.jsみたいなクライアントサイドの仕組みを勉強するいい機会なのでは?」と思ったので、それにも挑戦している。

現状、ローカルで単にブラウザを起動して試したときではちゃんとVue.jsのデータバインディングが機能していたのに、goapp serveで実行すると何故かデータバインディングが機能しなくて困っているところだ。

フロントエンド周りのこと全く不案内で意味不明なので自力で解決できるのかよく分からないでやっている。何かクリックでイベントが発火しなかったりして困っているのだった。

*1:というかiOSアプリでそういうものがある