コンピューターとプログラミングと僕

どうやってプログラミングを学んだか振り返る - Konamikan.を読んで自分も書いてみたいなとおもったのでかく。そろそろブログ書かないと失踪を疑われそうだなとおもってたのでちょうどいいなー題材だったというのも理由にある。 人に見てもらうコンテンツを作るというのがかなり苦手なので文章構成などがむちゃくちゃで読みにくいかもしれない。心優しい人がいたらより良いセクション分けや文章の書き方などの指摘をしてくれるととてもうれしいです。連絡先はGitHubかTwitterまでお願いします 幼少期-小学生時代 父がITエンジニアの家庭に生まれ落ちた僕は物心ついたくらいの時期(記憶に残ってるのは3歳)からコンピューターに触れていた。Windows98を搭載したマシンを駆り ペイントでよくわからん線を沢山書いて楽しい!!!とかしていたり、IEを使いYahooキッズなどのコンテンツを遊び倒したり、システムが不調でユーザーにログインできずギャンギャン泣いてたりグズってたりした。あとWindow Systemのテーマを変えて雰囲気が変わるのにめちゃくちゃ興奮していた。 幼稚園に入る前にWindows2000が発売されて、父親がOSを購入してきて家のWindows98マシンからアップグレードしている作業を隣で眺めていこともある。 アップデートするとテーマが増えてうれしかった。 幼稚園に入ったときにはたまたま同級生にパソコン触るの大好き人間がいて、お家に帰ったあとも電子メールでやりとりするなどして遊んでたりしたのを覚えている。 小学校に入ると地域区分の都合上、パソコン大好き人間とは別の学校に行くことになる。といってもパソコン大好き人間なのは変わらず、低学年の頃は家に帰っては自分が当時ハマってたゲームの攻略サイトを読んでいたり、Youtubeで動画を漁っていたり、自分のやっているゲームの掲示板に住みついていたりした。あと、おもしろフラッシュ倉庫 インフルエンザの高熱に魘されながらポケットモンスターパールで、インターネットの掲示板の情報を頼りになぞのばしょに潜り、幻のポケモン ダークライを捕獲したりしていた。ダークライ シェイミの捕獲方法は本物だったが、アルセウスを捕獲するためのバグ技は全部ガセみたいな時代だった。(これはアルセウスのシンボルエンカウントするための場所にいくにはイベントフラグを通さないといけなくて、なぞのばしょを用いた座標ハックだけではフラグをオンにできないのでどうやっても到達できなかったのだ) 小学校高学年になってくると、掲示板で人と話して一緒にゲームしたり、動画サイトはニコニコ動画にホームグラウンドを移した。あとはRPGツクールやWOLF RPGエディターのゲームを遊び倒してたり、RPGツクールを用いてゲームもどきを作っていたりした 掲示板で遊んでいたくだりを具体的に説明すると、どうぶつの森通信掲示板で、適当にフレンドコードを交換して相手の村にいったり、自分の村に来てもらったりしていた。遊んでいた人は男女や年齢問わずいろいろな人と遊んでた。 自分と同年代の人や、高校生とかの村に遊びにいったり、社会人のお姉さんが自分の村に来て手紙くれたりとかした。 社会人のお姉さんと遊んでたの今考えるとやばいな。完全にオネショタじゃん………… 同年代の女の子と無限にチャットしてたし多分人生のモテ期という物が実在するんだったらここで消費してるとおもう。 あと高校生男子の村に遊びにいった時、無駄に下ネタを振られて怖くなって、自分の村に逃げ帰ったりしていた。 ニコニコ動画では、ロックマンエグゼのプレイ動画(ロックバスター縛りやオワタ式)や、ポケモンに改造パッチを当てた萌えもんのプレイ動画を見ていた。フタエノキワミとかは最低限しっているけどズッポリニコ厨していたわけではなかった。 小学5年くらいの大晦日の日にたまたまニコニコ動画でVBScriptでダイアログを出す動画を発掘して、実績していて楽しい!!!!!してた。これが僕のプログラミングとのファーストコンタクトだったとおもう。特に概念を理解しないまま無限ループを作って無限にダイアログを出現させてゲラゲラ笑ってた。 今は亡きWindows Live Messangerを用いて幼稚園に入ったときにはたまたま同級生にパソコン触るの大好き人間(面倒になってきたので以下hakoneko)とボイス通話していたりもした。 この頃からhotmailのメールアドレスを取得することに成功してメールも再開していた。情報筋によると、hakonekoにはその時のメールのやりとりをバックアップされていたりするらしい。おーこわ 中学生時代 そうこうパソコンしていたら小学生時代が終わり、中学生時代になっていた。この頃は分かれた小学校のメンバーが一つの中学校に集結して阿鼻叫喚になっていた。パソコン大好き人間コミュニティに所属して平和な日常を送っていた。東方がブームになっておりみんなで遊んだ。 あとは親に自分のマシンを買ってもらった。当時流行っていた4万くらいの安物ネットブックだったが、自分のマシンということで弄り倒した。メモリを増設したりUbuntuとWindowsを同居させたりしていた。 学校での勉学でも落ちこぼれで勉強大嫌いだった僕はこの辺から、大学進学してまともな人生を歩むルートを諦めて、高校はなんとか行って就職するルートを通すこと重きを置いていた。そのため、就職先どうするかをぼんやりと考えていた 自分がやりたい仕事といえばプログラマーといったイメージがあったので、親にC言語の入門書を買ってもらい、ひたすら gcc コマンドを叩いていた。 得に何か作りたいみたいな欲求は起きずにコンピューターとおしゃべりしながら奴隷として働いてもらうのを楽しんでいた。 Ubuntuの派生ディストリをいくつか試したりもしていた。ディストロソムリエ芸を楽しんだ後に中学卒業前からArchLinuxに落ちついた。ArchLinuxというディストロは今でもWSL上で使っていて、長年使っていてすごいなあみたいな感動がある。 高専生時代 勉学ができずまともに高校受験したくなかったので、親の財布を生け贄に私立高専にAO入試で入った。その学費はなんと、年間100万円吹っとぶとか、人生のクズポイントだとおもう パソコンダイスキー以外、食べていけそうなスキルがなかったので、情報工学科に入学した。部活でもパソコンできそうな情報研究部に所属してゲームプログラミングしていたり、普通にだらだら遊んでいたりした。 また、部活ではDXライブラリやSDK + OpenGLを用いてゲームを作っていた。東方大好き人間だった影響で弾幕シューティングゲームっぽいものを実装していたり、RPGっぽいもののシステムをどうやって構成するか設計していたりした。 ゲームのUI状態をStackで構築すると前の画面に戻るみたいなのをpop一回で実装できて便利!?とか、UIスレッドのイベントループで重い計算処理やIOを起こすとフレームレートに悪影響が出るので余分な計算処理は別スレッドに逃して、UIスレッドと通信してUIスレッドのイベントループ内の負荷を減らす、みたいな最近のフロントエンドで持ってると便利な思考セットを習得した。 プログラミング言語というのを学ぶのも面白かったのでいろいろな JavaやC++ Dlang や Pythonに手を出して遊んでいたりした。最終的にはPythonを良く書いていた気がする。 あとTwitterで他の高専の人と友達になったりして、一緒にゲームしていたりした 勉学のほうは壊滅的で常に留年ギリギリで進級していた。が3年の時にクラスの人間関係がギスギスしていた余波をくらい、人間不信とメンヘラを拗せて退学した。 退学したら就職などの進路に悪影響をきたすのでは?と教員や親から脅されていたが、前例として退学してなんとかなっていた人間が2人くらいいたので、なんとかなるでしょうしなんとかならなきゃ死ぬだけだなとおもって、退学した。 ニート期 早朝にコンビニバイトして家にお金を少し入れつつ、昼間はひたすらプログラミングしていた。この時季は時間もできたし前からやってみたかったGUIプログラミングに手を出していた。 何をつくっていたかというと、Twitter廃人だった僕はTwitterクライアントを自炊していた。 この頃になるとどうやって進めていけば物が作れるようになるのかがわかっていたのと、時間的リソースの暴力によってある程度形になるものが作れるようになってきていた。 ホワイトボードを購入して、スレッド設計に悩んだ時はホワイトボードに書き出していたり、メモリ上にあるデータを複数のスレッドが触って壊れるみたいなのをやった結果、メッセージングでやりとりしようみたいなの教訓を得たりした。ここで作ったTwitterクライアントは完成していなくて、理由としてはタイムラインのデータ構造が終わっており、長時間起動しているとCPUを無限に使うようになってしまったのと、リアルが忙しくなってしまって頓挫した 平行してブログシステムを自力で実装してデプロイしたが、htmlがinvalidすぎたり、ConoHaのDNSサーバーを使っていたらspamhouseに登録されてTwitterでブログを共有できなくなったりもしていた 高校生時代 退学したが、就職するには高卒くらいの学歴が最低でもないとキツいこともあり、親の金で高校の単位を最速で取得できそうなデキタテホヤホヤ学校に入った。 プログラミング専門の通学コースが存在したので通ってみることにした。ここではとても多くのことを学んだ。JavaScriptといった具体的なプログラミング言語の入門から、RESTfulなAPI設計、 ベンチマークの取り方や本格的なRDBMSの使い方といった職で使うには必須のスキル、SQLインジェクションやディレクトリトラバーサルといったアプリケーションの脆弱性の探し方、IaC Brainfuckインタプリタの実装といった変わり種など今の僕の基礎を作る部分が固められていった1年だった。 Vue.jsなどのモダンなUIフレームワークの使い方や利便生やJavaScriptでGUIアプリケーションを書けるElectronの存在に手を出したのもあって、卒業課題でTwitterクライアントを実装したりしていた。 社会人- 1社目 高校時代の教員のコネで業務委託契約で入った。Ruby on Railsで既存のPHPアプリをリプレースしたりしたり、管理画面にRiot.jsを用いてインタラクションが必要な部分を実装したりした。N+1の解決や、バッチサーバーをどういう時に使えばうまく機能したりしなかったりするのかや、仕事でもメンテナンスができるコードを書くためには?みたいなところで無限に戦っていた記憶がある 2年目からは部署を変えてもらって、Scalaを書いていた。モナドでトランザクションを表現して抽象化してするのに感動を覚えたり、CleanArchitectureとDDDもどきを配属先プロジェクトでやっていた都合で、覚えたDependency Injectionなどのテクニック趣味のプログラミングでも生かしていった。

