My Library

Prolog

この Web サイトは, わたしがコンピュータサイエンスや, Web プログラミング, Web デザインに関わってきた軌跡を紹介しています.

この Web サイトを制作している時点で, およそ 4 年間コンピュータサイエンス (2011 年度から 2014 年度まで) に関わり, そのうちの 3 年間 (2012 年度から 2014 年度まで) は, ほぼ Web に特化して活動してきました.

もちろん, これからもその活動は続いていきますが, 1 つの区切りとして, 4 年間の軌跡を残しておきたいと考えました.

コンピュータサイエンス, Web プログラミング, Web デザインを習得する指針となった数多くの本とともに, 4 年間の軌跡を綴ります.

2011

わたしの大学時代の専攻はコンピュータサイエンスとは何の関係もない建築でした. といっても, 建築に興味があったからではなく, なにをやるかイメージしやすかったからという理由とも言えないな理由で進学していました.

2008 年度 (大学 4 回生) のときに, コンピュータサイエンスに興味をもって, 基本情報技術者の資格を取得して, C 言語の基本を学んでみて, これだったらやれるかもというある種の賭けで, 専攻を変えて大学院に進学しました.

しかし, 大学院での研究は正直おもしろくなく, コンピュータサイエンスに興味をもって (ただし, これだったらやれるかも程度で現在の熱中レベルとは天と地の差があります) 進学したはずなのに, コンピュータサイエンスへの興味を失っていきました.

April 〜 May

そうこうしているうちに病気になってしまい, 1 年留年し, 大学院生の肩書きはもちつつ, 実家に戻りしばらく療養することになりました.

June 〜 July

療養している間, なんとなく母校の関西大学の図書館に通っていました.

でも, 毎日のように通っていくうちに, 基本情報技術者の勉強や C 言語の勉強をしていたころを思い出し, もう 1 度, 0 からはじめようという気力が少しずつ湧いてきました.

コンピュータサイエンス全般 (情報理論, ハードウェア, アルゴリズム・データ構造, OS, DB, NW など広くとても浅く), そして, C 言語の基礎 (制御文, 配列, ポインタ, 関数, 構造体, 入出力処理, ファイル処理 ... etc) の勉強を再開しました.

August

某インターネット企業から運良く内定を頂き, コンピュータサイエンスの勉強に対する気力がさらに高まりました.

September 〜 March

FreeBSD のインストール, UNIX コマンド, シェルスクリプト (UNIX をツールとして使いこなす), UNIX システムコールプログラミング, XHTML・CSS, PHP, SQL, そして ... Web を支える技術 (HTTP・URI・HTML, REST). この期間に, 2012 年度以降, 様々なことを習得していくための土台を築いていたのだなと思います.

2011 年度の終わり ... 気がつけば, コンピュータサイエンスやプログラミングへの関わり方が, もはや「勉強」ではなく心身が求める「熱中」へと変わっていました.

2012

しかしながら, 病気の回復がよくなく結局は入社を辞退することになりました. これから, 1 年半年ほどニート生活が始まります.

それでも, 「熱中」できることは変わりませんでした. 特に, 2012 年度はコンピュータサイエンスでも, とりわけ Web へと突き進み, JavaScript という 1 つの言語を極めていくきっかけとなった非常に重要な時間でした.

また, JavaScript に加えて, デザインも少しずつ学んだことで, ユーザーの見える部分・ユーザーが機能をダイレクトに体感できる部分を創造することに強い楽しみをもつようになりました.

April

4 月の最初から, さっそく Web サーバーの構築にとりかかりました. そのために TCP / IP についてもより深く学びました. それから, PHP と MySQL を利用して, Apache モジュールとして動作する掲示板を制作しました.

これまでは, 理論でしか理解できていなかった TCP/IP といったネットワーク技術や, Web サーバーの原始的な仕組みを身をもって学ぶことができた貴重な経験でした.

Web デザインにも取り組むようになり, レイアウトや配色の基礎知識, Photoshop, Illustrator の習得, セマンティックなマークアップ, 効率の良いスタイル設定などもう 1 度基礎から XHTML・CSS を学びました.

May

