単行本(ソフトカバー)この商品を含むブログを見る*1:一応、「初歩的なコードを組み合わせて自分に必要なものを作った」という意味ではテーマの範疇だと思っていますが。*2:印刷所にデータを渡すこと。2019に参加するため福岡に行ってきました。rubykaigi.org大事なことなので初めに書きますと、今回の交通・宿泊費および参加費は会社に出してもらいました。そのうち営業日は業務扱いで、有給も消化せずに参加できました。そんなヴェルク(株)はRubyを使って受託開発および自社サービス「board(ボード)」の開発・運営を行っています。現在はQAエンジニアを募集中ですので、ご興味おありの方はぜひどうぞ。・・と、そんなことを言ってる私は本来開発もRubyもまったく関係ないカスタマーサポート兼社内外ドキュメントの編集者ですが、6年ほど前から趣味でプログラミングをやっていまして(Perlで入門)、当時はフリーランスの編集者でしたが、その頃からYAPCには毎年参加していたので、昨年末にヴェルクに入ったことをきっかけに「次のRubyKaigiには行っておきたい、Rubyコミュニティ・デビューしたい」と思いまして、エイヤと参加した次第でした。毎日取っていたメモを元に記録をまとめます。0往復の飛行機はスターフライヤーを使いました。以前に山口へ取材に行ったときにも一度使いましたが、その時の印象がとても良かったので。機会があれば使いたいと思います。Mongerの@itokenさんから声をかけてもらって、知る人ぞ知る天神の「屋台屋ぴょんきち」で初日からディープな屋台飯を頂くことに。豚骨ラーメン@屋台を堪能しました。ドリンクは終始サワーと芋焼酎。食べ物はこの他に焼き鳥・餃子・干物など。1前夜は想定外の屋台飯にテンションが上がって飲み過ぎてしまい、初日の朝は久しぶりの二日酔い*1。思ったら、Googleマップで示されているバス停にいつまでもバスが来ない。*3え、どうしよう・・と焦るもそのまま待っているわけにもいかないので、少し歩き出してからちょうど通りかかったタクシーにスイッチ。大渋滞に阻まれながら、たしか10:00ジャストぐらいに会場着。料金は1,200円ぐらい?(おぼろげ)いきなり遅刻かい・・とヘコむもとにかく前進、3階のメインホールへ行くまでにノベルティをいろいろ取れるようになっていたので、パーカー*4、Tシャツ*5その他主要なものをゲットしてからMatzさんが待つメインホールへ。・・こりゃすごい(笑)。このときは時間も早かったので人はまばら。この後大変な行列になるぼくはまだ二日酔いが抜けきっていなかったので、胃に優しいものを・・と思ってふぐ天うどんを頂きました。この時、屋台の中で食べることもできましたが、近くに設置されたテントで食べることもできたので、そこまでテイクアウトで運んでズルズル。すると、「ここ、いいですか(英語)」という感じで海外からの参加者さんがやってきたので「Yes!」と元気に返事をして少しおしゃべり。なんでもロンドンのBBCから来たとのこと。ぼくは英語ほとんどできないですが、たまたまその脇に座っていた方が話を進めてくれて、なるほどBBCでもRuby使ってるんですね、なんて話をしばらく。(ねこのや)」さんへ。猫廼舎さんの出張店を企画・実現してくれたのはSpeeeさん。なんというセンスの良さ!ありがとうございました。speee.jpおいしく頂きました。2019この日の発表チェックはここまで。全部見ていると疲れるし・・ブースも見て回りたかったので。スタンプラリーでスポンサーブース巡りそんなスポンサーブースはとにかく盛りだくさん。見るべきところばっかりでそれも楽しかったですね。ぼくがこれまでに参加してきたカンファレンスだと、スポンサーさんからのノベルティって入場時にトートバッグに詰めてどさっと渡される、というスタイルが普通でしたが、今回はスタンプラリー形式というか、自分が話を聞きに行った(スタンプをもらいに行った)ブースでノベルティを受け取る、という方式。これだといろんな企業とのコミュニケーションが自然に発生するので、ナイスアイデアだなあと思いました。ぼくはひとまず、いつもその取り組みを敬意を持って眺めているメドレーさんで絆創膏をもらったり、サムライズムさんのところでヨーヨーをもらったりしました。2019年4月18日igaigaさんにサインを頂く今回はRuby関連の書籍を2冊持ってきました。見るこの日はそのうち前者を宿から持参して、タイミングが合えば著者の五十嵐さん(@igaiga)にサインをもらいたいなと思っていましたが、ちょうどこのブース巡りの際に出張版の技術書典みたいなコーナーがあって、そこをぶらぶらしていたら五十嵐さんにお会いしたのでそのままお願いしました。五十嵐さん、快く応じて頂きありがとうございました。ちなみに、ぼくはとくにサイン集めの趣味があるわけではなくて、自分が愛着を感じた本の著者さんに直接会える可能性があるときに限り、感想や意見を伝えるきっかけとしてその本を持っていって、もしたまたまタイミングが合ったら話しかけて書いてもらう、という賭けみたいなスタイルで頂いています。これ以前だと、昨年の大江戸Ruby会議07のときにMatzさんに以下の本にサインを頂きました。見るこういうのって少し勇気がいりますし、空振り(=会えない)もあるので積極的にはしないのですが、RubyKaigiというお祭り感もあって踏み出しやすかったですね。ハックスペースそのブース巡りに前後して、5階に用意されていた畳のハックスペースにも行きました。blog.notainc.com充電可能なテーブル付き、そして玉露を無料で頂けるという満たされすぎなシステム。朝からずっとバタバタしていたので、ここでようやくリラックスできました。ちなみに、ここで当日に見たトークややったことをプライベートなScrapboxにメモしたことで、翌日と翌々日も同じぐらいの時間帯にメモを取る習慣ができて、そのおかげで今この記事を非常に書きやすくなっています。イベントレポートはすぐ書くに越したことはないですが、それができなくてもとりあえずメモだけでもきちんと取っていれば、4ヶ月後経ってもなんとか思い出しながら書けることを実感中です・・。有賀さん(@chezou)に挨拶ハックスペースからそろそろ移動しようかな、と思った頃に、ふと後ろを見ると@chezouさんこと有賀さんがいらっしゃったので、声をかけて少しだけおしゃべりしました。いうのも、ぼくは今までYAPCやVimConfへの参加経験はあったものの、RubyKaigiは初めてだったので、その準備というかRuby対策として、以前に有賀さんがホストしていた「rubyist.club」をすべて聴いていたのですよね(真面目〜)。それが面白かったので、直接「面白かったです」と伝えました。ちなみに、有賀さんは以前にこの記事を読んでいたので顔もすぐわかって、声をかけやすかったです。どこかしらで顔を出しておくの、重要だなと思ったり。2初日の教訓を生かして、福岡の2夜目は早めに休み、連日の二日酔いは回避しました。・・が、この日の朝もオープニングには間に合わず。時間より早く発車することはないよな〜・・と思っていましたがそのまさかで、少なくとも3分ほど早く出てしまったようでした。思いましたが次は17分後ぐらいで、いや普通に遅刻じゃんということで方針変更。連日タクシーはつらい・・と思ってGoogleマップで検索を重ねて、博多駅近くから出るBRTという2両編成の快速的なバスをなんとかゲット。結局到着したのは前日より遅い10時10分ぐらいでした。会場ではこの日から無料の朝食があったはずなんだけど、パッと見ではちょっとわからず。遅れて着いたから終わってしまったか・・とそのまま上階に上がりましたが、後から聞いたところでは朝食用のレストランが別にあったのですね。RubyKaigiではそういった細かなおトク情報が満ち満ちているので、宝探し的にそれらをゲットしておくスキルが求められるな・・と実感しました。オープニング・キーノートメインホールに到着すると、2日目のオープニングである@nagachikaさんのキーノートが始まったところで、前の方の空いている席に収まって拝聴。2019このお話、これといった専門的な知識がなくても追っていける内容で、すごく面白かったです。versionのメンテナとしてどんなことに気をつけているのか、どんな失敗をしてきたのか、みたいな話をユーモラスかつ誠実に語っていて、最後まで夢中になって聞きました。Gateでお世話になったばかりの@swamp09さんがいらっしゃって、しばし歓談。いやー、朝遅れちゃって・・バスがそのあの・・なんて言っていたら、会場と各地を結ぶシャトルバスのことを教えてもらいました*6。RubyKaigiを256倍楽しむ方法というものがあるとしたら、事前にRubyKaigi経験者であるところのRubyistにいろいろ教えてもらえ、ということになるでしょうか。swampさんからは「RubyKaigi直前のRejectKaigiに行くとRubyKaigiの見所も教えてもらえるから、出れるならそれに出ておくだけでも違う」とも教えてもらいましたので、合わせてシェアしておきます。前日の屋台ではけっこう行列が激しくて、もう並ぶのは嫌だなと思っていたので、2本目の発表はパスして早めに屋台に行って「豚骨Rubyラーメン」を頂きました。この「Ruby」にあたる部分はなんとミートソース。ミートソースmeetsトンコツ。味わいがたい味わいを得ました。その後、スポンサーブースに戻って未読ブースをひとしきり巡りました。思いましたが、ぼくは今回エンジニアとしてではなくカスタマーサポート兼編集者という立場(?)での参加だったので、各ブースが想定するお客さんとはちょっとズレていて、それがわずかながらも残念ではありましたね。いっても、もちろんそれはブースの人たちの問題ということではなく、参加者であるぼくに起因する問題なのですが。エンジニアではないとしても、それに近いぐらいの技術的な知識や素養があれば、ブースの人たちが言うことに対してもっと「なるほど」とか「そりゃ面白い試みだ」みたいなことがわかったのかな、と。2019一旦発表巡りは終了。前日同様にハックスペースへ移動して、その日の記録をScrapboxに取ったり、体を休めたりしました。気づいて慌ててダッシュ。目の前のそれに辿り着くまでの数十秒のうちにあっという間に数人並ばれて、結局普通に6〜7人待つことに。頭をカラッポにして待っていたら、ちょうど自分の前でそれまでに淹れていたコーヒーが終わったようで、店主の@ogijunさんから「濃さはどうしますか?」と意外な質問が。聞けば、新たにコーヒーを淹れるときに先頭だった人に濃さの希望を聞いて、その後の7〜8人は(つまりその分が終わるまで)その味で提供されるというめちゃ重大な責任が課せられたようでした。猫廼舎さんでコーヒー頂きました。豆を挽くタイミングで好みを聞かれるという重大な責任を与えられましたが(その後の8人分ぐらいに影響するので)猫廼舎さんのいつもの標準で、とオーダーしました。2019年4月19日ちなみに、先頭で待つ特権として、しばらくogijunさんとお話しすることもできました。ぼくは以前からogijunさんの存在は知っていたのでその話とか、自分はエンジニアではないけどYAPCは何度も行っていて〜、とか。その辺りを起点にogijunさんからもYAPCとRubyKaigiの関係とか、へえ〜と思うようなことをお聞きできて、とても印象深い時間になりました。TalksLTにはプロポーザルを出していましたが、あえなく落選。一連の発表を見て納得感がありましたね。この中に混ざったらとても太刀打ちできなかったなと(笑)*7。知識的・技術的にまったくついていけない部分も含めて、どれも楽しく見ましたが、令和ネタが続いたあたりが個人的には盛り上がりました。showRubyKaigiから少し離れますが、この日の夜にはかつて新宿&池袋のジュンク堂で働いていて現在福岡のジュンク堂で文芸書を担当している友人M氏の元を訪れて、どこに行っても変わらない同氏ならではのイカレた棚を堪能しました。上の方に柴崎友香さんの名前がありますが、勝手に使ってるのではなくてご本人と連絡取った上で飾ってるらしい。いう手書きポップも著者さんに来店時に書いてもらってるらしい。みたいのが入っている・・「(私)これ今日ダメじゃないの?」「(M氏)いやあ、おかしいですね・・とりあえず出直しますか・・」とか言って退散しようとしていたら、中の方でF氏がぼくらに気づいたみたいで、「どうぞどうぞ!」とか言われて中に入ると、ちょうどその時間帯にいつもajiroで開催されている『短歌の会』みたいな集まりをNHK福岡の取材班が取材していたところらしく、にもかかわらず「あの、じゃあほら、二人も参加して!」とかいきなり無茶に誘われて、そのまま『短歌の会』に合流&お題の歌に感想を述べたりテレビ取材も受けたりすることに・・。4ヶ月経ってもとくに音沙汰ナイですが。謎の「ルビーサワー」で怒濤の1日を打ち上げました。前夜の「戦国焼鳥」は深夜に及び、終電も逃したので徒歩で天神から博多のホテルまで帰りましたが、目覚めはスッキリ。二日酔いもありません。路線バスチャレンジは2度にわたり失敗しているので、この3日目はSmartHRさんのスポンサードによるシャトルバスで会場へ。助かる〜〜!最終便だったので時間的にはギリギリでしたが、前日のように時間前に出発されるとか、前々日のようにバス停を間違えるとかのミスは回避できるのでとにかく安心。参加者さんのオレンジパーカーも良い目印になりました。2019内容的にはわかったり、わかんなかったり、という感じでしたが、全体を通して楽しみました。笹田さんの進行ぶりも良かったですね。その後は、こちらを聞きました。2019英語トークということもあって少し難しく感じるところもありましたが、イラストも多用されていて、おおむね把握できたと思います。共感するところが多い印象でした。この日も少し早めです。前日、ふと見ると屋台ではなくお弁当を持って歩いている人も多くて、「どこでゲットできるんですか?」と聞いたら「中にあるよ」と教えてもらっていたので、最終日はこれをゲットしようと思っていました。望みどおりのイイ感じのお弁当をゲット。幕間この後はしばらくまたブース巡り。最終日ということもあって、これまで見れていなかったブースを駆け足で。印象的だったのは、前年のbuildersconで少しだけお話ししたStripeのエイミーさんと会えたことですね。builderscon.ioあれ、もしかしてエイミーさんですか、と聞いたら思い出してくれて、しばし歓談。このときにもらったStripeのノベルティのノート、軽くてカッコよくて、気に入ってます。それで思い出しましたが、この会場は空間自体は広々しているものの、それなりに動線が限られているので、なにかと人に出会う、すれ違う機会が多くて、ことあるごとに「あ、どうも」みたいに対面してはそのまま少ししゃべる、みたいなことができて良かったです。上記のロシアから参加していたアンドレイさんも、発表のときにオリジナルキャラクターのステッカーがあるよ、と言っていたので、廊下ですれ違ったときに「まだステッカーありますか」と聞いたら、「下のロビーに置いてあるけど、一緒に見に行こう」と言ってそのまま数フロア同行してゲットしたり。PRESS』のための原稿を書き始めていて、そのコーナーを担当されている同誌編集長の稲尾さんにお会いできたり。「なにか問題ないですか?」と不意に執筆状況について聞かれたので、「まあ、とりあえず書いてみます、たぶん大丈夫です」とやや自信ありげに返事をしましたが、全然大丈夫じゃなかったことがわかるのはその2ヶ月ほど後のことです。これについてはまた別の記事で・・。午後のメニューそんなこんなを挟みつつ、午後の最初は柴田さんのこちらを聞きました。2019こちらもそんなに専門的な知識がなくても最後まで楽しめる内容でした。思うことしきりでした。その後、小休憩を挟んで行ったのがこちら。ーごく面白かったですね。2018でもスペシャルな発表をされていましたが、その印象をさらに塗り変えるような素晴らしい発表でした。発表本番は自分の実力の3割しか出ない、そういうもんです。僕は33割強分用意することで予定どおり10割の力で発表できました。2018年11月24日もうまさに、まさにそれだなあ、と思いました。その後はクロージングのキーノートをホールで聞いて、来年の予告。終演後は、トレジャーデータさんご提供のアフターパーティーへ。お店がちょっと見つけづらい場所にあり、かつそれなりに本会場から離れていたのですが、自分的にはけっこう頑張って早めに到着したつもりが、すでにだいぶ人がいてびっくり。毎度のことながら、こういった場では知り合いがいない方がデフォルトなので、飲み物を取ってその辺の空いてるスペースに収まってぼんやりしているうちに、いつものようにちょうどその辺りにいる方々とおしゃべり。目的もオチもなく、ただ思いつくまま喋って時間を過ごすこの感じ、ぼくは好きです。単なる世間話というのでもなく、共通の話題があるというのがいいのかも。英語率が高いので、否応なく英語をしゃべる機会にもなります。上記のアンドレイさんがいたので少し話したり、その場にいた人に彼をまた紹介したり。来たという海外テック企業のチームと喋ったり。ぼくらはこれこれこういうサービスを作っていて、ニーズはあると思うんだけど、こういう問題があるから日本では展開できないな、みたいな話とか(たしか「日本進出すればいいじゃん!」と誰かが冗談で言って、それに対して「いや無理だよ、なぜなら・・」とマジレスしたのだったか)。あとは「今日見た中で一番良かったのは何?」という、ある意味定番だけど鉄板でもあるような話題を振られて、「ujihisaさんのが良かったよ」と言ったら「俺も見たよ・・あれは良かった!」と盛り上がったり。いやあ、しかしこんな会を月イチでもやっていたら、さすがにもう少し英語うまくなるのでは・・と思うぐらい最大限に英語喋りました。Yuguiさんにサインを頂くアフターパーティーのハイライトは、今回持っていったRuby本のもう1冊、『初めてのRuby』にその著者であるYuguiさんのサインをもらったことでした。この日は最終日だったので、お願いするなら今日がラストチャンス〜・・と思って朝から本を持ち歩いていたものの、会場では全然お見かけしなかったので「ハイ空振り〜・・まあ、それもご縁だから」と諦めつつ、そのパーティーに行ったらYuguiさんもいらっしゃったので、「終わってなかったラストチャンス」と思ってタイミングを見て声をかけてサインを頂きました。ちなみに、ちょうどこのときにYuguiさんとお話ししていた@kwappaさんがこのやり取りの一部始終を見て、記念に写真を撮ってあげますよと言ってくれて思いがけず記念写真も撮ってもらいました。Yuguiさん、kwappaさん、ありがとうございました。中洲、そして川Rubyistの皆さんと「川」に行くチャンスは去年の大江戸Ruby会議07のときにもあったのですが、その日は用事があって行けなかったので今回は初「川」でした。「川」というのは、つまりそこで缶ビールなどを飲んで語らうみたいなことですが(たぶん)、上記のアフターパーティーの後、次はどうするかという流れで「じゃあ、川で」と川へ向かうみんなに付いていって、そのまま川でビールを飲みました。このとき、移動前に撤収モードのパーティー会場で声をかけてくれたのがJobin(ジョバン)さんで、日本語もすごい流暢なんだけど半分英語で何だか英語のレッスンみたいになりながら一緒に次の会場(というか川)に向かいました。この後の道中がまた一人ではまず体験するはずがないような不可思議なもので、気がつくとぼくとJobinさんの周りには日本人の同行者が1人もいなくなっていて、逆に海外勢の5〜6人が英語でひっきりなしに喋っている中に加わっていて、「もうよくわからんがとりあえずこのまま一緒に行くしかない・・」ってなりながら付いていったらその中の誰かが「面白いからあっちから行ってみようぜ」とか言ってわざわざ中洲のめちゃディープな狭い路地に入り込んで、まるでデヴィッド・リンチmeetsロスト・イン・トランスレーションみたいな幻惑的な光景のなか次から次へと行く先を阻む客引きの人たちとワイワイ言いながら練り歩いて(めっちゃ怖かった)、ようやくそれを抜け出したときには本当にホッとしましたね。いやあ・・何やってんだみんなも自分も。そんなふうに辿りついた川はさっきまでの閉塞的時空間とは打って変わって広く開けたところで、そのまましばらくJobinさんと英日まぜこぜの会話をしながら、すでにだいぶ飲んで別世界に飛んでいるような若い人たちとも適度に話したり。話を聞いて物の考え方が本当に変わった、まるで別人になったようだ、サンキュー」と伝えたら、彼は「その話を自分にしてくれたのは君が初めてだ、こちらこそありがとう、その体験についてぜひ他の人にも広めてほしい」と言ってくれました。そんなどこにでもありそうな、でも非日常でしかないような儚い時間を過ごして、ついに最終日も終わりました。終わりに初めてのRubyKaigiは海外旅行に行ったかのようなフルコース的充足、詰め込まれた多様さに翻弄された日々でした。純粋に「行ってよかった」と思える部分もあれば、じんわり落ち込みながら「まだまだ至らない自分・・」みたいに思えることもあり、さまざまな印象を清濁あわせて受け取りました。今後の展望的には、途中でも書きましたがもっと技術的な面、つまり具体的な一つひとつのトピックをより実感的に把握できるように、プログラミングの技術や知識・経験などを身につけたいなあ、という感覚が強いですね。実際、どこまでやれるかわからないですが、次回のRubyKaigiまでの宿題として地道に取り組みたいところです。今回のイベントを作ってくれたスタッフ&スポンサー&地元の皆さん、福岡でお会いした皆さん、その他関係各位、ありがとうございました。*1:たぶん1年以上ぶりぐらい。*2:この時はシャトルバスの存在を知らなかった。*3:同じ名前の逆向きの停留所で待っていたことに後から気づきました。*4:とにかくオレンジが目立つので、街にいてもすぐ「RubyKaigiの参加者だ」と気づけて良かったです。*5:後から気づきましたが、Tシャツのロゴ部分がエンボスのようになっていてそのオリジナリティが良かったです。*6:公式サイトでも紹介されていて、自分でも見たはずだったんだけどまったく認識できていなかった。*7:応募した内容は「LT応募当日からRubyKaigi当日までの30日間のRuby入門学習記録」というドキュメンタリー的なものでした。面白くできる自信はありましたが、万一採用されていたら1〜2日目はほとんどその練習とスライド仕上げでつぶれていたと思うので、結果的には外れて良かったと思います。Asakusa.rb2度めの参加です。2019年3月19日と言っているので3月半ばですね。翌月に控えたRubyKaigiの前にコミュニティの雰囲気を知っておきたかった、という感じだったかなと。Gateにも参加して、oss-gate.doorkeeper.jpこちらもかなり充実の内容でしたが、また時間のあるときに・・。いうことだったのですが、じつはこんなことがありまして↓大半の時間はぜんぜん違うことをしていました。いえば先日のasakusarbの時、なぜかうっかりDropboxに置いていた過去の自作ツール全部一気に削除してしまって、あまりにも量が多かったせいか全然復元できず参加した60分程度のうち40分ぐらいその復旧作業をしていた。2019年8月15日たぶんそれ以前に実際不要になって削除したやつも一緒に戻ってきてる気がする(笑)まあ何も戻らないよりはずっといいけど・・あれはほんとに汗かいた。2019年8月15日いやあ・・大変でしたね。久しぶりにかなり焦りましたが。一応、復旧したので良かったですが。その後、残りの20分ぐらいで普段使いの自作ツール*1の改良に取り組んで、タイムアップ数分前にギリギリ手離れ。(ブログどこ行った)それから、この日はフロム台湾の@Stanさんがいらっしゃっていて、しばらくお話ししたり、お土産の太陽餅を頂いたりして楽しかったです。www.instagram.com太陽餅、初めて食べましたが初めての食感で、でもとくに抵抗もなく食べやすく、「Tasty!」と感想をお伝えしました。会場の永和システムマネジメントさんは、ぼくが勤めるヴェルクから都営新宿線で数駅離れているだけのご近所さんで、というかぼくの帰り道に永和さんがあるので、ここでAsakusa.rbがある時は非常に行きやすいんですよね。言いつつ、最近はそもそも会社自体行かなくて自宅作業のことも多いので(とくに猛暑日)なかなか頻繁には行けないのですが。非常にリラックスしながら、自分のやりたいことをやれて、なおかつ現役のRubyistの皆さんと時空間を共有する中でいろいろ高まったりするので、またぜひ行きたい所存です。*1:これもまだどこにも紹介できてないので、いずれブログに書いておきたいところ。Vol.112』に寄稿しました(2019年8月24日発売)掲題のとおりです。gihyo.jp発売は8/24とのことなので、あと3週間ぐらいでしょうか。さんから、こういうのやりませんか、とお声がけ頂きまして。Hub」の第57回を担当しました。初歩的なコードだけで身近な問題を解決!』ということで。これしかない、というか、こういうテーマでしか書けることがないのですけど、どうなんでしょうね、書き始める前には、第一にこんな話でいいのかどうか、第二にそれでいいのだとしても、現実世界でこれ、最後まで書き切れるのか体力的に・・などなど、いろいろ不安もありましたが。結果的には、編集長&担当編集氏のスーパーご活躍と、メイン監修を務めて頂きました牧大輔さんのおかげで、「へ〜、思った以上に、思ったとおりの感じになったじゃん!」という感じになりました。関係各位、本当にありがとうございました。ぼくは今現在に至るまで、プログラマーとして仕事をしたことは一度もないんですが、この連載って基本的にプロ・プログラマーの方が記事を書いてらっしゃるので、硬軟の違いはあれど専門的な技術のことを扱うのが普通なところ、今回はやっぱり、異色といえば異色なものになったんじゃないかな・・と思います。同時に、ゆってもPerlの連載ですから、Perl成分はそれなりに濃いとも思います。これまで5年ほどにわたり書いてきたPerlのコードをばりばり載っけましたので。内容的には、そのノンプログラマーであるぼくが普段、自給自足的に作っては使っているプログラムについてあれこれ紹介している感じです。いえ、プロではないので、ねえ、まあ、難しいじゃないですか、どの辺をどの辺まで出すかっていうのは・・わかりますかね、結局、普段ぼくは自分だけが使う目的のプログラムを、自分だけが読む前提で書いているので、人様に、ましてやプログラマーである読者さんに(それもお金を払って読むような人たちに)見せるようなコードなんて書いてないんですよ(笑)。誰からもレビューとかされてないんですから。その辺のバランスというか、出すところと引っ込めるところのバランスを取りつつ、でも読み物としてはある程度、「貴重な時間を使って目を通してもそれなりには満足できる」ようなものを書ければ・・という感じで頑張りました。面白いんでしょうかね・・編集長氏は面白かったと言ってくれましたが・・ぼく自身はもう時間かけすぎてよくわかっておりません。いえ本誌、ぼくはもう趣味のプログラミングを初めた頃からなので、2013年とか、2014年ぐらいには読み始めていたはずで、その頃から触れていた連載でしたから、まさかそのリレーの一員に加われるとは〜・・という感じでしたね。編集チームもザ・プロの仕事。ぼくも一応、編集の仕事をしていたはずだったんですが、この本物のプロを目の当たりにしますと、自分がやってたのは編集ではない編集的な何か、というか。讃岐うどんじゃないうどん、というか。そんな感じだったのかなと思いましたね。べつにどっちが上という話ではなくて、別物だったなあ、と。こんなブログをまだ続けているように、ずっと普通に、誰にやれと言われるまでもなくやってきたがゆえのコトだよなあ、と思います。ぼくはプログラミングを仕事にこそしていませんが、でも結局、向いてるのかなという気はしますね。ある種の才能というのか。やめない才能、苦もなく続けられる才能、疲れない才能、みたいな。環境要因だったり、たまたまだったり、という要素も含めてのことですが。自分ではとくに努力と思ってやってるわけではないですからね・・はたから見れば頑張ってるように見えているかもしれないことも、べつに頑張ってるわけじゃなくて気がつけば普通にやっているだけで。それが向いてるということなのかなと。(まとめ)、いろんな貴重な経験をできた忘れがたい機会でありました。冒頭にも書きましたが、また発売前後でもう少し内容に踏み込んだことも書ければ〜・・とも思っていますが、それはその、ほんとに機会があればということで。あらためまして、関係各位、ありがとうございました。読者の皆さん、発売をお楽しみにお待ちください。Vol.112』に寄稿しました(2019年8月24日発売)Tweetもっと読むコメントを書く2019-03-27プログラミング入門者向けのサンプルコードで異なる名前を付けられるはずの複数の変数に同じ変数名を付けてしまう問題Perl入学式の受講生だった5年前にも同じようなことを言っていたので変わってないな自分・・と思うとともに、この問題じたいがある種普遍的なのかな、という気も。以下、掲題の件について簡単にまとめてみたいと思います。Rubyで言うと、たとえばこんなサンプルコード。bar.show結果は以下。priceがそれぞれ別の変数であるにもかかわらず同名で記載・使用されています。いったことはPerlの入門者向けサンプルコードでも起こりがちで、なにしろPerlではスカラー変数でも配列変数でもハッシュ変数でも、それぞれ別の変数なのに同じ単語を使えるので、たとえばこんなことになります。$apple{foo};と並んでる3つの「$apple」は全部別物だということですね。相互の関係はありません。これ、混乱しませんか??ぼくは初心者のときにこう思いました。上記の例で関係がある(同じ変数名でなければいけない)のは、以下の組み合わせです。ハッシュとその要素%apple$apple{foo};同じ変数名を使うなら、こうした「同じ変数名でなければいけない組み合わせ」に限るべきで、なぜわざわざ配列とハッシュを同じ変数名にするのだ・・とただ苦しむばかりでした。まあ実際には、ぼくもやがて初心者を卒業というか、初心者であることに飽き始めた頃、「なるほど、コードを書くときはこんな風にいろいろ揃えてしまった方がラクに感じることもあるのだな」と理解するようになりましたが、とはいえ、初心者にこれは酷だろうという気持ちには今も変わりはありません。そのPerlのコード、どう直したら読みやすくなるでしょうか?一例ですが、こんな風にすればどうかと思います。$lemon{foo};これだったら、どの変数がどこに動いているのか。それぞれの代入した値がその後にどこで使われているのか、追いやすくなります。ようは、「同じ変数名でなければいけないものだけ」を同じ変数名にするということです。コードには色が付いていません*1。そのようなとき、色分けをする代わりに適切な変数名*2を付ける必要があるのではないか、と思うわけです。bar.showこれ、たとえば以下のようにすると、どの値がどの変数を通してどこへ動いているのか、わかりやすくなると思います。bar.showこの問題、ようは読み手のトレースする力の程度に合わせる、ということなのだと思います。コードを書いているプログラマー自身は、どの変数がどの値を抱えているのか、頭の中ですでに追えている状態なので、変数名によって値の経路を示す必要はもうなくて、むしろ別の理由、たとえば異なる中身を持った変数同士が同種の属性や役割を背負っていることを示すために、同じ変数名を付けてカテゴライズしておきたい、みたいな考えがあるのかもしれません。入門段階の人は、普通はそういったトレースをする力が十分にはないがゆえに、変数の名前からその中身の値を想像しようとしますから、異なる値・異なる変数であるにもかかわらず同じ名前がついていると、混乱が生じやすいということではないかなと。このあたりの問題を認識した上で、その状況に応じてどうするべきなのか(異なる中身を持つ変数同士に同じ名前を付けるのか、それをしないのか)を考えられると、より良いかたちで書き手と読み手のコミュニケーションが成立しやすくなるのではないか、と思っています。*1:エディタ等のシンタクスハイライトで色を付けることはできますが、それは個々の設定によるので、結局書き手が見ているのと同じ色付けを別の読み手が見ることはできません。*2:ここで言う「適切さ」とはそのコードが読み書きされる背景によって変わるものだと思います。プログラマーの間だけで読まれる前提ならば、上記のような配慮は不要かもしれません。ここではあくまで「入門者にとって適切な」変数名について書いています。)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。