Posted

あけましておめでとうございます

今年もよろしくおねがいします

Posted

おれはもうだめだ

最近どんどん頭が悪くなっているような気がしていて辛い、主に自覚する瞬間はポケモンの初手の出し負けと仕事中です。 多分頭の良さでは1年前が一番ピークだった気がするけど、ここ1ヵ月で露骨に頭が悪くなっている。 今日起きたとき体調が最悪で死にかけてたんで、会社を休んでたんですけど頭がよかったらこんなことにはなっていなかった気がする。 この調子で頭悪くなり続けると3ヵ月後には何も考えられない人間になっている気がする。だれかおれをたすけてくれ

Posted

ゴミ

俺と仕事と現実と妄想というタイトルで書き始めたけど内容がないゴミなのでゴミ!w へいよーぐっつすっす。ひまのあだ。もうTwitterも以前に比べて顔を出さなくなったし、元から口だけは達者で存在感がない俺のことを覚えてくれている人も少ないかもしれない。 今日は友達と友達の友達のブログを読んだら結構面白くて、久々に価値観の近い人間を見たことが嬉しくなってブログを書きたくなったので書く。 まずはみんなきっと俺を忘れてるだろうから、この文章をよむために必要な背景(自己語り)をサマろうと思う 運動神経が悪くあたまがわるいし精神年齢もゴミな子供 帰宅部 義務教育を終えて入学した高専をやめるクズ 交友関係はこの世に希望を持っているわけでも絶望しきってるわけでもない人間がおおい さて、タイトルの1/4を話したので次は仕事の話をしようとおもう。皆さんは自分にとっての仕事とは何か考えたことはある?俺はさっき風呂で考えた。 俺(や俺と価値観が近い人間)にとっての仕事とは、この地球という名の大地で生きていき続けるために必要なりソースを稼ぐ行為だと思う。 だが地球というのは面白くて、仕事が生き甲斐になってたり仕事から発生するらしい俺が見たこともないやり甲斐という中毒性が高い成分に奴隷にされてる人間もいるらしい。俺に見えないものが見えるのはすごい まぁ地球のことはさておき、この価値観に至った経緯はこうだ。 前職の経営が危うくなってクビになりそうだったからうざかったので、次の職が決まるのを待たず1ヵ月だけニートになった。 ゲームに明るい皆さんならわかると思うのだが、リソースを稼ぐ手段を失った持久戦ゲームはジリ貧になって負ける。負けるのはうざいし腹が立つ。だから勝ちたい。勝つために必要な手段は主に次の2つだ 新たなリソースの回復手段を作る 相手のリソース、もしくは回復手段に大打撃を与えて、ジリ貧ゲームで相手のほうが先に死にゆくようなプランを実行する もしかして: 「崩し」 無職期間中、人生においての明確な敵を崩す手段を見つけられなかったので負けないために俺は新たなリソースの回復手段作ることにした。転職活動というやつだ。 人生は運ゲなので運がよく、弊社に入社することができ、時間というリソースと引き換えに金を得ることに成功した。交換で成り立っているので本当にリソースを稼げてるかはわからないが、ニート期間中に比べて遥かに長い間延命しているので、前よりアドは稼げているはずだ。 経緯はここまで なんやかんだで現職についた。転職してとても驚いたことがあって、金以外に何かを成すことや謎の成分目的だったりで仕事をしている人たちがいてとてもびっくりした。 ただ人の願いを具象化するだけのお仕事に夢も希望もあったことにびっくりした。リソースを稼ぐ手段に大義が生まれるのは漫画とかゲームとか調子が悪いときの俺の妄想だけだと思っていたからだ。 妄想が現実になったというのはこういうことだろう。 まぁそういう環境で平日5日8時間弱過ごしていると脳みそがバグってきて、俺も大義とか名分を持って労働をするんだろうなぁとおもって半年過ぎたけど変わらなかった。人間はそう簡単に変わらないし変えられないんだなぁ。しかし、気持ちの上では大義名分を得たかったのだろう。自分の周りの大多数と違うのは面倒なので… 今日まで大義名分に囲まれて仕事してきたが、今日は友達と友達の友達の文章を見て、我に返ってこのまま金のためだけに仕事しててもいいんだなぁと思えた。変わるのが難しければ変わらなくても良いらしい。 というわけでこのまま僕は死ぬまでのんびりやっていこうとおもうので皆さんよろしくおねがいします。 そいえば最近上司に「他人が成果を出してくることに期待して仕事をするのは二流」みたいなことを言われた。FPSでもきゃりーできなきゃ戦績は上がらないし、ポケモンも6割勝たないとゴミなのでそういう考えは社会にでも適用できるんだなぁって思った。

