STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

メインフレームの世界の面白さ。初めてのプログラミングは紙?!【Rubyistめぐり vol.4 ima1zumiさん 前編】

Rubyist Hotlinksにインスパイアされて始まったイベント『Rubyistめぐり』。第4回はima1zumiさんをゲストに迎えて、お話を聞きました。こちらは前編です。

hey.connpass.com

メイプルストーリーでタイピング力を鍛える

藤村:Rubyist HotlinksってコンテンツがRubyist Magainzeにあって、僕はそれを読んで「プログラマっていうのはこういう人たちなんだな」と、やや偏りのあるガイドを基に成長したところがあり、すごい好きだったんですけど、 また復活しないかなと思っているところでふと思いついてやり始めたのがRubyistめぐりです。なんと4回目ということで無事続いてて嬉しいなと思っています。

今回はima1zumiさんにお越しいただきました。Rubyコミュニティの方はご存知の通り、大活躍されているんですが、今日はどんなふうにima1zumiさんがima1zumiさんになったのかを聞いていこうと思います。みなさんよろしくお願いします。始めに一言ありますか?

ima1zumi:ちょっと緊張してます。前回のしおいさんの話は現地で聞いていたのですが、その時には次は私の番だと聞いていたので聞く側にいながらも緊張していました。今も緊張してます。よろしくお願いします。

藤村:じゃあ早速始めます。聞くことリストを作ってあるので、これを元に聞いていこうと思うんですけど、物心つく前にどんな感じだったんですか?

ima1zumi:物心つく前、難しいですね。

藤村:伝え聞く、物心つく前の様子。

ima1zumi:幼少期はお米アレルギーがあったらしくて、アワやヒエを主食として食べてたらしいんですけど。でも子供の頃、公園に行くと友達のお母さんからおせんべいをもらうわけですよ、おせんべいってお米でできてるんですよ。食べるとおいしいおいしいって言って食べるんですけど、体中に蕁麻疹がでて、そんな感じだったらしいんですが、成長するとともにお米アレルギーがなくなって、無事お米が食べられるようになりました。それぐらいしか伝え聞くところはわからない。

藤村:普通にシンプルにつらいやつだった。ありがとうございます。小学生の頃になると、だんだん記憶があると思うんですけど、小学校の頃はいかがお過ごしだったんですか?

ima1zumi:そうですね。地元の小学校に通っていました。パソコンの話をしちゃっていいですか?

藤村:はい。

ima1zumi:家にWindows95があり、Windowsのメモ帳で「あああ」とか入力して遊んでました。それだけで楽しかったです。あとWindowsのペイント、ローマ字の学習ソフトで遊んでました。

藤村:デスクトップのパソコンですよね?

ima1zumi:はい、ブラウン管モニターです。

藤村:ペイントは素朴なツールながら、いろんな遊び方ができて楽しいですよね。

ima1zumi:ペイントの塗りつぶしが楽しかった記憶があります。

藤村:押すと塗りつぶされるんでしたっけ?

ima1zumi:そうです。ちゃんと閉じてないと全部青くなるみたいな。

藤村:小学生らしい遊び方ですね。コンピュータ以外だと他に何をしてましたか?

ima1zumi:コンピュータ以外だと、当時ゲームボーイカラーが出てたんですよね。なのでポケモンをしたり、あとは家にスーファミセガサターンがあったので、それで大人が遊ぶゲームをやって大体一面クリアできないんですけど、楽しいみたいな。ゲームをしたり、パソコンでゲームをしたりっていう生活でした。

藤村:かなり早い段階からコンピュータが身近にあったって感じなんですね。中学校にあがるとさすがにペイントはやらなくなった?

ima1zumi:中学生の方がもっとコンピュータを触っていて、というのもMMORPGにハマったんですよね。オンラインゲームです。

藤村:何をやってたんですか?

ima1zumi:メイプルストーリーっていう、誰か知ってる人はいるかな?2Dの横スクロールのアクションゲームで、小学校や中学校の友達と放課後はメイプルストーリーで遊んでました。メイプルストーリーをやっていていいことがひとつあって、タイピングがめちゃくちゃ早くなりました。

藤村:そうか。

ima1zumi:早くタイピングしないと入力している間に死んじゃうんで。

