人生裏ローテ

通年裏ローテを守って地味に重宝がられる人生を送りたいITエンジニアのブログ

サーバサイド開発者がシュッとTypeScriptでWebフロントエンドに入門する(1/4)

最近チームで検証用ツールのフロントエンド開発をする必要があったため、自分の理解を確かめるためにも、バックエンド開発者向けのフロントエンド導入記事を作ることにした。

TypeScript 関係のドキュメントについては探した限りだと

  • プログラミング自体の経験が浅い人向け
  • フロントエンド開発者がフロントエンド開発者向けに書いたドキュメント

が多く、バックエンド開発者が良い感じにフロントエンド開発に親しむことのできるドキュメントがあまり見つからなかったので、ないものは作る精神で書くことを決めた。 なお、筆者はバックエンド開発者なのでフロントエンド開発者からのツッコミは歓迎したい。

大まかな流れとしてはまず Deno で TypeScript 自体に慣れてもらった後に Node.js 環境に移行し、 Jest を利用したテストを書けるようにする。

その後に React を学び、最終的には Next.js でシュッとしたサイトをデプロイすることを目指す。

対象読者

  • バックエンド開発には慣れているが、Webフロントエンド何もわからん人
    • 何もわからんけど理解はしたい
    • 基本的な CLI 操作については特に説明を要しない技術レベルを想定している
  • JavaScript は触ったことくらいはある
    • var で変数宣言してたなぁ、くらいで OK
    • 他のプログラミング言語には何か一つは習熟していることを想定している

今回のゴール

  • TypeScript を少し書けるようにする
  • async / await がなんとなく使える

使うもの

続きを読む

【初学者向け】Windows10 で Python の環境構築をする

はじめに

色々あって無職からSESで定職を得た友人がいるのだが、彼の勉強に付き合う過程で初学者向けの資料を揃える必要が出てきたため、ブログに書き出す。

初学者向けの資料ということでディテールを省き、時には正確性を損なう表現があるが、「あまりに違うのではないか」という点があればご指摘いただければ幸いである。*1

対象読者としては「経験○年と偽られて現場に投入されたが何もわからない人」としている。コンピュータサイエンスの学位を持っているような人間からすると説明を必要としないような内容まで記載することを心がけているが、不足点などあればこちらも指摘頂きたい。

構成

開発環境は以下のように構築する。

  • OS: Windows10 (Homeでも可)
  • 基本的には WSL2 / Ubuntu で完結させる
  • pyenv は利用しない
    • 理由としては 渋川さんの記事 と同様
    • ある程度「分かっている人」が使わないと却って混乱のもとになる
  • ターミナルには Windows Terminal を利用する
  • エディタには Visual Studio Code (以下、VSCodeと表記) を利用する
  • 便利さよりも構成のシンプルさを優先する

*1:混乱するよりは細部が不正確であっても大まかなイメージを持っておくべきだと思っている。このスタンスに異論を持たれるのは承知しているが、小学一年生の算数で負の数や小数を存在しないものとして教えるようなものである。踏み込んだ知識は質問された際に返せば良い

続きを読む

触りながら Elasticsearch を学ぶ 〜データ投入からboolクエリまで〜

Elasticsearch が苦手なので、触りながら勉強してみた。 ( リポジトリ )

触りながら学ぶ Elasticsearch

チュートリアルの対象

投入するデータ

IMDb Datasets を利用する。これにはいくつか理由がある。

  1. 全文検索エンジンの多くは英語のために最適化されており、日本語データセットを利用する場合は設定が必要である
  2. IMDb は無料かつデータ量が多く、かつ映画というトピックは「検索」という題材に適切であること
  3. IMDb Datasets は TSV がダンプされるため、システム構成を単純にできること(RDBを必要としない)

チュートリアルでは、映画人と2000年以降の映画データを検索対象とする。

続きを読む

【読書メモ】柳澤健『1985年のクラッシュ・ギャルズ』

プロレスに多少なりとも興味を持って、自分なりに調べたことは様々にあるが、わからないことも多い。そのなかでも大きな謎が「なぜ、80年代の少女たちは女子プロレスラーに夢中になったのか?」というものだった。本書はライオネス飛鳥長与千種のユニットであるクラッシュ・ギャルズの栄枯盛衰を描くことでその謎を解き明かし、プロレスへの理解を深めてくれる一冊である。