Posted

ghqで管理されたディレクトリ構造でディレクトリを作ってgit initまでしてくれるツールを作った

手元のマシンでリポジトリを管理するときにghqを使うと勝手に統一感あるディレクトリ構成でリポジトリ管理してくれるので便利です。 しかし、自分でリポジトリを作ってなにかを開始する機会が多いと mkdir ~/src/github.com/himanoa/foobarを毎回入力する必要がありちょっと不便です。 リポジトリ名を入力したらよしなにディレクトリを作って欲しいと思ってたので、勉強がてらにRustで簡単なCLIツールを作りました。 mkrepo インストール方法 macOS用にhomebrew用の整備とかArchLinux向けにAURパッケージを公開しているわけではないので、インストールには cargo が必要です。 次のコマンドでインストールすることができます cargo install mkrepo また、mkrepoは.gitconfigに特定のkey-value構造が存在していることに依存しています。そのため ~/.gitconfigに次のような記述を追加する必要があります [user] name="あなたのなまえ" [ghq] root="~/src" [mkrepo] service="github.com" つかいかた Make project directory for ghq style. 0.0.1 USAGE: mkrepo [FLAGS] [OPTIONS] <repository> FLAGS: -d dru run -h, --help Prints help information -V, --version Prints version information OPTIONS: -a, --author <author> repository author name -m <first_commit_message> first_commit_message name -s, --service <service> service name ARGS: <repository> Repository name mkrepo foobar とかやると src/github.

Posted