藤村:必要に迫られて。学校の人と一緒にやるんですね。

ima1zumi:学校の人と一緒にやってました。でもネットゲームなので、その中でも友達ができてって感じでした。

藤村:僕は全然オンラインゲームに詳しくないんですけど、学校に限らず輪が広がっていく感じですよね。

ima1zumi:そうですね。なんとなく同年代の友達がいつの間にかネトゲの中で増えてて。

藤村:なるほどな。その頃から社会が広いというか。

ima1zumi:どうなんですかね。閉じたフレンドチャットの中の世界ですけど。学校から帰ってきたらパソコンを起動してメイプルストーリーばっかりやってました。妹がいるんですけど、妹もオンラインゲームをやっててパソコンは取り合いになりました。

藤村:家のパソコンは1台ですか?

ima1zumi:はい。その頃は確かWindows MEかXPです。

藤村:1人1台にはちょっとまだ早い段階ですね。

イクラで自動化に目覚める

藤村:中学校は主にメイプルストーリーをやり、高校生になっても引き続き?

ima1zumi:高校生になるとさすがにメイプルストーリーには飽きてて、その頃はスマホが出始めたぐらい。ガラケーからスマホへの移行期の頃で、スマホを持ったのはもうちょっと後だったかな?でもガラケーTwitterをやっていた記憶があります。

藤村:Twitterがあったわけですね。

ima1zumi:高校の頃にはありました。

藤村:プログラミングはまだ登場してない?

ima1zumi:そうですね。これをプログラミングと言っていいのかわからないんですけど、ちょっと遡ると小学生の頃に友達とホムペを作るのが流行ってて。

藤村:前略プロフィール

ima1zumi:ジオシティーズとか。

藤村:ジオシティーズね。

ima1zumi:ジオシティーズとかインフォシークとか、レンタルホームページみたいなのがあって。そこに手打ちのHTMLをアップロードするとサイトができました。

藤村:CSSは上級テクニックみたいな感じですね。

ima1zumi:基本的に <b> とか、左から右に流れるやつとか。そういうので楽しんでました。

藤村:そこからプログラミングって結構ジャンプありますもんね。僕も中学校か高校ぐらいの時にHTMLとCSSをやってたんですけど、プログラミングができるとは全く思ってなかったので手を出しもしなかった。ウェブサイトを作るぐらいまでは何とかなるっていう感じでやりますよね。

ima1zumi:そうですね。プログラミングはしていませんでしたし、その時は興味もありませんでした。自分にできるものだという認識がありませんでした。

藤村:そこから大学進学ですか?

ima1zumi:そうですね。大学は地元の経済学部に行って、経済学部なのでミクロやマクロとかの基礎的なことを勉強してました。あとは本を読んだり。大学時代はまったり過ごしてました。

藤村:ゲームはやってました?

ima1zumi:大学の時はマインクラフトにハマってました。友達が立てたマイクラサーバがあって、いろんな人が入ってるのでそれぞれの特色が出るんですよね。この人はオブジェを作るのが好き、この人はただただ湧き潰しをしてるなとか、海底神殿の水を抜いてるだけの人とかいるんですけど、その中で私はトラップタワーを作るのが大好きでした。

イクラではプレイヤーがいるところを中心にして数十マスの範囲でモンスターがスポーンします。なので湧ける地面を制限して、湧いてきたモンスターを集めて、一気に倒せる装置を作れば経験値が簡単に大量に手に入るみたいな、そんな装置がトラップタワーです。それを作るのが楽しくて。一番簡単なトラップタワーといわれる天空トラップタワーっていうのがあるんですけど、それをまず作りました。

次にトラップタワーを作るには大量の素材が必要で、鉄が欲しいなと思って、製鉄所と呼ばれるものを作りました。村人がある程度いると村人を守るアイアンゴーレムってモブが召喚されるんですけど、村人を一箇所に集めておくことでゴーレムを召喚させ、ゴーレムが倒れると鉄がドロップされることを利用した製鉄所と呼ばれる仕組みがあるんですけど、それを作ったり。あとは村人が交換してくれるアイテムを厳選するための施設を作ったり。自動化に熱中してました。

藤村:聞いてて思ったんですけど完全に自動化ですよね。仕組みで遊んでる印象があった。マイクラが初の自動化、仕組み化ですか?

