はじめに
どうもTwitterの私のTLでは #いいねされた数だけ触ってきたプログラミング言語について語る というタグが流行っているのですが、そんなにたくさん触っていない弱者としては怖くてそんな募集はできないので自分で書きます。
記憶している範囲で触ったことがある順に書きます。中には「これはプログラミング言語か?」と言うものもありますがまあご愛嬌。
HTML
HTMLはプログラミング言語なのだろうか。
出会い
ガラケー全盛期、中学校時代所属していたPC部の先輩から二次創作なるものを教えられ、その時同時にフォレストページというサイトを知りました。
pixivの知名度がない時代、自分でサーバー借りたりHTML書くのは大変なのでよく利用されたサービスなのですが、そこで「リンクってどう貼るんだろう」と思ったんですね。で、Yahoo!知恵袋にて質問をして
<a href="リンク対象のURL">文字リンク(例えばサイト名など)</a>
でリンクは貼れます。
という回答を得たのがきっかけです。href
とは?と思い調べたところどうやらこれはHTMLらしい、とわかりました。
勉強
それからしばらくは忘れていたのですが、きっかけはHTML5でしょうか。
とりあえず受験終わったら
— yumetodo (@yumetodo) 2013年11月25日
・HTML,C++を学ぶ
・溜まりに溜まったBDレコーダーのアニメ(コナン、イナズマイレブン)をPCに移す(DVD→CPRMDecrypter)
・GeForce(グラボ)のごちゃごちゃした品番と性能の関係性を覚える。
・スキーする
をやる。
はてなに移る前のFC2ブログや、Yahoo!知恵ノート(間もなくサービス終了)を書いていたこともあり、ちゃんとHTML勉強したいなという思いがありました。
大学受験が国立後期試験を秋田大学を受けて落ちてその前に受かっていた理科大に入ることになって、そこで一気にググって勉強した感じですね。
その後
みらい研究室実行委員会のWebページや(現管理は @akihikodaki)、神楽坂一丁目通信局内部向けC++講習会資料を書くためなどでHTMLをガリガリ書いてました。
Autorun.inf
Autorunはプログラミング言語なのだろうか。
出会い
日経PC21のいつだったかの企画でUSBメモリーのアイコン変える方法&USBに入れたPortableソフトのランチャー自動起動!とかいう記事見たせい。
こんな質問してたわ。
その後
XP終了とともにAutorun自体セキュリティ的に危ないので消えていった。アイコン用にAutorun.inf
とアイコンと、あとUnplugDrive.exe
はしぶとくUSBに入れてたけど、
/bootのパーテションを移動したら、GRUB2は何故か呼べるけど、Ubuntuが呼べないので、とりあえずGRUB2入れ直す。 pic.twitter.com/vjHP8137jU
— yumetodo (@yumetodo) 2016年12月17日
この騒動のときにブータブルメディア作るのに吹き飛ばしてそのままだな・・・
Excel VBA
出会い
ちょっとこれを語るには中学校時代所属していたPC部について語らねばなるまい。
入部当初自分入れて3人にまで落ち込んでいたPC部をどうにか3年間で8人くらいに増やしたのが私のささやかな功績なんだが、この部活、異常です。
何が異常ってPC部のくせしてインターネットにアクセスしてはいけないというルールがあった(今もあるのかな?)。
いや、最初からあったわけではなくて、入部当時は使えてたんだけど、6月くらいに、PC部員ではないどっかのバカがウィルス?をPCに仕込んだそうな。それで
顧問「PCによくわからない怪しいソフトが入れられていた。問題のPCはあれだが(PCを指差しながら)、使ったか?」
私「いつも使っているPCは決めているのでそこを利用することはありえません」
顧問「まあいい、インターネットアクセス履歴はPCから消したつもりだろうが、市役所に全部残っている。とにかくインターネット使用禁止だ」
私「(そんなとこに履歴残ってるかよ、それよりPC起動ログ見ろやドアホ)うちら(PC部)関係ないじゃないですか、冗談じゃないですよ。そもそも活動に必要不可欠です。」
顧問「必要なときは毎回私(=顧問)に言って」
という謎極まりない会話によって禁止されたんですね。
その後も顧問に何回も掛け合ったんだけど、普段はいい先生なんだけどそれについては相手にされず、校長に親と殴り込みに行ったけど校長は把握しておらず、ごまかされ、そのまま卒業まで使えなかったんですね。ありえねー。もし国分寺市立第五中学校の現役PC部の方がここを見ていて、未だにインターネットが使えないとかだったら、そんなクソ事情なので、問答無用で顧問を殴っていいです。校長が把握してねーってことは、情報機器担当の先生がPC保守メーカーから報告を受けてなんかしら対応せなアカンやろってことでそういえばPC部がよく使ってるよな、じゃあ禁止しとけばいいだろ、くらいのお馬鹿で禁止されたに違いないので。
今の私だったら問答無用で市議会と教育委員会に殴り込みかけてるけど、当時はそこまでの行動力はなかった(なお校長には殴り込みに行ったうえに市長への手紙を書こうとはした模様)。
そもそも国分寺市は情報リテラシーのかけらもないからね、仕方ないね。
で、インターネットが使えないPC部で何をしていたかというと、ひたすらExcelのいろんな関数や機能を使うってことをやっていたんですね。
しばらくした頃、日経PC21にExcelマクロ入門記事が出て、まあまずは写経してみるかってなりちょっと触りました。まあ全くわからずさじを投げたのですが(言語仕様学ばずにかけるわけがない)
その後
中学校卒業したあとは触ることはなかったんですが、大学に入り教職課程をとり、地学実験に行ったときのこと。
気象データがExcelにまとまっていて(What’s!?)それを付録のマクロで抜き出して(!?)解析する授業がありまして・・・
Excelがこのご時世なのに2003以前形式でして、これどうにかならんのかと中身覗いたとき、リファクタリング欲が出ました。
ああああああ、Excel VBAとかどうやっても汚くしかかける気がしない!
— yumetodo (@yumetodo) 2016年9月8日
つーかまずExcel VBAのエディタが絶望的に使いづらいし、git管理できないのもありえない。
— yumetodo (@yumetodo) 2016年9月8日
すでに文明の利器(現代的なテキストエディタ、git)を手に入れていた私は心が折れました。マジむり。
ところがその後取った情報科学の授業、後半戦はExcel VBAだったんですね。マジカヨ・・・
もう二度と触らねーぞ!(フラグ
CSS
出会い
HTMLを触るにあたってstyle
attributeの存在を知り、そこからHTMLに付随して勉強した感じです。HTML5勉強するときに「構造とデザインは分離しなさい」とそこかしこに書かれていたせいでもある。
その後
みらい研究室実行委員会のWebページを管理するようになってCSSの汚さに絶望を覚えリファクタリングを放棄したり、IEと戦うのに疲れたりしたので最近まで敬遠していた。
stylelintとか知って興味本位でかけても大量に警告出て、「言ってることはわかるよ、パフォーマンス落ちるっていうんでしょ?そんなこと言っても可読性考えたり衝突防止には致し方ないんだよ!」ってなってたのもある。
MSがWindows Vistaのサポートを切ったことでついに我々プログラマーはIE11より前のIEを無視することができるという人権を手に入れたのでflex
使えるううううううう!ってなってちょっとだけモチベ戻ったけど、やっぱりlessとか使いたいよねという思い。
Bat(Command Prompt script file)
出会い
動画編集にのめり込んだ高校時代、作業を自動化する必要にかられ、バッチファイルの存在を知った。
勉強
そのころ手に入れたデジタルカメラの動画機能で撮るとmts(h.264/ac-3)
なファイルになって、これをmp4(h.264/aac)
にしてiPodに入れたいという欲求があったこともあり
こんなのを作ってた(Githubは最近そのころのファイルを引っ張り出してgit管理にしたもの)
その後
for
文が使いにくすぎて使わなくなった。
最近では、CSVをC++から読み込んでコンパイル時DB構築をするための前処理をBatで書こうとしたが、
バッチの再帰数がスタック制限を越えました
とか言われたのと処理速度が遅かったのでPowershellで素直に書き直しました。
13. バッチファイル
— 白山風露@ᓚᘏᗢ (@kazatsuyu) 2017年9月12日
クソ of クソ。シェルスクリプトの10倍使いづらい。とは言え、Windowsで何か自動化しようと思ったら、どの環境でも大体動く選択肢は多くない。でももうちょっと文法どうにかならなかったのか
クソ of クソは激しく同意。
C
出会い
東京理科大学に入学し、神楽坂一丁目通信局に入った。そこでプログラミング講習会ということでC言語を教わった、が当時はまじで何が何だかわからなかった。
なんかバグる、動かねーと思ったらだいたいif文の条件文がちゃんと書けてなかったり、ド・モルガンの法則がわかってないと痛感させられる日々が続いた
勉強
とりあえず参考書が必要やろ、ということで
- 作者: ハーバート・シルト,柏原正三,トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2007/12/06
- メディア: 大型本
- 購入: 1人 クリック: 23回
- この商品を含むブログ (15件) を見る
- 作者: 前橋和弥
- 出版社/メーカー: 技術評論社
- 発売日: 2001/01/01
- メディア: 単行本
- 購入: 22人 クリック: 147回
- この商品を含むブログ (75件) を見る
を買ったが、どう考えても前橋和也著のC言語ポインタ完全制覇のほうが面白そうなので独習Cなんてものはほとんど見なかった。
C言語ポインタ完全制覇のお陰でポインタを理解することができるようになり、またC99という言語規格の存在を知った。
今にして思えば、独習CなんかじゃなくてC言語ポインタ完全制覇とか、もっと入門本として
- 作者: MMGames
- 出版社/メーカー: 秀和システム
- 発売日: 2011/06/24
- メディア: 単行本
- 購入: 3人 クリック: 600回
- この商品を含むブログ (1件) を見る
あたりを買えばよかった。独習C、てめーは許さん。まあすでにBook Offに売り払ったがな。
その後しばらくYahoo!知恵袋で回答者をやっていた。学校の課題丸投げと思われるもののうち、質問として成立しているものを選び回答を続けた。一時期C言語関連カテゴリのカテゴリマスターになってた。
まああとDxLibとかOpenCV1.xを使ってたりした。
その後
このあとC++の項で後述する事情によりCを書かなくなった。
まあそもそもC言語至高主義者どもが信奉するコードがどう考えても可読性と保守性に優れているとは思えなかったので、というのもある。
おまえらImageMagickのソースコード見たことがあるか?あれはまじで糞だぞ。あんなクソ処理してればそりゃぁOpenCVに大差をつけて処理速度で負けるわけだ。
Perl
出会い
学校の「情報処理および演習1」「情報処理および演習2」の授業でやらされた。C言語を知ったあとなので、動的型付け怖い、と思った。
その後
一体いつ使えばいいのかわからず使っていない。なんかPerl7とか出たらしいが。
JavaScript
出会い
とりあえずハッカソンの会場についた。
— yumetodo (@yumetodo) 2015年3月7日
作るものがまだ決まらないという悪夢。
なぜかハッカソンではJavascriptを使いつつFirefoxOSを触ることになった
— yumetodo (@yumetodo) 2015年3月7日
@takeokunnと参加したハッカソンでグループを組んだ東京電機大学電気電子工学科の連中だっけか、その人達と組んだときに、一回も書いたことがなかったJavaScriptを書かされることになり、めっちゃ必死だった。
丁度2年前に初めて参加したハッカソン、雑魚すぎてソースコード1行も書けなくてそれが悔しくてプログラミング始めたんだよなぁ懐かしい
— たけてぃー (@takeokunn) 2017年3月7日
そのハッカソンでいきなりJavaScript書かされて、わずか一週間後みらいけんのサイトのイベントページ作ったっけか。なつかしい https://t.co/0xQlJOrnE3
— yumetodo (@yumetodo) 2017年3月7日
takeokunnと違って当時私はC言語を真面目に勉強していたので、まあその無茶振りでもまあそれっぽいコードは書けた。たしかGETとかPOSTとかするコード書いていた気がする。
そのわずか一週間後、みらい研究室実行委員会のWebページ制作に取り掛かることになり、覚えたてのJavaScriptを駆使して
を作った。
実装の汚さに突っ込んではいけない。
その後はC/C++にハマりすぎて動的型付け言語恐怖症になっていたこともありしばらく触ってなかった(といってもちょこちょこ書いてはいたが)。
Node.jsも知ってはいたが敬遠していた。理由は
この事件を知っていたからだ。
Node.jsを敬遠していたがために、コードのモジュール化ができないJavaScriptに嫌気が指していた。いや、namespaceパターンとかあるけどだるいやん。
その後
転機になったのは
を知ったこと。このJavaScriptの入門書執筆にGitbookが使われていた。もはやNode.jsから逃れることはできない。
実際に二次創作をGitbookで書いてみてその快適さに感動し、また改行処置にバグを見つけ、
なんていうWorkaroundプラグインを書いて初のnpm module公開をしたりした。
さらに
webpackはサンドイッチ製造機名乗ってるのに具材の加工しかしてくれない — 173210’s Blog
を見てWebpackに興味を持ち、戯れていたりした。
それよりもES2017とか使いたいのでもはやトランスパイルするのは当たり前になったのとWebpack便利なのであんまビルドに抵抗がなくなった。
そういえば
でも使われているよ。
C++
現在のメイン言語。
出会い
神楽坂一丁目通信局で先輩から「C++はCの構造体に関数を持たせられるクラスがあって便利だぞ」とか言われた記憶はあるが、そのときは「ふ~ん」くらいなもんだった。
神楽坂一丁目通信局の所属として理大祭(大学の学園祭)になんか作品を出すことになってプログラムをCで書いているときに、文字列操作周りでバグに悩まされた。
Do not use strlen() family to determine size of dynamic array! | 舶来ゴミ置き場
この時@MaverickTse氏にstd::string
などのSTLを紹介され、C++の門を以降叩いた。
勉強
翌年の神楽坂一丁目通信局内部向け講習会で講師役に名乗り出た私は、じゃあテキスト作らなあかんやろということで作り始めた。
その過程で
C++erなら皆さんご存知・・・のことと思うが、江添亮さんのブログ本の虫に行き着いた。とりあえずこのブログのすべての記事を読破した私は、CではなくC++11を教える必要があると判断した。理由は
にあるので参照されたし。
とにかくそういうわけでQiitaの記事を読み漁りつつ、本の虫を何回もよみつつ、Twitterで強いひとと絡みつつ、ググりつつ、C++を勉強していった。
当時はcpprefjpがまだほとんど執筆されていなかったように思う。C++11の日本語情報などほとんどなく、古い情報や誤った情報の中からC++11に関する正しい情報を見つけ出すのは非常に困難な作業だった。私のggrbilityが高くなかったら、本の虫がなかったら、Twitterに強い人がいなかったら、心が折れていたことは疑いない。
そんなころ、歌舞伎座.tech #8 「C++初心者会」が開催され、ニコニコ生放送で中継された。もちろん私はタイムシフトを予約した。とりあえずC++erの初心者は当てにならねーなと思った。
その後
でQiitaデビューした。以降Qiitaの記事には大変お世話になっている。
2015年冬、C++初心者Advent Calendar 2015が開催され、
を投稿したところ、評判がよく、View数とストック数(当時はまだいいねシステム(改悪)は導入されていなかった)がよく伸びた。この記事はここまで読んでいただけたならわかると思うが、目次とかとか | C言語講習会テキスト2015の執筆経験を存分に活かしている。という解説の一部はここから流用したし。
C++界隈に名前が知られるようになったきっかけ
名前が知られると言っても江添さんとかその他強い人に比べれば屁みたいなもんだが。
先程紹介した歌舞伎座.tech #8 「C++初心者会」で株式会社ムラサメ研究所 宮竹ゆきさんが
www.slideshare.net
という発表をなさっていて、「果たしてC++初心者はBoost.Asioを使えるのだろうか」と思っていたのだが、
の記事でその思いが再燃、
を投稿したところ、これがバズった。C++の難解さも相まって受けたのだろうか。ついでに規格書リーディングという単語を生み出した。
とにかく私の予想を遥かに超えてバズったために批判も多く頂いたが、炎上商法で名前が売れるのは常識である、好む好まざるにかかわらず名前が売れた。
私としてはべつにバズらせようとして記事を書いたわけでもないし、後に深刻な誤解を受けたのでその記事に意図を追記しました。
現在
まあなんか書くときはとりあえずC++で書いちゃう。そんな現状。ただしGUIはC# + WPFを使ってます。
Bash Script
Linux使っているのに書かないわけない。以上。
ちなみにきれいに書こうとするとfork()
がないWindowsでの実行速度が死ぬのでprocess作らないように汚く書くことをおすすめします(ぇ
C#
出会い
残念ながら覚えていない。競技プログラミングをC#で解こうと思い立ったのが先だったか、Win32APIC/C++から叩くの辛くてC#使おうとしたのが先だったか、とにかくその辺。
勉強
LINQとかいう文明の利器に触れたのは
がきっかけ。これはWindows Formをつかっている。GUI書くのが圧倒的に楽で感動した。
その後WPFの存在を知ったがわからずぎて心が折れた。
現在
WPFリベンジ中・・・。ObservableCollection
やっぱりわからないので使わない方向に逃げた(ぇ
Python
出会い
名前だけ知っていたPythonを触ってみようと導入するもWindowsと文字コードの高い壁に阻まれ挫折
リベンジ
OpenCVをpythonで使ってみようとしたがやはり挫折。
にContributeした時ちょっと触ったがそれっきり。
GnuPlot
大学の実験レポートのグラフを書くのに、e
のグラフの近似線を引きたかったがExcelだとできなかったので使った。
それっきりほとんど使ってない。
PowerShell
いつの間にか触っていた。
セキュリティポリシーをユーザーが変更しないと.ps1
実行できない仕様のお陰で使う気になれなかったが、誰かに「それバッチファイルから呼べばええやん、引数でセキュリティポリシー渡せるよ」というチート技を教えてもらってからはバッチファイルなんて投げ捨ててこれ使っている。
正規表現の扱いがわかりにくい印象。あとBatに比べれば遥かにマシとはいえ、型が暗黙変換されたがるので辛い。
独特のpipe機構を持っているがこれまた謎い。
D
競技プログラミングで一回C++じゃなくてこれ使おうとしたが、Hello World!すらどういうわけか動かないので知らない子。
lua
MineCraftのC++版と言われるMineTestを遊ぶのにModを作りたくてluaを触った。
いわゆる三項演算子がなく、代わりにcond and a or b
って書くのは可読性がない。もうちょっとどうにかならんのか。しかし書きやすく、しかも高速なスクリプト言語である。
なお作ったModは完全に放置している。時間が足りない。
npm script
大体
この記事のせい。上述のjs-primierのレポでも多用されている。
しかしWindowsのコマンドプロンプトのせいで死ぬのでもうbash+makeでええんや感出てくる。
Ruby
でCSVファイルを正規表現でチェックするCIを作るためだけに触った。なんでRubyにしたかといえば、JavaScriptでも良かったが、@YSRKEN氏がJavaScriptよりRubyのほうが詳しそうだったため。
Rust
Next C++感ある言語。後輩に猛烈にpushしているが、当の私はあんまやれてないというかチュートリアちょっと触っただけ。
Pug
でHTMLではなく静的buildが便利なPugつかおうという話になり触った。ほぼHTMLだからそんなに迷わない(include
とappend
しか使ってない)。
終わりに
大体C++かJavaScriptかC#やっている感ありますね。