UNIX システムコールプログラミングの継続と並行して, Java へのステップアップのためと考えて, C++ の基本も学び始めました. また, スマートフォンサイトの制作のために HTML5 によるマークアップ, CSS3 によるデザインも学び始めました.

June

Web ページに動きをつけたい ... ということをきっかけに, jQuery を学び始めました. これが, JavaScripter への第一歩となりました.

July 〜 September

Yahoo クリエイティブアワードで, HTML5 API (Canvas) を利用したお絵描きアプリ (Instant Canvas Presentation) を制作したことをきっかけに, 本格的に JavaScript を学び始めました.

October 〜 March

そして, ブラウザで高機能なサウンド処理を実現する Web Audio API に出会ったことが, JavaScripter へと進む原動力となりました.

このころは Web Audio API に関する資料は少なく, W3C の仕様や, 既に作成されている Web Audio API のアプリケーションのソースコードを何度もリーディングして Web Audio API を習得し, 同時に JavaScript の言語仕様についても深く学んでいきました.

しかし, 最初は仕様がほとんどわからず (特に, ScriptProcessorNode の挙動がよくわからず), さらに, JavaScript の理解もまだまだ未熟だったので, aike さんのような WebSynth はわたしには実装できない ... とあきらめたくなる気持ちは何度もおきました.

それでも, 自身の創造を絶対に具現化したいという強い気持ちが原動力となって, いずれは集大成となる (自身の一生のプロダクトなる), XSoundXSound.app を制作し始めました.

2012 年度の終わり ... 「オブジェクト指向でなぜつくるのか」を読んで, 今までは形式的にしか理解できていなかったオブジェクト指向について, その本質を理解できるようになりました. これは, 2012 年度に数多くのコードを実装してきたからだと思います. また, 関数型言語をいずれ学んでみたいと思うきっかけをもたせてくれました.

2013

2013 年度は, JavaScript をさらに追求していくとともに, ActionScript 3.0 や Java といった新しい言語の習得も始めました.

XSound (Web Audio API ライブラリ) の実装を進めていくうちに, プログラミング作法を学んだり, バージョン管理の必要性を感じて, git, そして, GitHub の利用も始めたりしました.

そして, 11 月からは, Web プログラマのアルバイトを始め, これまで独学でやってきたことを現場のプログラミングに活かす機会が訪れました. また, CakePHP を利用していたので, CakePHP の習得や PHP の MVC フレームワークの内部構造についても学びました.

これまで学んできたことが, 1 つの方向に集約されて, 本格的なプロダクトとして「形」になっていく ... そんな 1 年だったと思います.

April 〜 October

オブジェクト指向プログラミングを実践することを 1 つの目標にして, XSound のバージョンアップを繰り返しました. この過程で, JavaScript にさらに磨きをかけていきました. おおよその HTML5 API も使いこなせるようになりました.

さらに, WebSocket の利用をきっかけに Node.js の習得も始めました.

また, ポートフォリオとして Web Audio API の解説サイト, WEB SOUNDER の制作も始めました.

Web Audio API ライブラリの実装と Web Audio API 解説サイトの制作と並行して, ActionScript 3.0 や Java も学び始めました.

November 〜 December

11 月から株式会社コンビーズというメール配信事業をしている企業で Web プログラマとしてアルバイトを始めました (やはり, 初出勤は少し緊張したことを今でも覚えています).

初めての仕事は, デコメールエディタの改良でした. こういった WYSIWYG エディタでは, contentEditable 属性を利用し, JavaScript API の document.execCommandSelectionRange オブジェクトを利用して実装するのですが, これらを解説している書籍や Web サイトは非常に少なかったので, アルバイトを始めるまでに, かなり JavaScript の経験を積んでいましたが, まったく知らなかったので (当然, 実装したこともなく), 非常にラッキーな仕事をいきなり任せてもらえたなと思いました.

リッチエディタのための JavaScript の API の習得とともに, いずれサーバーサイドの仕事もバリバリ任せてもらいたいと思い, 並行して CakePHP の習得も始めました (また, PHP も基礎から学び直しました).

January 〜 March