ima1zumi:そうかもしれないですね。とにかく楽しくて、YouTubeで作り方の解説動画を見てその通りに作ってみる。村人を厳選する施設が欲しいと思ってYouTubeで探したんですけど、日本語でいい感じの説明が見つからなかったので、英語の説明を探しました。言ってることは全然わからないけど手順はわかるからやってみようと作って、交換アイテムを全部揃えたところで満足しました。

藤村:もうすでにプログラミングっぽいですね。

ima1zumi:イクラは、ちょっとそういうところがありましたね。

藤村:大学生の頃は穏やかにマインクラフトに邁進していた。

ima1zumi:イクラやったり、近所のゲーセンはダンスダンスレボリューションが100円で2クレジット遊べるっていうちょっとお得なゲーセンだったのでそこで遊んだり。あとは、和食の料亭でバイトしてました。コースが5,000円からみたいなお店だったんですけど、まかないがめちゃくちゃ美味しくて。魚の頭ってこんなに美味しいんだっていうのを知りました。

藤村:食への目覚め。

ima1zumi:そこで食べたものが自分の魚の経験値になりました。

藤村:基礎力が。

ima1zumi:ついちゃいましたね。年末は店を閉めるので、店の食材を全部はけるために鍋をやるんですよ。大量の牡蠣や美味しい野菜を入れた鍋を3時間ぐらいひたすら食べ続ける。

藤村:いいな。

ima1zumi:大量に食べるコツみたいなのを学びました。

藤村:食が好きな人、若い頃にそういうところでバイトしてる人が結構いるなって気がするな。

ima1zumi:ほんといい経験になりました。

藤村:社会人になってからやれないですもんね。

ima1zumi:バイトの終わりが23時とかですからね。

大学や就職先を選ぶときの基準

藤村:それで就活して社会人になった?

ima1zumi:大学は地元の松山にいて、上京したいと思って就職先を関東で探してました。ただ経済学部だと公務員や金融機関に就職先を探す人が多いんですけど、そういうところは自分にあんまり向いてなさそうだなと思って。

言語化が難しいんですけど、体系立った世界があってその上に仕事が成り立っているところがいいなと。あとは転勤がないとか、そういう基準で条件を満たすところを探していて、金融系のIT系の会社はどうかなと思って、最初の新卒の就職先を探してました。

藤村:数学とか好きでした?

ima1zumi:数学は全然やっていない派の経済学部です。

藤村:ほう。

ima1zumi:ただアカデミックなものには憧れがあって、経済学部を選んだのもその時自分が進学できる中で一番理論の体系がありそうなところ。積み上げていったらわかって、自分もそのフィールドに立てるところがいいなと思って探してました。

藤村:大学を選ぶときにそういう観点がすでにあった?

ima1zumi:そうですね。本当は化学系の学部に行きたかったんです。ただその当時の自分の実力では選べなかったので、選べる中でだったら経済学部かなって感じでした。

藤村:さらに戻るんですけど、化学への目覚めって中学高校の時に何かきっかけがあったんですか?

ima1zumi:受験勉強を始めてからです。定時制の高校に通っていて、大学進学を目指してる人って少なかったんです。私の代だと一学年40人弱ぐらいいたんですけど、その中で大学に進学した人は2、3人、そういう感じでした。

そういう環境もあって、主に独学で大学の受験勉強をしていたんですけど、勉強をしていた中で化学の参考書『化学の新研究』っていう本を読むのが楽しかったんです。この分子はこういう動きをするんだよみたいなのが細かく書いてあって、問題を解くためにはちょっとオーバーだけど、仕組みを知るには楽しい本で。それを読んで楽しいなって思ってて、化学系の学部がいいなってその時に思ってました。

藤村:マインクラフトも極端な拡大解釈をすると経済学の要素があるというか、小さい社会の仕組みがあって、それで何が起こるみたいなところが似てるなって思ったんですけど。自分で言いながらめっちゃ拡大解釈だなって思いました。

ima1zumi:私がいたサーバはたぶん10人もいないぐらいだったので、社会というにはちょっと小さいかもしれない。

藤村:シムシティとかシヴィライゼーションとか。

ima1zumi:絶対ハマっちゃうからやらないようにしてます。