日本女子プロレス、全女の出身者の話に共通するものとして「全女はとにかくひどい」というものがある。レスラーめしの連載を読んでドン引きした。それも当然で、全女の支配者である松永兄弟が求めていたのは「女同士のケンカ」であった。当時の日本は男尊女卑である。男子プロレスのように、リング上では敵対してもその他では仲良くやるような芸当は女にはできないと思われていたというのだ。その風潮を変えたのが80年代の名レスラーであるクラッシュ・ギャルズであり、極悪同盟なのだろうが、80年代という時代は男女雇用機会均等法が制定されるなど、全体として女性が自らの力を解放していく時代だったという背景とともに語られるから納得する。

つまり、実力で性差を黙らせるという今日では当たり前すぎて意識すらされないような現象が起こり始めたのがこの時代であり、一世を風靡したクラッシュ・ギャルズもまた、時代の象徴であったということである。

そのクラッシュ・ギャルズは、なぜ一世を風靡することができたのだろうか。その問いに、本書ではもう一人の主人公を用意している。ライオネス飛鳥の親衛隊長からプロレス雑誌の編集者になった伊藤雅奈子である。伊藤の視点からは、当時熱狂した少女の心情が切々と語られる。

プロレスの面白さとは何だろうか。長与千種は試合を通して観客に自分の感情と痛みを伝えることを目標としていた。そして、思春期の少女は自分の性を憎みつつも、男を愛すると自らの性を実感してしまう。ゆえに女であることから自由な女を愛する。この感覚を長与千種は体感で理解していたから、うまくスイングすることができた。

試合という「点」が、世相と思春期のジレンマという「線」で繋がる。このダイナミズムが、まさにプロレスの魅力である。

ゆえに、長与千種の功績は男子プロレスの技を輸入したことだけではない。最大の功績は、女子プロレスを松永兄弟が目指す「女同士のケンカ」からプロレスへと脱皮させたことだ。その結論が、クラッシュ・ギャルズが栄華を極めるまでの過程から読み取れる。

そのクラッシュも、全女の25歳定年制度には勝てずに引退してしまう。ビューティ・ペアからずっと、全女はこのシステムがあってもスターを生み出すことができたという驕りもあったのかもしれないし、単純に松永兄弟が女性を下に見ていただけかもしれない。

けれど引退間際、長与は女子プロレスの改革を望み、神取忍を全女のリングに上げることで女子プロレスを変えようとした。しかし、ここで長与は少女たちからの支持を受けられずに敗北する。少し長いが引用しよう。

長与千種という夢、クラッシュ・ギャルズという夢を見続けてきた少女たちは、自分が見た女子プロレスという夢が不完全であることを認めることができず、夢にメスを入れて改革しようとする長与千種を批判したのである。 人は人を愛さない。人は自分の中にある夢だけを愛する。 ブラウン管の向こう側にいる少女たちが愛したのは、現実のプロレスではなかった。 プロレスラー長与千種は、少女たちの夢の中に生きる長与千種に敗北した。すなわち長与千種は、自身が作り出した幻想に敗北したのだ。

この「人は人を愛さない。人は自分の中にある夢だけを愛する」という構図は、今でも様々なコンテンツで見られる。哀しさすら感じる一文だ。

その後、長与は全女へのアンチテーゼとして、選手の身体を大切にする団体であるGAEAを旗揚げする。女子プロレスの女横綱里村明衣子はこの団体の出身である。しかし、長与の理想であったこの団体は過保護とエリート教育のゆえに崩壊する。一度振り切れた針の反対側には、別の破綻しかないのだろうか。少し悲しくなる。

『有田と週刊プロレスと』ファーストシーズンの冒頭のナレーションでは「プロレスとは人生の教科書」と読み上げられる。全女、そしてクラッシュの栄枯盛衰はまさに人生の教科書である。せっかくなので同じ著者の『1984年のUWF』も読もうかと思ったら佐山聡を英雄視するあまり公正さを欠いているらしい。これもまた人生、と受け止めるべきだろうか。

【読書メモ】山里亮太『天才はあきらめた』

天才はあきらめた (朝日文庫)

天才はあきらめた (朝日文庫)

若林正恭の『ナナメの夕暮れ』の書評をやったら会社の人に勧められたので読んだ。芸人はあまり詳しくないので、南海キャンディーズを一躍時の人にした医者ネタもよく覚えていないレベルである。

それが読めば読むほど、山里ワールドに引き込まれていく。解説で若林が述べているが、寝技に持ち込むためにマットに寝るタイプの人生だ。冒頭で山里は「天才はあきらめた」という。その実、天才はあきらめたから、天才と見られるために努力を惜しまないのだからじゅうぶんに天才だろう。