Web プログラマのアルバイトをしつつも, 着実に XSound の実装を進めて, おおよその機能 (サウンド生成, ワンショットオーディオの再生, 楽曲データの再生, エフェクター, ビジュアライゼーション, レコーディング機能, セッション機能, MML による自動演奏機能) を API にしました.

そのライブラリを利用した XSound.app も, ほぼ現在の形ができあがりました.

1 月 18 日には, 初めてプログラミングのイベント, Web Music ハッカソン#2 に参加しました.

アルバイトでは, デコメールエディタから発展して HTML メールエディタ制作プロジェクトの一員になりました. HTML メールエディタのフロントエンド部分, つまり, JavaScript のコードはすべてわたしが実装しました. また, 再利用可能なように, jQuery プラグインとしてライブラリ化しました.

一方, JavaScript API を駆使した, デスクトップアプリケーションのような複雑な GUI をもつ Web アプリケーションの実装において, jQuery では力不足を感じ, これが, フロントエンド MV * フレームワークを習得しようというきっかけになりました.

プライベートでの制作は, デザインもサーバーサイドも一人で制作してきましたが, それとは異なった, デザイナーの方やサーバーサイドの方と協力して, 1 つのプロダクトを創造するという楽しみを体感することができました.

3 月には, MacBook Air を購入して, 念願の Mac ユーザーになりました. 病気もほとんど問題ないぐらいまでに回復して, 最後の 1 年に向けて, 万全の準備を整えることができました.

2014

2014 年 4 月 1 日から WordPress による技術ブログも始めました.

April

4 月に取り組んだことは, XSound.app の認証機能とサウンド設定保存機能の実装でした. Node.js + express + MongoDB を利用して実装しました.

May

5 月に取り組んだことは, わたしのメインサイトWEB SOUNDER のレスポンシブレイアウト対応でした.

アルバイトでのコーディングからテストコードの必要性やシステムのアーキテクチャを設計できる必要性を感じ, ユニットテストを書くことやデザインパターンを学び始めました.

そして, 以前より必要生を痛感していた英語も勉強し始めました.

5 月の末 ... 某インターネット企業から, これまた運よく内定をいただくことができました.

June

July 〜 September

7 月からは, これまで学んできた Java を活かし, Android アプリの制作を始めました. その成果が Express と, コアとなるライブラリである CanvasView です.

また, デザインもタイポグラフィ・配色といった基礎知識を再度学び直しました.

October

10 月には, Web Components (を構成する技術) を学び始め, x-piano のベースが完成しました.

また, GitHub の Pull Request 機能を利用し, 些細ですが初めてオープンソースに貢献することができました.

November

11 月には, Sass の習得を始め, より効率よくスタイルシートを記述することができるようになりました.

そして ... 11 月末には 2013 年の 4 月から制作を始めていた WEB SOUNDER が完成しました (ほんとに長い長い道のりでした ...).

December

12 月には, AngularJS をさらに深く学び, カスタムサービスやカスタムディレクティブの実装もある程度こなせるレベルになりました.

January 〜 March

最後の 3ヶ月はまさに卒業制作の時間でした ...

XSound.app の Retina ディスプレイ対応, express 4.x でサーバーサイドのリファクタリング, Sass による CSS のリファクタリング, AngularJS によるリファクタリング. XSoundAPI ドキュメントの制作. x-piano の Polymer による実装.

そして, この Web サイト My Library ...

Epilogue

この 4 年間は, これまでの人生のなかで比較にならないぐらい充実していました. 病気をしていたので, それでつらかったことはたくさんありましたが, それでもそう言い切れるぐらい充実していました. この 4 年間がわたしにとって本当の大学だったような気がします.

なんだかんだで運がよかったです.

Web の世界に入った時は, Web がドキュメントプラットフォームから, アプリケーションプラットフォームに転換する黎明期であり, JavaScript が Web の標準技術として君臨しはじめたころでした. そういうタイミングであったからこそ, Web Audio API の先駆者となることができました.

そして ... なにより周りの人に恵まれていたと思います. 家族, 毎日のように通った図書館のスタッフの方々, 病院の先生, コンビーズの方々, Web Music Developers JP の方々 ...

この 4 年間, わたしに関わってくれたすべての人に感謝の気持ちでいっぱいです.