仕事と晩飯とその他

日記です。

やりたいことをやる

昨日、この本を買った。

苦しんで覚えるC言語

苦しんで覚えるC言語

どうやら自分はずっと本気でプログラミングをやりたかったようだ。

考えてみると中学生の時に時計台裏のパソコンショップ、大阪屋だったっけか、あそこでPET2001かなんか(MZ80-Kだ、思い出した)のTINY BASICに触ったのが初めてか。自分でパソコン買う金は無かったのでショップでたまに触るぐらい。そういえば高校生の頃、既に冨山くんはコモドール64だったかVICだったか(VIC20だ)でアセンブラでゲーム作ってた。すげえ。と思ったら同じ高校のなんとかくんはコンピュータ系の技術雑誌に記事書いてた。なんなんだお前ら。

高校三年の夏、8mm映画を撮った。冬、FM-8をレンタル(というサービスがあった)してマイコンBASICマガジンのプログラムを延々と打ち込んだ。動かなくて泣いた。間違い見つけてなんとか動いたところで返却。共通一次直前の12月にそんなことやってる場合じゃなかったとは思うがそこそこの点数だったので地元の国立は絶対に受かるだろうとたかをくくっていたら落ちた。なんでだよ。

一浪して入った大学で情報処理概論取った。BASICは触ったことあるぜと思ってたけどFORTRANがまったく分かんなくて泣いた。課題は寮の先輩のプログラム丸写しでなんとか提出。可だった。

その後、学校変わってワープロは触る機会があったがコンピューターはずっと触らず。色々あって札幌の某IT系企業でバイトすることになった時にMacromedia Director触った。ボタンに動作割り付けんのか。メソッドってなんだ。プロパティ? IF THEN とかGOTO とかFOR NEXTとかそういうんじゃないのかよ。クエスチョンマークだらけのまま憧れのMacDTPとデザイン系のソフトウェアに触れた。んー、やっぱり触ったことあります程度かな。Macは爆弾出まくりでかなり嫌いになった。

その後、バイト先にあったMacでポスターを作るなど。まったくうまくもなんともないのだが、Illustrator触れるというだけの勢いで。

ご縁があって出版社の正社員に。これがIT系。皆コンピューターすげえ使えんだろうなと思ったらそうでもない。なんか不思議。派遣でExcelガシガシ使ってるヒトがいてマジリスペクト。ピボットテーブルとか初めて見た。

気がついたらパワーポイントで動くプレゼンとか作ってた。新雑誌企画説明会とかそんな感じ。折れ線グラフが伸びるんだよ。パワポなのに。で、Excelでピボットテーブルも作れるようになった。取次出版請求システム導入することになってシステム会社の方をご紹介いただく。今でも付き合いのある某社。他社の事例もということであちこち見学に。ものすごく勉強になった。いや、システムよりも出版流通と取次請求の業務。そのシステムのDBがMRDB,開発言語がLOGOだったんで「オブジェクト指向」の話が出て、その説明を聞いている時に突然ピカッとオブジェクト指向の原理原則がわかった(けど、いまだにどう使えばいいのかはわかってない)。気が付くと部内にLANを導入。秋葉原でボードを買ってWindowsNTサーバーを自作。サーバーやLANの管理は今でもさっぱりわからない。なんとなく。あの頃からずっとなんとなく。POSデータの話やら共有書店マスタの話やら。旧PubLine導入。ACCESSで営業日報の管理DBも作った。意外といい出来だったなあ。ExcelAccessVBAは触った。VBA、今でもピンときてないんだよなあ。

転職。の前に、短期間だけ別の会社。「HTMLも触れないんですか」と馬鹿にされたのは今でも根に持ってるぞ、オレは。その割にワードで企画書作ったら「この会社、こういうのちゃんと作れる人間いないんすヨ」とか褒められて図に乗ったけど。

今度こそちゃんと転職。そういえば生まれて初めて自分のPC買った。VAIO