一番いやらしいのが、一連の努力について、山里自身が「こう言えば天才と思われるだろう」とわかった上でやっていることだ。確かに、山里は虚栄心の塊なのかもしれない。だが、人生の大部分を打算に突っ込めるから戦略的に駄目な自分を出すことができる。そしてそれを見た人は思うだろう。「こんな苦悩を抱えて、曝け出せるなんてすごい」「過去にきちんと向き合っている」と。

実際すごいし向き合っているのだろうけど、それらは全て山里を突き動かすためのガソリンになる。天才と言われればそれを錯覚資産としてめいっぱい貯金して、ダメなときに錯覚資産を切り崩す。そんな難しいことをこともなげに実行する。錯覚資産を心の支えにできるだけの自信がただ羨ましい。

錯覚資産だけではない。山里は自分に燃料をくべる天才だ。とにかくモチベーションに頼らないことを人生訓にしているように感じる。たとえば、「うわ、逃げさせ屋が来た。じゃあこれを無視したら何者かになれるんだ!」なんてセリフ、なかなか思いつかない。まず、「何者かになりたい」ということを衒いなく言えるのがすごい。そこで卑下して諦めに浸るような人間では芸能界で生きてはいけないということなのだろう。

読み終わった後、Amazon Primeで2004年のM-1グランプリを見た。南海キャンディーズのネタ自体よりも、ラサール石井が「火を怖がるサイに『メス』と言うのが面白い」と評した後の山里の嬉しそうな顔が一番印象に残っている。M-1で勝ち抜くためのネタとして練り上げた「医者」の解題として、山里自身のピックアップしたところがまさにそこだったのだ。

若林が圧倒的な差を感じる才能はツッコミのキレだけではない。生き方にかかるもっと本質的な部分なのだ。そう思わせてくれる一冊だった。

ひとりAdvent Calendarをやった感想と知見

背景

現職は 前職と違って インプットに積極的な人が多いので読書会などもあり、その一環(?)として社内Wikiで読書Advent Calendarが開催された。

全社公開が前提で各人それなりに落ち着いたラインナップだったので、私もブログ用に書いた『いつも「時間がない」あなたに: 欠乏の行動経済学』の書評をリファインして載せたところ、けっこう良い反応を頂けたので非常に有意義だった。というか全記事で最多の「いいね」を頂いた。

社内でも読書が好きな人間が書いているので面白いのだけど、全社公開ということもあり攻めたラインナップが少ない。『完全教祖マニュアル』とか『タコの心身問題』を挙げる攻めた人もいたが基本はビジネス書が多かったので、分報(こちらの記事に詳しい) で愚痴ったら「ひとり裏読書Advent Calendarやったら?」という話になったので社内Wikiの個人スペースでやった。後悔はしていない。

感想と知見

書評は下に全部載せるがだいたい1回あたり1500~2000字、12/5(水)から12/25(火)まで、有給休暇を取得した21日以外は平日毎日更新していた。13冊の書評を書いたのでだいたい2万字と見積もっていたが、計測したら、25914字だった。文庫本1冊が12万字程度だから、1/5冊くらいは書けたことになる。

率直な感想としては、非常につらかった。もう二度とやりたくない。1回2時間くらいかかるし、平日毎日2時間を捻出するのが非常に厳しい。おかげで筋トレがかなり疎かになった。一応、やれるという自信はあった。薄い本のためにそれくらい可処分時間を投下する経験は積んでいるし、中学~高校と、図書委員でブックレビューはよく書いていたので腕に覚えもある。それでもつらいものはつらい。割とバカだと思う。

しかし、良い部分もあった、まず、読んだ本をもとに思考をしっかりまとめられるという点。これが一番大きかった。たとえば『サカナとヤクザ』の書評では「もしかしてヤクザが衰退しきった後に海外マフィアが入ることが最悪なんじゃね?」という考えが書評をまとめる過程で出てきたし、『ナナメの夕暮れ』の書評では「やっぱり若林、いいなぁ」と再確認できた。なので、書評自体は続けていきたい。読書メーターも面倒になってやめていたが、ブログ用に書いたものを要約すれば300字はすぐだな、と思う。(読書メーターの300字制限は一言には長すぎ、ちゃんと書くには少なすぎるので面倒になってしまう)

追加で本を勧めてもらうこともできた。『ナナメの夕暮れ』の書評に対して南海キャンディーズ山里の『天才はあきらめた』とか。正月休みで読みたい。

