nekoTheShadow’s diary

IT業界の片隅でひっそり生きるシステムエンジニアです(´・ω・`)

「しがない問題」の解答をGitHubにまとめた

お題「しがない問題」

以前にこんな記事を書きました。

nekotheshadow.hatenablog.com

「@tbpgrさんが作成された『しがない問題』をいくつかのプログラミング言語で解いてみた」いうもので、記事を書いたきりすっかり忘れていたのですが、このたびGitHubのレポジトリに自分の解答をまとめておくことにしました。以下がそのURLです。

github.com

またレポジトリにまとめるにあたって、先述の記事では扱わなかった言語での解答も増やしておきました(´・ω・`)

『Effective SQL』(翔泳社)を読み終わった。

Effective SQL

Effective SQL

えふぇくてぃぶ(´・ω・`) いわずとしれたEffectiveシリーズのひとつで、そのタイトルの通り、SQLDBMSに関するベストプラクティスが手ごろにまとまっています。ただSQLと大々的にうたっているわりにSQLそのものに関する記述は6-7割程度で、残りはDBMSに関する記述になります。もっともSQLDBMSは切っても切り離せない関係にあるので、DBMSに関する記述が多くなってしまうのは仕方ないかなという気はします。

正直なところ、本書を読んでみて、目新しいと思えるトピックはなかったように感じました。しいていうならば、インデックス周りの話は勉強になったというか、体系だって学べたのはよかったと思います。ここでわたしのバックグラウンドを話しておくと、アプリケーション開発中心のシステムエンジニアで、SQLDBMSにはちょっとだけ関心をもっており、いろいろと関連書を読んでいます。この程度の人間でも「基本の復習にはなった」というような感想を持つので、上級者やSQL魔人(SIerにはそういう人がたまにいるのだ)にはやや物足りないかもしれません。

しかし逆に言えば基本がしっかりとまとまっているということであり、脱初心者や中級者を目指すという人には本書はもってこいだと思います。ベテランの開発者でもSQLDBMSが苦手という人は少なくないため、その分野について、人よりちょっぴり抜きんでているだけでも結構武器になるはずです(実体験)

上田隆一『シェルプログラミング実用テクニック』(技術評論社 )

シェルプログラミング実用テクニック

シェルプログラミング実用テクニック

めざせシェル芸人――とまでいわなくても、Shell Scriptを使いこなせるかどうかはプログラマにとって重要です。ロートルSIerに勤めているとよくわかるのですが、この道何十年というベテランプログラマでもシェルをいまいち使いこなせないという人はおり、シェルが人よりちょっとわかるというレベルでも市場価値はぐんと伸びます。

Shellを覚える利点として「定型業務が自動化できる」という話を聞きますが、さまざまな自動化ツールが世にあふれ、PerlPythonなどの高機能なスクリプト言語Linuxにビルトインされている現代、シェルスクリプトの主戦場は「書き捨て」にあると個人的には思っています。いくらPythonPerlが便利といっても、非定型業務を書き捨てプログラムで楽にこなすという観点ではシェルスクリプトにはまずかなわない。またコマンドとパイプをつなぎ合わせながら1行で複雑な処理をかける爽快感もPythonPerlでは味わえないものです。

本書は「Shell Scriptでこみいったシステムを作る」というよりは「書き捨てプログラムを素早く書いて、ちょっぴり複雑な業務を手早く終わらせる」ということを中心とした入門書である――とわたしは感じました(まあ「こみいったシステムを作る」的な話がないわけではないので、筆者の意図せざるところかもしれませんが)。またタイトルにわざわざ「実践」と題しているように、現実の業務で出くわしそうなテクニックが多数紹介されています。個人的にはgrep -o .xargs -P 0というイディオムがもっとも「目からうろこ」でした。あとはなんとなくで使っていたxargssedについてきっちり学ぶ機会になりました(´・ω・`)

読書メモ: 『三島由紀夫と楯の会事件』『陰謀の日本中世史』『クー・クラックス・クラン』『山口組四代目 荒らぶる獅子』