藤村:僕もやらないようにしてます。絶対ハマりますよね、あれ。

ima1zumi:絶対ハマると思います。

藤村:ああいうのが一番面白いですよね、やっぱ。

ima1zumi:私はボードゲームが好きなんですけど、拡大再生産系が大好きで。拡大再生産っていうのは、例えば資源を獲得してその資源を元にもっと資源を獲得できるタイプのゲームです。どの順番でやれば一番利益が大きくなるかっていうのを考えるのが楽しくて。

藤村:FXとかにハマらなくてよかったですね。

ima1zumi:そうですね、私リスクとリターンの計算はあんまりできない方なんで、ちょっとまずいと思います。

藤村:シヴィライゼーションを僕もいつかやろうと思うけど、時間が溶けるので気をつけてますね。

初めてのプログラミングは新卒研修

藤村:戻りますが、東京に来て金融系の会社に就職されて。ちなみに僕も同じような堅めのSIerの下請けみたいな会社が新卒の就職先だったんですよ。SAPって業務システムのパッケージの下請けの会社だったんですけど、ima1zumiさんも新卒研修でプログラミングを始めたクチですか?

ima1zumi:そうなんですよ。学部の時はC言語の授業をとったんですけど、それがなかなかで。(講師から)「みなさんはC言語の環境構築をするのは無理だ、だから紙に書こう」と。

藤村:おー、コンテナいらずだ。

ima1zumi:なので紙に、stdio.hとか書いて、これでいいのかなと。プログラミングの経験としてはそれが最初なんですけど最初とはあんまり言えないかもしれない。

藤村:最初は紙。

ima1zumi:紙でした。

藤村:新卒の研修はどんな感じでしたか?

ima1zumi:新卒の研修はJavaCOBOLがあって、最初の1ヶ月半ぐらいは同期30人ぐらいが全員同じことをやるんですよね。たしかCOBOLから始まって、Javaをやって、あぁこれだけで動くんだ、Javaはやっぱ楽だねみたいな。

藤村:つまずくことはありませんでしたか?僕はループとかわからなくて、なんだこれはってなりましたけどね。

ima1zumi:内定後に基本情報技術者試験を受けないといけないってことが決まってたので、それで勉強してたんですよね。それでループは基本情報の勉強をする中でこんな感じなんだっていうのを学びましたね。ループするたびに変数の位置が変わるのを表に手で書いたり。なので、そんなにプログラミングの基礎的なところでつまずいたことはなかった気がします。

藤村:当時は文字には興味はなかったですか?

ima1zumi:当時は別に興味はなかったです。

藤村:その段階であったら衝撃的な気がしますからね。研修はどれぐらいあったんですか?

ima1zumi:研修は全体で3ヶ月で、確か途中で仮配属が発表されるんですよ。JavaCOBOLかがわかる。私はJavaの方に行きたかったんですよね。プログラミングの知識が全然なくても、COBOLは古くからある言語で将来性が怪しいと感じていたので。

藤村:その時のCOBOLオブジェクト指向みたいなのってあるんですか?それとも普通にサブルーチンにいっぱい書くみたいな感じ?

ima1zumi:COBOL自体は確か2000年ぐらいからオブジェクト指向に対応はしてるんですけど、COBOLが動いてる環境って1980年代や1990年代からシステムが動いてることが多いので、その前提で組み上げてきたシステムに突然オブジェクト指向を入れることがあんまり合わないんですよね。できるけどやらない、やってもあんまりメリットがない。

藤村:それはJavaに行きたくなりますね。

ima1zumi:そうですね。

藤村:しかし、COBOLの方になります。

ima1zumi:そうなんですよ。すごく頑張ったんですけどね、ちょっと頑張りすぎたのかもしれないなって今となっては思います。COBOLの方がその後の研修が大変でした。

藤村:何が大変だったんですか?

ima1zumi:最終的にCOBOLで組んだプログラムをプリンターで帳票と言われるものに出力する研修だったんですけど、メインフレームで漢字を出力するのがめっちゃ大変なんですよ。この中にメインフレームの環境で仕事をしたことがある人はいらっしゃいますか?