人間関係の面でいえば、自分を知ってもらうことができたのが良かった。「何を読むか」は思想の選択である。そこで敢えて小説、実用書、技術書を外して、思想性全振りにしてみた。そんなことをやって大丈夫なのかといえば、共産趣味がオープンな趣味になる会社なので全く問題なかった。むしろ共産趣味者の方とはお酒をともにする機会ができたので、社内人脈の広がりに貢献した。

これもインプットに積極的な人が多いから成り立つ芸当ではあるが、そういった人たちのなかでこういう頭のおかしい試みをやるとけっこう反応が貰えるということは学びであった。自己開示は大事。

ふりかえり

わりと「文章が面白い」と褒めてもらうことが多かった。社交辞令の「いいね」であっても、社内最多の得票なのだから割と額面通りに受け取っても良いんじゃないかと思う。

その一方で、過去の自分と比較して特に文章が上手くなったという気はしていない。ブックレビューなどで文章はよく書いていたが、面白いと言われることは少なかった。文集に載った経験もあまりない。

じゃあ、昔とどこが変わったのだろうか? と思うと、自己顕示欲と承認欲求が薄まったことが大きそうだ。昔の自分はとにかく衒学的だった。今もそういう傾向はあるけど、自制できている。そこが最大の違いだと思う。

言い換えれば、自制心がついた。本一冊をまとめようと思えば、短い文章ではどうしても零れ落ちるものが出てくる。それを切り捨てて、一本の流れとして整えられる程度には客観視ができるようになった…と信じたい。たとえば、『聖書男』の書評ではスピノザの『神学・政治論』をひきたくなったが諦めてスパモンの話で〆た。完全に蛇足だからだ。逆に『俺たち文化系プロレスDDT』では蛇足が出まくったので反省。社内のプロレス好きからは好評で『ぶらり路上プロレス』の話で盛り上がったけど。

そういう下地がある人間だから、往々にしてウケるものとやりたいことが乖離する。『いつも「時間がない」あなたに』はやりたいこととやるべきことが一致したが、他はわりと乖離していた。私は基本的に与太話をしていたい。けど、そういう人は多くないから『サカナとヤクザ』とか反応が悪い。対して一番ウケが良かったのは『ナナメの夕暮れ』で、身近な心の陰の話はやっぱり評判がいい。

『ナナメの夕暮れ』が一番身近で共感を誘える話なのはわかるし、そういうものに需要があるのは理屈でとてもわかる。自己開示としてもなかなか良い。けれど、「役に立つ」ということに強烈な拒否感がある。「役に立たない」ことで承認をされたい。存在に対する承認が得られず、役割に対してしか承認を得られなかった子供時代の記憶はだいぶ払拭できたが、まだまだその記憶に反抗していたい。

来年もこの旅を続けることになるのだろう。今はちょうどカーネマン『ファスト&スロー』を読んでいるが、『聖書男』とあわせると宗教的な教えと行動経済学の教えには共通する部分があることがわかってきた。「役に立つ」ことへの拒否感を薄めるための方法が、靄の向こうにぼやけた輪郭で存在している。けれど、そのためには若林の言う価値下げをやめないといけない。山里本、年末年始で読もう。

続きを読む

SolrでNEologd-KuromojiとデフォルトKuromojiを共存させる

TL;DR

ハマりどころが多いので、課題はあるけどできるよ

背景

mecab-ipadic-NEologd をご存知でしょうか。

github.com

一言で言うとWeb上の言語資源を利用して拡充したMecab向けの辞書ですが、これを利用することで一般的な形態素解析辞書では難しかった固有名詞を正しく分かち書きできるため、文書検索においても有用です。

詳しい解説は ZOZOテックブログ に書いてあるので改めて書き足すことがないのですが、Apache SolrにNEologd-Kuromojiを適用すると以下のような問題が発生することが知られています。

neologdを組み込むことで辞書の語彙が大幅に増えましたが、増えすぎることによる問題も発生してしまいました。 複数語からなるブランド名を部分一致検索できなくなってしまいました。 例えばJIMMY CHOOというブランド名が1つの単語としてtokenizeされるために、JIMMYという検索クエリでヒットしなくなってしまいました。

この問題についてはngramでのトークナイズが解決策として提案されていますが、eDisMaxでqsを高めにとっている時など、あまりngramでのヒットを重視したくない場合もあるため、本稿ではNEologdを利用したKuromojiとデフォルトのKuromojiをApache Solrで併用する手法について解説します。

Solrのバージョンは4.10.4としていますが、他のバージョンでも動くはずです。

必要なもの

続きを読む