ここ最近読んだノンフィクションや新書のうち、面白かったものの読書メモです(´・ω・`)

保阪正康三島由紀夫楯の会事件』(ちくま文庫)

タイトルには「楯の会事件」とあるが、これはいわゆる三島事件のこと。本書はその「楯の会事件」が発生した背景を探るべく、三島由紀夫ではなく「楯の会」について綿密に取材したものです。三島事件というと作家三島由紀夫が「子分」である楯の会を集め、先鋭的な行動に走った――とイメージしていたが、本書によると、楯の会との交流の中で三島の思想は先鋭化し、あれだけの事件を引き起こすまでになったらしい。

呉座勇一『陰謀の日本中世史』(角川新書)

陰謀の日本中世史 (角川新書)

陰謀の日本中世史 (角川新書)

鎌倉時代から織豊時代までのさまざまな歴史的事象について、世間に流布する陰謀論を批判・検討した1冊です。あけすけにいうと「昔のことなんてよくわからない」。だから想像力を駆使しすぎた陰謀論があとを絶たないわけですが、それらが荒唐無稽な議論に過ぎないことを本書はアカデミックな視点から丁寧に解説しています。個人的には「鹿ケ谷の陰謀」の実在があやしいというのがなんとなくしょっく(´・ω・`)

浜本隆三『クー・クラックス・クラン: 白人至上主義結社KKKの正体』 (平凡社新書)

白人至上主義を奉ずる秘密結社で、白い頭巾をかぶって夜な夜な集まり、黒人をリンチにかけるという、おどろおどろしいイメージで語られがちなKKK。その実態と政治的社会的背景に関する「日本ではじめての新書」だそうです。その活動が長期にわたり、盛り上がりが3回あったということからもわかる通り、排外主義集団といっても、その時代時代に複雑な位相を持っているという当たり前のことを再認識しました(小並感)

溝口敦『山口組四代目 荒らぶる獅子』(講談社+α文庫)

山口組四代目 荒らぶる獅子 (講談社+α文庫)

山口組四代目 荒らぶる獅子 (講談社+α文庫)

山口組4代目組長の一代記です。とにかく「きちんと取材している」というのが読み終わっての印象。取材するのが記者の仕事とはいえ、実家や生い立ちまで取材しているのは珍しいのでは? とりわけ対象が対象ですし。また「取材をして、その記録を活字化した」というだけではなく、ところどころに筆者が顔出して論評を加えており「読み物」としても結構水準が高いように思われます。

CodeIQがSunsetするそうです。

複数の常連出題者(?)が出題終了をツイートしたり、スカウト機能の終了が告知されたりしたあたりから、きな臭い雰囲気は漂っていましたが、2018-03-08にCodeIQのSunsetが告知されたようです。残念(´・ω・`) 正確な日付は失念したのですが、わたしがCodeIQに登録したのはプログラミングを本格的にはじめた頃でした。大学の寄付講座でRubyを知ったことがきっかけに「プログラミングというのはかなり面白い行為なのでは?」と思いつつ「具体的に何をすればよいのかわからない」「Webサービススマホアプリを作るのはハードルが高い」という時代に、CodeIQを通じてプログラミングクイズ/競技プログラミングという世界があることを知れたのは幸運だったと思います。なによりありがたかったのは「題材が用意されていること」。始めたてのころというのは勉強の題材を探すだけでも一苦労。あまりにも難しい課題を設定してしまったがために挫折する可能性もある中、CodeIQの「与えられた問題に回答する」というのは非常に手軽でした。また問題の難易度もさまざま用意されており「簡単な問題を解くうちに徐々に難しい問題もできるようになっていく」という感覚を持てたのは、プログラミング学習のモチベーション維持にずいぶん寄与してくれたと感じています。

またCodeIQはコミュニティ志向――というと少し大げさですが、人と人のつながりのようなものを重視していたと思います。この手のサービスには珍しく、出題者による手動採点という方式を長らく採用していましたし、そもそもその出題者自体も最初期はCodeIQユーザからスカウトするようなこともあったようです。CodeIQMagazineにはCodeIQで出題された問題に関する記事も多数ありましたが、その記事内でユーザの名前や解答が掲載されることも珍しくなかったですし、極めつけは「感謝祭」。つまりはCodeIQユーザのmeetupのような集まりを四半期ごとぐらいに行っていたのですが、この「あるサービスや技術に関心を持った人がリアルやネット上でゆるく集まる」という感じが肌感覚として学べたのは本当に良かったと思います。こうした人の集まり方は現代的なコミュニティに共通する――とまではいわないものの、いわゆる「勉強会」「meetup」「技術コミュニティ」はそのような心性に少なからず支えられており、その文脈のもとで現代日本のWebサービスや技術が生み出されているというのが分かっていることが、ロートルSIerのなかで強みになっているのは間違いないと思っています。ちょっと大げさかしらん(´・ω・`)