LANも導入したしネットにも接続したし、Webサイト(我ながら酷い出来)も立ち上げたし、新規の業務システム導入してPubLineやDC-POSや共有書店マスタや諸々。Excelばっかり使ってたら上達した。新システムのあれでちょっとだけXML。わからなすぎて泣いた(泣いてないけど)。広告原稿作ることになってものすごく久しぶりにIllustrator触ったけど相変わらず使えない自分にがっかり。

しばらくずっとアプリケーションユーザー。色んなソフト触ったけどプログラムの世界には足を踏み入れず。会社のWebサイトのリニューアルだなんだでjavascriptでリストをデータベースみたいに使うとかなんとかそんなことはやってたけど。javascriptもしっくり来なかった。今でもしっくり来てない。

2010年から業界のDB絡みの話に参加。再びXMLと邂逅。わかんねえなあと思いつつもなんとかしたくてたまらなくなっていく。DOMってなんだ。全然わからないけど凄そうだ。どうしたら扱えるんだ。パーサーっていうのがいるのか。JAVAJAVAは無理っぽいな。PHPってのでいけるの? PHPならなんとかなるのか? でも、PHPってどうやったら使えるんだ? 書くのはエディターでいいのか。動かすのは? コンパイルとかしなくていいのね。それで、自分のパソコンでは動かせないの? XAMPPってなんだよ。ていうか、FTPでサーバーにphpって拡張子のファイル置いたら動くのか。ならそれでいいか。

2011年の春ぐらいからPHPXMLを扱ってどうこうに挑戦しようと決めて、9月に近刊検索βを立ち上げ。オレ頑張った。そうか、考えてみるとほぼ同じタイミングで人生が変わる出来事があったんだな。思い出すとツライ。

しょぼいサイトではあったが案外とアクセスが伸びて、そうなるとsimpleXMLでその都度ONIX読み込んでるとサーバーへの負荷が大変なことになってですね。ランキングだのRSSだのAPIだの調子に乗って機能を足していくうちにあちこち問題が発生しまくり。なのに、某取次や某オンライン書店やらに変換サービス的なの提供したりして、それはそれでスリリングな運用。で、いよいよサーバーが頻繁に落ちるような状況になって運用を一旦中止。それから必死で仕組みを考え直して都度XMLを読み込むんじゃなくて定時に読み込んで静的ファイルを書き出す方式に作り直し。劇的に負荷が減った。偉そうに言う話じゃなくて以前がひどすぎた。そして、改善されたと言ってもそれもひどいもんだったわけで、今になって思うとシーケンシャルなパーサー(SAXかXMLReader)使ってメモリへの負荷をもっと減らしつつDBに取り込むのが本当だったと反省しきり。その後、GoogleによるAPIの仕様変更でアクセスランキングが動かなくなるという危機もなんとか乗り切った。オレ的にはかなり難問だった。加えて、姉妹サイト的な位置づけで重版出来ですYOも始めた。βと違って情報収集に課題があったものの、SQLPHPでDBからの動的ページ生成をオレ的に初めて実現。しかもスマホ対応もしっかり。両輪で頑張るかと思っていたが諸々あってサドンデス。うん、ひどいと思うよ。βの分類とか、XSLTで実現してたんだけど、なんだか何もかもすっかり嫌になったよ、ホント。

復活の志を胸に抱きながらもなかなか動けず。そういえばその間(じゃなくて、考えてみるとYO!より前だった)、会社のWebサイトをリニューアルした。その時、MySQL+PHPで商品のデータは全てDB化。Wordpressで適当に作ったお知らせを抜かすと全ページ作り直し。ひとりでやったんでけっこう大変だった。そうだ、別で妻のWebサイトも作った。そっちはDB使わないで全部手打ちのHTML。モバイルファーストでレスポンシブって奴。javascriptは基本使わない。会社のも。なんだろう、javascript、できるだけ使いたくない。