めちゃくちゃ大変なんですよ。私がやっていたのはIBMのz/OSなんですが、その中の文字コードは基本EBCDIC(イビシディック)っていうASCIIとは違う1バイトの文字コードの世界でした。私が入っていた環境では、使える文字が英大文字と半角仮名だけでした。

藤村:あーそれで出てきたなっていう時、たまにありますよね。

ima1zumi:半角仮名でしか表現されない文字列みたいなのありますよね、銀行とか。

藤村:銀行のは英大文字と半角仮名ですね、なるほど。

ima1zumi:さすがに漢字が出せないと不便なのでプリンターからは漢字を出したいんですけど、プリンターはプリンターに出力するための専用の文字コードがあって、それをプログラムの中で表現するのがすっごく大変で。漢字1文字ごとに、これはこのコード、これはこのコードかつ画面には表示できないバイト列として表示されるみたいな、そんな世界ですね。

藤村:出すので一苦労というか。

ima1zumi:実行してから初めて何の漢字を自分が入力していようとしたかわかる。

藤村:普段Rubyでお仕事をしてて書くコードとは全然違う苦労ですよね。

ima1zumi:全然違いますね。漢字をひとつ入力するのも一苦労。

藤村:そしてやっぱり帳票出力なんですね。僕も最初、帳票出力を3個ぐらいやりました。懐かしいですね。

ima1zumi:それはCOBOLではなかった?

藤村:それはSAP用のABAP(アバップ)で、まあCOBOLっぽい構文でした。僕がそこで働いていた頃はオブジェクト指向は最新機能で、ローカル変数はl_って名前にしないといけないとかありましたね。

ima1zumi:そういう感じでしたね。ネーミングルールが。

藤村:新卒でのプログラミングは面白かったですか?僕はこれは仕事だからという気持ちで、面白いとか面白くないとかなくて、ただただやるって感じでしたけど。

ima1zumi:全然知らない世界だったので、面白かったような記憶がありますね。基本的に問題を解くのが好きなので、与えられた問題を解きたい!ってなっちゃうんですよね。研修の間は問題が次々と出されるのでそれを解いていくのが楽しかったですね。

藤村:仕事ってそうですね。プログラミングの仕事って割と問題を解く、問題が無限に与えられるゲームみたいなところがあるから。やってて手応えもあったんですか?

ima1zumi:同期と進み具合を比較するわけですけど、そこそこできていそうだなという感触がありましたね。

藤村:それだと楽しいですよね、問題を解くことだし、手応えもあるし。メインフレームって金融機関向けですよね?

ima1zumi:はい。金融機関の仕事をしていました。

メインフレームの世界の面白さ

藤村:順調にCOBOLプログラマとしてキャリアをスタートさせた。

ima1zumi:COBOLプログラマっていうわけでもないんですよね。

藤村:Javaもあった?

ima1zumi:配属先がインフラ寄りの部署で、アプリケーションはあんまり書きませんでした。例えばアプリケーション部門からテーブルを作ってほしいと言われたらテーブルを作るし、インデックスを貼るみたいなのをやるし。あとは基本的にミドルウェアの面倒を見てました。IBMだとDb2とIMSという製品があって、その2つが関わるものは大体私たちの部署が関係者になるみたいな。

IMSは階層型のデータベースなんですけど、そのデータベースの中のファイルはオンライン中とパッチ処理が同居できないんですよ。なので、そのデータベースがオンライン中の時には、オンラインからのアクセスしか受け付けなくて、バッチ的に実行することができないっていう性質を持つんですね。

IMSはデータベースだけではなく、通信部分も担っているんですけど、日中はオンラインとしてIMSが動いていて、業務が終了した夜になると、オンラインはやめてバッチ処理を始めるという、切り替えのタイミングがある。いろいろコマンドを打ちながら切り替えるんですけど、そのタイミングで何かトラブルが起こるとバッチの開始が遅れて、翌日のオンラインを始めるのが遅くなってしまう。そのために毎日一人、部署の人が見守ったりしてましたね。

藤村:デイリーなお守りが発生したんですね。とはいえ、止まると影響範囲が甚大って感じですよね。

ima1zumi:そうですね。

藤村:最初の金融機関ではどれぐらい働いていたんですか?

ima1zumi:4、5年ぐらいやってましたね。配属の時からメインフレームは枯れた技術だし、どうかなと思ってたんですけど、やっていたら意外と楽しくて。