ただこうしたコミュニティ志向と転職サイトの食い合わせが悪かった可能性は十分にあります。日本の転職では

  1. 何らかの理由で転職を決断する。
  2. 転職サイトやエージェント、ハローワークで就職先を探す。
  3. 転職する。
  4. 1.に戻る。

というフローをたどることが大半だと思います。つまり日本における転職活動とは瞬間的な行為であり、ある一定期間はその場に滞在することが求められるコミュニティとは相性が悪い。欧米では仕事=次の仕事を見つけるまでの足掛かりというキャリア観が一般的らしいので、転職サイトに「滞在」するということが可能なのかもしれませんが、日本の転職事情ではコミュニティとしての転職サイトというのは少し厳しかった、ビジネスとしてペイしなかったのかなと素人としては思うわけです。

またCodeIQはそのサービスの性質上、自分の解答コードがそこに蓄積されていきます。これもある種のコミュニティ志向といえるかもしれませんが、しかし他者にも見える形で自らの成果や知識を蓄積していくのであれば、別にそれがCodeIQである必要はありません。GitHubやブログあるいはQiitaなど、プログラマが自ら知見を公開する場はWeb上にいくらでもあるわけで、クローズドなCodeIQに蓄積する意味は何かと問われると少し厳しかったのかもしれません。

ただCodeIQがわたしの人生に与えてくれたものは大きく、その点は感謝してもしきれない。ろくに就職活動もせず、卒業後はだらだらフリーターになる予定だった2流大学の大学生がプログラミングを継続的に学ぶきっかけになり、正社員のSEになったあとは勉強だけではなく情報収集やSNS活動(?)のHUBとしても非常に役に立ったわけですから、今回のSunsetはとても残念(´・ω・`)

市谷聡啓・新井剛『カイゼン・ジャーニー: たった1人からはじめて、「越境」するチームをつくるまで』(翔泳社)を読んだ

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

Twitterのタイムラインで@tbpgrさんがプッシュしまくっていたという、身もふたもない動機で買って読んだのですが――超よかった(´・ω・`) わたしが思う本書の長所としてはまずストーリー仕立てであるということ。本書ではアジャイル開発やスクラム開発の方法論を紹介することが主なのですが、この手の本はどうしても「方法論を箇条書き的に紹介する」という形式になりがち。知識として体系的に学ぶのであればそれでも良いのかもしれませんが、その方法論を具体的にどういう場面・文脈で使うべきかという観点が抜けてしまい、実践に移しずらいきらいがあります。対して本書は小説の流れの中でさまざまなメソッドが解説されるため、具体性を伴っていて、かつまねしやすい=気軽に実践しやすい。またストーリ仕立てだと読者は自分のこととして読むため、知識の定着率が高くなるのも小説形式の効果のひとつといえそうです。

次にアジャイルスクラムで使われる「仕事の進め方」に関して理解できたのは個人的にはよかったと思います。アジャイル開発・スクラム開発というと、たとえば自動化やバグ管理システムなど、ソフトウェア開発の手法やツールに注目が集まることが多いのですが、実際にはさまざまな「仕事の進め方」の集合体であり、手法やツールはその「仕事の進め方」を実現するためのものでしかありません。本書は手法やツールではなく、「仕事の進め方」やプラクティスの解説に注力することで、読者にアジャイルスクラムの核を理解させようとしており、実際にその試みは成功しているように思います。またその「解説」は簡潔かつ分かりやすく、少なくとも理解できないということはないはず。

最後に「自分から少しづつ始めていく」「始めるのに遅すぎるということはない」という本書の考え方が個人的には気に入っています。日本人は良くも悪くも生真面目で、何らかの方法論を使うとなると「プロジェクトの構成員全員がその方法論を100%理解して、プロジェクトの最初から最後まで、その方法論を完璧に適用せねばならない」という思考に陥りがち。しかしそんな完璧主義では何も始まらない、始められないのは言うまでもありません。「自分一人でもいいから少しづつ始めていく」「過去に戻ってやり直したい気持ちを抑えて、気が付いたその日その時点から始めていく」。そういうマインドセットに切り替えることができたのは、本書を読んだ最大の学びだと個人的には思っています。