会社のサイトをリニューアルした理由を思い出した。前のWeb(元はオレが一人で作った静的HTMLの集合体)の日常的な変更は別の担当者に任せてたんだった。その担当者が制作に移ってオレがまたWebサイトの更新やらなくちゃいけなくなったんだ。で、もう面倒でたまんないからDB化しようっていうんですげえ短期間で一気に作り直したんだ。そうだったわ。これがスマホ対応がさっぱりで、途中でスタイルシート中心に大幅に作り変えたんだ。ひとりで。誰にも知られずこっそり。充分とは言えないけど一応スマホ対応ってことで。

βとYOを畳んでしばらくは気が抜けた感じだったけど、そろそろ頑張るかっていうんで今年の春にまずはYO復活。実はHTMLとかDBはほぼ前回のまま。登録のところだけ自分用のツールを作って手間を減らした。いや、だいぶ違うんだ。で、なんとなく運用。βもどうにかせねばと思いつつ手付かず。理由があって、サーバー負荷の問題が解決できそうにも無かったから。以前のXMLReaderへのチャレンジはいまいちだった。

去年の夏ぐらいからかな、社内向けのACCESSで作成していた資料をWeb(MySQL+PHP)に少しずつ移行。ACCESSからはできれば脱したい。

先月、社でずっと使ってたグループウェアの代替どうするかってんで、それならタイムカード&スケジュール共有の簡単な仕組みを作った。このあたりからなんだか久しぶりにプログラムを作りたい熱が。

社のWebサイトは表示が遅くてさあ。オレが悪いんだけど。だいぶ前にSQLというかDBは見直したんだよね。よく考えてIndexを設定したら驚くほど早くなった。あとCSSも修正。画像の転送量減らすのにスクリプト書いたりとか。うーーん、でもイマイチかなあ。爆速表にのページってどうしてるんだろう。と、そんなもやもや状態だったんだけど、この春からモバイル環境を手に入れたので実際にスマホとかで見てるとやっぱり遅いの気になっちゃって。そこからサイトの速度改善。だがしかし遅々として進まず、のはずが、つい先日、「リクエストを減らすとはどういうことか」やっとわかったおかげで一気に改善。本当に、劇的に改善。それで俄然やる気が湧いてきた。

先日、社のPCにXMLReaderへの再挑戦のためにXAMPPを再導入。あっけなく攻略。今度は大体わかった。これならいけるなと思ったんだけど、PHP+XMLReaderで解決の前にXMLと相性が悪くない(ような気がする)PYTHONはどうかと思って調べてたんだ。で、PythonHello Worldとか書いたりしてた。よくわからないけどなんとかなるかなあと思いつつ、PHPで済むことが分かったのでそれでいいやということに。

が、しかし、なぜかここで急に「そろそろいい年だし、若い頃にやらないで後悔していることをやっておきたい」などと思いついてしまった。

その結果が、C言語の学習。本買う前にあちこちのサイトをガガッと読んだ。「言われてるほど文法は難しくないのでは」と思い始める。「や、むしろ覚えること少なくねえか」とも思う。読んでるだけだとわかんないし動かせる環境をなんとかするかと考えてATOMMinGWをインストール。書いてみた。コンパイルしてみた。動かしてみた。

Hello World!

昨日の帰り、本を買った(ちなみにWebでかなり読んでたが、著者に敬意と感謝を表すために新刊書籍を購入した)。2/3ぐらい読んだ。ポインターってなんだっけ、あの、アセンブラでアキュームレーター動かすときにアドレス記憶させといたあれだっけ? ていうか似てる? 構造体ってこれクラスっていうかオブジェクトっぽいって理解でいいの?

どうやら今まで苦しんで吸収してきたことが少しは役に立っているようだ。

今日になってATOMの遅さにはらわた煮えくり返ったのでサクラエディターでプログラム書いてコンパイルしてみた。

動くじゃねえかよ。

これで何やりたいかというと、ONIX専用のパーサーというか、CSVへのコンバーターを作りたいんですよ。名前は「riceball(onigiri)」。道は遠いけどね。