メインフレームの中ってすごく閉じた世界なんですよ。IBMの製品が動いていて、OSも、データベースも、通信を担っているソフトウェアもIBMで、たしかTCP/IPじゃない。知ってる人はその中の世界を全部知ってるんですよね、特に創設期にいたような人たちは。

そういう人たちからここはこういう理由でこうなってるんだよっていうのを聞くのが面白くて。このちょっとした設定は何のためにあったのかとか、慣習的にやっているこれは昔こういう意味があったとか、そういう90年代ぐらいからの流れがその当時2020年頃まで、ずっと脈々と引き継がれている。秘伝のタレ的なものの中にちゃんと意味があるのが面白いと思いました。

藤村:完成された体系の中で見聞きしたり、歴史を知ったりするのが奥深かったっていうのもあるんでしょうね。

ima1zumi:パソコンの仕組みを知ったような気がしたのも、楽しかった理由だと思います。

藤村:逆に今WebプログラミングでRailsやりますというのより、知らないといけない範囲は広そうだし、そういう意味では面白そうですね。

ima1zumi:知れることが多いですし、大体マニュアルを見れば書いてあるっていう世界ですね。IBMの製品なので全部マニュアルがあります。あとz/OSの世界からLinuxの世界に来た時に一番驚いたのがエラーコードがないこと。z/OSだとすべてのエラーにエラーコードが振ってあるんですよ。

なのでマニュアルを見たらエラーコードでこのエラーってわかるんですよね。例えば夜間コールでこのエラーコードが発生してますって電話で言われて、IBMのオンラインマニュアルを調べて、それは問題ないですねみたいな。そんな感じのことをしていたりしましたね。

藤村:これはメインフレームの人々にメインフレームの話を聞くだけで面白い説がありますね。通信も違うってことですか?

ima1zumi:TCP/IPで喋ってなかったことしか覚えてないんですけど。TCP/IPで喋るための何かがいました。

藤村:互換性というか通訳する何かがいたって感じですね。

ima1zumi:Linuxサーバで動いているソフトウェアも社内の別のシステムにあるんですけど、お互いに喋れないんですよね。なので喋れる何かがだいたい翻訳を任されていて、全然関係ないシステムだけど、その子は喋れるからこう通ってメインフレームと喋りに来るみたいな。外から何かしようとすると大変そうな世界でしたね。

藤村:なるほどな。僕も最初SAPだったんで、完全にSAPに閉じた世界なんですよ。エラーコードとか確かに覚えがありますね、ログが出てきて、それを紐解くとかそういうのはなかったな。

ima1zumi:あぁ、ないですね。

藤村:調べるのはめっちゃやったけどっていうのはありましたね。

ima1zumi:データ例外とかもコードで出てくる。今でも覚えてます、S0C7っていうコードはデータ例外で変数定義時の型と異なるデータ型の値を入れようとしたときに起こるみたいな。

メインフレームで仕事をする時の道具

藤村:その次がフィヨルドブートキャンプですか?

ima1zumi:あるプログラミング学習サイトで無料でプログラミングスクールお試し会を開いていて、それを最初にやりました。JavaScriptのお題を出すので24時間以内に回答を提出してください、合格できなければ脱落ですっていうデスゲーム的な感じだったんですけど。

藤村:それってどういうきっかけがあったんですか?だんだん仕事をしていて別のプログラミングの世界、コンピュータの世界を見てみたいなとなったんですか?

ima1zumi:新卒で入った会社は、IPAの試験を受ける必要があったんですね。基本情報技術者試験応用情報技術者試験と、あと情報セキュリティマネジメント試験を取りました。その勉強をするうちにメインフレーム以外の世界も面白いし現実的だと思って、だんだん興味が湧いてきてたんですよね。

あと、自分はそういうことを勉強できるんだなって気づきました。ただそっちの方の仕事をしたいと思っても、COBOLエンジニアという状態だと転職は難しいです。一回、転職支援の会社に行ったんですけど、同業他社を紹介されましたね。

違う技術のことを勉強して、かつ自分がそれをできることを証明できないと転職は無理だなと思って、プログラミング学習サイトで勉強を始めて、たまたまプログラミングスクールのお試しの募集があったので応募してみたら通ったので、JavaScriptブートキャンプ的なカリキュラムをやりましたね。