ちょっとほめすぎかしらん(´・ω・`) ほめてばかりだとあやしい(?)ので、しいて指摘事項をあげておくと――本書はチームビルディングに関してかなりの分量を割いており、最終的にはチーム間の連携にまで話を進めていきます。仕事というのはチームで進めていくものであり、とりわけソフトウェア開発はその傾向が強いので、チームビルディングに焦点を当てるのは間違っていないのですが、しかし本書では「メンバーがひざを突き合わせる距離にいるチーム」しか扱われないことが少し気になりました。Web業界ではリモートワークがデファクトスタンダードになっているようですし、お堅いSIerでもオフショア・ニアショアが当たり前のように利用される時代になっています。要はチームメンバがひざを突き合わせないどころか、物理的に離れた距離にいながら開発を進めることも多くなってきており、「そういう現場特有の問題に関する話があってもよかったのでは」と少し思ったのは事実です。

ただ「それは本書のスコープではない」「そこまで話を広げると、全体としてまとまりが悪くなる」といわれると、まったくもってその通りですし、わたしの指摘など些細なものに過ぎず、本書の価値を下げるほどのことではないということは強調しておきたいと思います。

あとは小説という観点から読むと、本書の持つ性質上仕方ないとはいえ、登場人物のあくが強すぎるというか、変人奇人が多すぎる――と思っていたのですが……

やばい((((´・ω・`))))

最近読んだ本: 『ガリバルディ』『黒い看護婦』『中核VS革マル』『ドキュメント 新右翼』

最近読んだ本のうち、フィクションでないものについて読書メモをさらしていきたいと思います(´・ω・`)

藤澤房俊『ガリバルディ: イタリア建国の英雄』(中公新書)

タイトルの通り、ガリバルディの評伝です。ガリバルディといえばイタリア建国の父として神格化され、虚実ないまぜの伝説が流布していますが、本書はその伝説を排しつつ、最新の研究成果を生かした記述に努めています。ただ伝説なしでも、かなりの豪傑だったことは間違いなさそう。またガリバルディの存在は明治維新期の日本や植民地統治時代の朝鮮にも伝わり、大きな影響を与えたということからも、英雄というにふさわしい人物だと思いました。

森功『黒い看護婦: 福岡四人組保険金連続殺人』(新潮文庫)

黒い看護婦―福岡四人組保険金連続殺人 (新潮文庫)

黒い看護婦―福岡四人組保険金連続殺人 (新潮文庫)

中年の看護婦が詐欺や恐喝、はては性的関係までを駆使して、同じ看護婦3人を洗脳し、自らの金銭的欲求を満たすべく、保険金殺人を繰り返していく。本書はそんな3流のスリラーのような事件のルポタージュです。はっきりいうと主犯の女が異常そのもので、「ふつう」の生活を送っていた3人を見え見えの作り話(しかし彼女らは気づかない)で、自らの手中に収めていく。これが現実なのですから、背筋が凍るとしか言いようがない(´・ω・`)

立花隆『中核VS革マル(上・下)』(講談社文庫)

中核VS革マル(上) (講談社文庫)

中核VS革マル(上) (講談社文庫)

中核VS革マル(下) (講談社文庫)

中核VS革マル(下) (講談社文庫)

冷戦のまっただなかで、共産主義革命がまだまだ冗談ではない時代に生きる人にとっても、同じ武力による共産主義革命を志向する革マル派中核派が血で血を洗う抗争を戦っていたのは奇妙そのものだったらしく、本書は各派が発行した機関誌やプレスリリースを丹念に読むことで、その謎を解き明かそうとしています。第三者からすると単なる近親憎悪のように思えますが、文脈を追っていくと組織体質や思想に明確な違いがあり、内ゲバもやむなしかという気分にはなります。殺人を犯すほどのものかという気はしますが(´・ω・`)

山平重樹『ドキュメント 新右翼: 何と闘ってきたのか』(祥伝社新書)

新右翼あるいは民族派と称される潮流の草創期を取材したドキュメンタリーになります。もともとは学生運動へのバックラッシュ生長の家を中心とする宗教保守的運動が合流したあたりに始まり、三島事件から運動的思想的影響を受けつつ、現在に至るまでどのような活動を続けてきたのか? 面白いのはその流れを語るに際して、活動家個々人にスポットライトを当てていること。歴史を鳥瞰するのでも、組織に着目するのでもなく、活動家がそのとき何を考え、どのように行動したのかを明確にすることで、新右翼という存在がどのようなものであるかを鮮明に浮かび上がらせているように感じました。