藤村:それはブラウザで動かすもの?

ima1zumi:そうですね。

藤村:初めての外の世界はどんな印象だったか覚えてます?

ima1zumi:あ、インターネットに情報があるって思いましたね。ググったらマニュアル以外の情報が出てくる世界、すごい良かったです。

藤村:逆に言うと完全な成果が載っているマニュアルはないみたいな。そこからはどんな流れだったんですか?

ima1zumi:そのブートキャンプがプログラミング学習サイト側の都合で1ヶ月くらいで終わっちゃって。その後、なんやかんやあって、いよいよ転職したいと。ただ勉強しないと無理だったので、プログラミングスクールを探そうと思い、フィヨルドブートキャンプと出会いました。

藤村:他と見比べつつ、フィヨルドブートキャンプに行き始めた。仕事をしながらですか?

ima1zumi:その時は休職してましたね。フィヨルドブートキャンプを選んだ理由は、まずサイトがアングラっぽいんですよね。

藤村:わかるな。

ima1zumi:なんかシンパシーを感じる。

藤村:こっち側の感じがありますよね。

ima1zumi:そうなんですよ。あとカリキュラムが公開されていたので、Linuxとか全然わからないけど、ちゃんとやってくれそうという感じがあって。あと月額制なので休職しながらでも、とりあえず始めてみやすくて、フィヨルドに決めました。

藤村:LinuxとかUnix系の環境への憧れと恐怖ってなかったですか?僕はめっちゃあったんですけど。

ima1zumi:恐怖って言うほど知らなかったんですよね。右も左もわからないみたいな感じです。これが噂に聞くLinuxかーって感じでした。

藤村:メインフレームの仕事ってどういう道具でやるんですか?コマンドライン、シェルがあってエディタがあってみたいな感じとは違うのかな。

ima1zumi:TSOって聞いたことありますか?タイムシェアリングオプションの略でTSOなんですけど、ターミナルエミュレータみたいなものです。ターミナルエミュレータと違うのは1台のホストコンピュータに開発者全員がつないでるんですよね。

全員同じ環境で、タイムシェアリングっていう名前の通り、ホストコンピュータから入力してエンターを押すと、その分だけ動いて返してっていうのをやってくれる環境でコーディングをしてましたね。(リッチな)エディタとかなかったです。

藤村:エディタがない?

ima1zumi:TSOのターミナルみたいなものの中で動くものしかなくて。メインフレームにつながってるので、基本個人が何かをインストールするっていうのは無理なんですよ。VimEmacsも無理、最初から入ってるエディタを使ってましたね。そのエディタというかフォントがなかなか大変で0(ゼロ)とO(オー)の区別がつかないんですよ。

藤村:基本的なUIがおかしい。

ima1zumi:等幅フォントにしないと表示はめちゃくちゃになるので、頑張って0とOの形が違う無料のフォントを探したり。ただ最終的には0とOは見分けられるようになりました。

藤村:違うは違う。

ima1zumi:ちょっとだけ違うんですよ、微妙に形が違ってて。

藤村:なるほどな。バグりやすそうですね。

ima1zumi:あと、全角スペースを入れても見えないんですよね。

藤村:全角スペースが見えない?

ima1zumi:ちょっと説明が難しいんですけど、どこでも入力可能なVimだと思っていただけると近いかもしれない。Vimは文末があるじゃないですか、それはなくて、基本的に最後まで空白で埋まってるんですよね。なので空白のところに突然全角スペースを入れちゃえるんですよ。

藤村:なるほどな。

ima1zumi:基本そういうのは目に見えないので、見るためにはファンクションキーを押す必要がある。押すと文字の下にバイト列が出てきて、バイト列を見るとここに\x40\x40が入っているのがわかるっていうのはできたんですけど、意識して見ないと気づけない。一回それで本番障害をやらかしました。

藤村:それで障害は悲しいですね。

ima1zumi:SQLの後ろに全角スペースが入ってて、悲しかったです。(後編に続く)

product.st.inc

おまけ

Rubyistめぐりのゲストにあわせて、おやつを用意するのが恒例になりつつあります。今回はTAOCA COFFEEさんのコーヒーとお菓子を準備しました!