2014年の年末に確認することー

2014年やりたいこと。

– コンペに3つ提出する。
– jsでのビジュアル集を作る。
– 電子工作でハロウィーン作成。
– iPhone gameを作成。
– node.jsでmy cmsを作成
– 関数型プログラムに挑戦。
– selferの実用化。

来年の年末に確認しよう!

2014/01/05

clojureでgraphic programming

Clojureとは

Clojureは2008年にできたJava Virtual Machine上で動く言語です。

関数プログラムでLispと構文を継承しつつあり、関数プログラムは教養として1つぐらい学んでいたほうがいいので、ちょこちょこ触ることにしました。

関数プログラムを学びにあたり、Lispあたりか入ろうと思ったのですが、Herokuに対応しているし、Creative Applicationで紹介されたということでClojureを勉強することにしました。

関数プログラムはすごい、柔軟だという話をちょこちょこ聞き、なにがすごいのかわからず、Clojureの勉強を通して、探っていければと思っています。


ClojureをMac上で動かすまで、、

Creative ApplicationのTutorialがとても役に立ちました。

http://www.creativeapplications.net/tutorials/introduction-to-clojure-part-1/

LeiningenというPacage Managementをインストールするだけで動くようになります。

Leiningen: http://leiningen.org/

Install後、Terminal上でlein replと入力すれば、動きます。


Quilって!?

QuilというPackageでProcessingのように簡単にビジュアルコーディングがClojureできるそうです。

https://github.com/quil/quil

QuilのディレクトリからLein installでQuil Paackgeでインストール。


Sampleを動かすまで、、、

clojure appを生成します。

	lein new app my-cpp

appを管理するproject.cljというファイルのdependenciesに[quil “1.7.0”]を追加する。

実行ファイルは/src/my_stuff/core.cljというファイルになります。

Quilのページにあるサンプルを動かしてます。

(ns my-stuff.core
  (:require [quil.core :refer :all]))

(defn setup []
  (smooth)                          ;; Turn on anti-aliasing
  (frame-rate 1)                    ;; Set framerate to 1 FPS
  (background 200))                 ;; Set the background colour to
                                    ;; a nice shade of grey.
(defn draw []
  (stroke (random 255))             ;; Set the stroke colour to a random grey
  (stroke-weight (random 10))       ;; Set the stroke thickness randomly
  (fill (random 255))               ;; Set the fill colour to a random grey

  (let [diam (random 100)           ;; Set the diameter to a value between 0 and 100
        x    (random (width))       ;; Set the x coord randomly within the sketch
        y    (random (height))]     ;; Set the y coord randomly within the sketch
    (ellipse x y diam diam)))       ;; Draw a circle at x y with the correct diameter

(defsketch example                  ;; Define a new sketch named example
  :title "Oh so many grey circles"  ;; Set the title of the sketch
  :setup setup                      ;; Specify the setup fn
  :draw draw                        ;; Specify the draw fn
  :size [323 200])    	

core.cljの以上のようなコードを書いて、保存します。

保存後、appのトップディレクトリでlein runと書き、実行する。ウィンドゥが現れます。Sampleは動きます。


今後に向けて

clojureの文法に慣れるために、Quilで遊んでみつつ、OpenGLが動かすぐらいになりたいと思います。

制作日誌

個人制作日誌(2014年4月まで)

thumbnail

1月はコンペの準備やiosを勉強したりしてました。

2月から4月にかけてはnode.jsのexpress.jsというフレームワークを使用しcmsとポートフォリオ作成していました。

http://kenji-special.info/

node.jsからの勉強だったので、結構時間がかかりましたが、昨日無事完成しました。

全部自分で作るというのは仕事しているとなかなかないです。

ひと通り自分が納得したものを作れないと、仕事などでいろいろなスペシャリストと尊敬しながらコラボレーションできないと思うからです。

そういう思いがあるからこそ、個人制作は全部自分でやるようにしています。

今回の収穫としては、Model と Viewの関係を突き詰めて作れたところ(この部分だけで1週間ぐらいかかりました。)

最近は単一ページにして、modelの変化をViewを変えるのが主流になっていて、デザインの段階からその部分を考えることができて制作できたの収穫でした。

試作とデザインワークと開発で柔軟に変えるところとかっちりと決めるべきところをどうするかなどは自分なりに試行錯誤できました。

反省点として、cmsから先に作るより、先にポートフォリオを作成して、最初は仮のjson、そして、cmsにするというプロセスでやればよかったのかなと思います。

後は自分を見てくれ感が強く、もっと削ぎ落としたほうが出来上がり感が良かったんじゃないかと思います。

もっとデザインや動きの引き出しをもっといたほうがいいかなと思います。


思えば、Webとかの勉強初めて4年になりますが、ポートフォリオはこれが5つ目です。

1年に最低1回は更新しています、、

ゼロから全部自分で作るというのはなかなかしんどい作業です。

あの時はあーだったったとか、あの時のコードは本当にひどいな、初めて作ったのは載せるのなかったなとか、結構鮮明に覚えているものです。

技術的にかなり向上していますが、チャレンジすることやそれに伴い勉強することなど多く、毎回仕上げるまでの作業時間が増えています。

後3ヶ月ぐらいしたら自分のポートフォリオが気持ち悪くなり、すごいと思えるWebを見ると、次のやつを作ろうとなります。


2月から4月にかけては3ヶ月かけて1つまとまったものを作ったのですが、自分の基礎体力が全然足りてないと思います。

引き出しを多くもちたいという思いはポートフォリオ制作中も強くなりました。


5月から9月にかけての個人制作はあえて基礎体力をひたすら伸ばすところに焦点を当てたいと思います。

その名も、、

「100日ブートキャンプ」

ひたすらfrontendのコーディング基礎体力を上げていき、引き出しを増やしたいと思います。

具体的には1日CodePenに1つ、Shadertoyに1つの2個を最低作る。

1つあたり1時間以内に作るという条件で、、

CodePenに上げるものは1週間とか10日テーマを持って作ること、ShadertoyはとりあえずShaderに慣れることに力点をおきたいと思います。

CodePenで作るものの最初の2週間は”The 12 basic principles of animation”(http://the12principles.tumblr.com/)というDisneyアニメの教科書てきなものを真似しながら、動くものとは何かとかを考えていきたいと思います。


ブートキャンプ以外には自分の部屋の気温を決まった時間に計測する装置とそのシステムを作りたいなーと思います。

具体的には温度を測って、温度をデータベースに記録して、記録したデータを元にUIを作成するというものです。

今までやってこなかったハードウェアの勉強・制作をしつつ、

UIのバリエーションについて考える制作をできたらなと思います。。


そんな感じで、仕事以外でもずっとプログラムとかばかりしてる毎日です。

Dependecy Injector in Javascript.

See the Pen Dependency Injection for canvas by Kenji Saito (@kenjiSpecial) on CodePen.

“Dependency injection is about removing the hard coded dependencies and providing way of changing dependencies in compile-time or run-time. “とあります(Dependency Injection in JavaScript)。

わかるようで、わからないようで。。

require.jsやangular.jsで使われてて、デザインパターンの勉強として知っておかないといけないと思いメモとして残します。
本格的に勉強したい人はDependency Injection in JavaScriptを参照に。

Injector作成

var Injector = {
        dependencies: {},
        add : function(qualifier, obj){
            this.dependencies[qualifier] = obj;
        },
        get : function(func){
            var obj = new func;
            var dependencies = this.resolveDependencies(func);
            func.apply(obj, dependencies);
            return obj;
        },
        resolveDependencies : function(func) {
            var args = this.getArguments(func);
            var dependencies = [];
            for ( var i = 0; i < args.length; i++) {
                dependencies.push(this.dependencies[args[i]]);
            }
            return dependencies;
        },
        getArguments : function(func) {
            //This regex is from require.js
            var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
            var args = func.toString().match(FN_ARGS)[1].split(',');
            return args;
        }
    };

Injectorがとても重要な役割をします。下のような感じになるそうです。

動かしてみる。

    var canvas = document.getElementById('c');
    var ctx    = canvas.getContext('2d');

    var rect = {
        draw : function(ctx) {
        }
    }

    var redRect = function(){
    };

    redRect.prototype = Object.create(rect);

    redRect.prototype.draw = function(ctx){
        ctx.fillStyle = '#ff0000';
        ctx.fillRect( 10, 10, 10, 10);
    };

    var rectController = function(rect){
        this.rect = rect;
    };

    rectController.prototype.draw = function(){
        this.rect.draw(ctx);
        console.log('rectController draw');
    };

    Injector.add('rect', new redRect());
    var controler = Injector.get(rectController);
    controler.draw();

addとgetがとりえず重要だね。

自分の中でわかったようなわかってないようなまた数日後に復習して、加筆します。

なぜNew York Timesはフィギュアスケートの分析的な記事を書けたのか。

Screen Shot 2014-02-19 at 11.01.06 PM
羽生選手が金メダルをとった時にこの記事がわかりやすいとうツイートやFBの書き込みをよくみました。




今回のソチオリンピックではNew York TimesはWeb用の様々な面白い記事を作成しています。


New York Timesのオリンピックのメインページでは以下の画像のようにInteractiveがNews, Result, Photosと並び主要なコンテンツとして設定されています。
Screen Shot 2014-02-19 at 11.09.34 PM


Interactiveのサイトも1つ1つ興味深く、普段馴染みのないスポーツの説明やメダルの話などWebブラウザようにまとまっています。

How Close They Came to Winning

Screen Shot 2014-02-19 at 11.06.54 PM

スピードスケートなでのタイムを競う競技で金メダリストとどれだけ離れていたかをしることができます。


Slopestyle

Screen Shot 2014-02-19 at 11.21.35 PM


などなど、とても興味深い記事が多いです。



なぜNew York Timesはできるのか。

(以下はプログラムを書くことを仕事にしているボクなりの見解です。)

New York TimesはWebテクノロジー・デザインだけでもやばい会社です。
New York Timesで働いているプログラマーやデザイナーがWebのデザインだけでなく、ニュース記者やカメラマンと一緒に記事の作成をしてきているからだと思います。



New York Timesはニュース会社として有名ですが、この5年ぐらいはWeb系のテクノロジーやデザインにとても力を入れています。

これはNew York Timesのgithubのアカウントです。
Screen Shot 2014-02-19 at 11.25.01 PM
https://github.com/NYTimes

Github上でNew York TimesがWebに関わるデータベース、バックエンド、フロントエンドに関わるプラグイン、ライブラリ、プロジェクトを公開しています。

New York Timesのアカウントのメンバー見る限り大きなWebテクノロジーやデザインの大きな会議のメインイベントにgoogleやyahoo.comなどのプログラマーと一緒にスピーカとして登壇する人たちばかりです。

特にBackbone.jsというJavascript用のMVCライブラリやCoffeeScriptというJavascriptにコンパイルする言語をメインで作成しているJeremyやデータビジュアル用のライブラリとしてD3.jsをメインで作成しているMikeがいます。。
彼らはスーパーサイヤ人級のプログラマーです。

どうやったらこんなに豪華なメンバーが揃うのか、、いつか彼らと肩を並べられるようになりたいです。




New York TimesにNYT DevelopersというNew York Timesに関わるテクノジーに関わるサイトが存在します。
Screen Shot 2014-02-19 at 11.35.33 PM
http://developers.nytimes.com/
APIがかなり存在します。

Screen Shot 2014-02-19 at 11.00.24 PM
New York Timesのエンジニア用の公式ブログがあり、とても勉強になります。





ソチ以外でもアメリカ大統領選挙戦やファッションウィークの特集など様々なWebを上手く使った記事はとても多いです。
D3.jsを作成しているMikeのポートフォリオサイトに彼がNew York Times手がけたサイトを見ることができるので、興味がある方こちらをどうぞ。
http://bost.ocks.org/mike/

New York Timesが最も積極的にやっている印象ですが、他にもBloombergやHuffington Postも少しずつ増えてきています。
アメリカ以外だとイギリスのGurdianとドイツのZeitぐらいです。





Webに特化した記事はインタラクティブなデータビジュアルやWebを扱うので今の仕事と関係してますし、とても興味があります。
個人的にもコンペなどに応募しているので、今後も注目していきます。

今週のインターネット 2014#06_09/02/2014 – 02/16/2014

Loader collection by Tim

http://codepen.io/collection/HtAne/

Code Pen上でのTimのLoaderコレクション。


User Interface library

Screen Shot 2014-02-16 at 11.34.27 AM
http://useyourinterface.com/

制作に参考になりそう。


An Introduction to Gulp.js

http://www.sitepoint.com/introduction-gulp-js/

GulpとGruntの比較をせねばとおもいます。


Welcome to Method of Action

http://method.ac/

Kerningや色の勉強に使えそう。


Raspberry Pi(ラズベリー・パイ)でここまで出来る!12のクールな使い方


http://readwrite.jp/archives/4888

Raspberry Piでホームオートメーション・システムやってみたい。


What four projections do, as shown on _____.

http://jfire.io/reprojection/

地図の投影法を画像でやったらこんな感じだよというサイト


UI Animation and UX: A Not-So-Secret Friendship


http://alistapart.com/article/ui-animation-and-ux-a-not-so-secret-friendship

Outdated UX patterns and alternatives

http://sideproject.io/outdated-ux-patterns/

Grid

レスポンシブデザインとはなにかをわかりやすく、実際のcssを含めて解説してます。


BrandColors

Screen Shot 2014-02-16 at 12.06.43 PM
http://brandcolors.net/

User Onboarding

http://www.useronboard.com/

人気のWeb Appの仕組みを図解しています。


今週のインターネット 2014#05_021/02/2014 – 02/08/2014

SIGGRAPH Launches Free Program Offering Educational Videos to Computer Graphics Community

http://siggraphmediablog.blogspot.com/2014/01/siggraph-launches-free-program-offering.html/

Sigrapha Universityで提供している授業をビデオで閲覧することができます。


SIGGRAPH Launches Free Program Offering Educational Videos to Computer Graphics Community

http://yeoman.io/blog/gulp-explore.html/

yeomanでもgulpが使えるようになりました。


Vue.js


http://vuejs.org

試してみたい。


http://www.swissted.com/

http://www.swissted.com/

グラフィックデザイナーmike joyceのデザイン集。


http://www.olympicstory.com/

http://www.olympicstory.com/

冬季五輪のサイト。


気になったサイト

今週のインターネット 2014#04_01/27/2014 – 02/01/2014

You Might Not Need JQuery

http://youmightnotneedjquery.com/

便利なライブラリやフレームワークって言語に触れてない感じがします。

スクラッチからでも書けるようになりたいし、jqueryに関しては最近のブラウザだけを使うならほとんど必要なくなっています。

この記事を参考にし、jqueryのコードを少なくしています。

この記事と合わせて、browserで提供されるjavascriptのapiをhttp://html5index.org/確認していきたいです。


Knormal

blog01

この文字の動きが好きです。

Stock photos that don’t suck


https://medium.com/p/62ae4bcbe01b

テスト用デザインで写真使うときとかに役に立ちそうです。


SmallJS


http://smalljs.org

javascriptのsmall moduleに関するブログ

small moduleで必要な機能をプロジェクトに合わせて使うようになると思います。


A-STAR Pathfinding AI for HTML5 Canvas Games


http://buildnewgames.com/astar/

AI的なアルゴリズムを使って、何かしたいです。


The Role of Algorithms in Data Visualization

http://fellinlovewithdata.com/research/the-role-of-algorithms-in-data-visualization?utm_content=buffer43801&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

データー・ビジュアルでこういうところを抑えておきたいです。


今週のインターネット 2014#03_01/20/2014 – 01/26/2014

01/20/2014 – 01/26/2014

Export This: Interface Design Patterns for Node.js Modules

http://bites.goodeggs.com/posts/export-this/

Node.jsのmoduleに関する選択方法。


http://soppo.co/

Screen Shot 2014-01-26 at 9.50.23 AM
http://soppo.co/

gridをうまく使ってデザインをコンパクトにまとめているのと、viewのtransitionのanimationがよかった。


Dot Navigation Styles

http://tympanus.net/Development/DotNavigationStyles/

今後の参考に。


Node Web Kit

https://github.com/rogerwang/node-webkit

Chrominiumだけですが、Node.jsから直接HTMLやフロントエンドのJSを直接書き込める。


Working With LESS and the Chrome DevTools

このやり方でscssも使えるみたい。使えそう。


passportjs

Node.jsのユーザー認証とかに使えそう。


http://www.thomas-ciszewski-photography.com/

Screen Shot 2014-01-26 at 10.12.11 AM
http://www.thomas-ciszewski-photography.com

home画面とwork画面のtransitionのanimationが好きです。


Flexible CSS cover images


http://nicolasgallagher.com/flexible-css-cover-images/

こういうcssのtipは使えます。


Web Apprentice

http://apprentice.craic.com/

色々なライブラリのAPIを簡単な事例で紹介するサイト。


http://www.jcsuzanne.com/

Screen Shot 2014-01-26 at 10.22.30 AM
http://www.jcsuzanne.com/

こういうデザインの仕方はむずかしいよなーと感心しながら勉強ー

Algorithms

https://www.udacity.com/course/cs215

基本的ですぐに役に立たないけど、基礎からしっかり学びたいです。

seudo Lens Flare


http://john-chapman-graphics.blogspot.com/

こういうshaderを何も見ないでかけるようになりたい。

http://www.designembraced.com/

Screen Shot 2014-01-26 at 10.26.48 AM

css3の3d大好きっ子ってかんじですね。


10 Quick and Easy Fixes to Reduce Page Weight

http://www.sitepoint.com/ten-quick-fixes-reduce-page-weight/

launch前にはこういうの読んで、軽くしよう。


CS109 Data Science

http://cs109.org/
https://github.com/cs109/content

HarvardのData Scieneのサイトとgithub。よくまとまってる。

今週のインターネット 2014#02_01/13/2014 – 01/19/2014

01/13/2014 – 01/19/2014

Google Developer Tutorial

Screen Shot 2014-01-19 at 11.22.04 AM

https://developers.google.com/speed/articles/

google developerでのもろもろのチュートリアル。jsやcssの最適化についての記事をまとめている。


Fast interactive prototyping with Sketch and d3.js


http://snips.net/blog/posts/2014/01-10-fast-interactive_prototyping_with_d3_js.html

D3.jsとsketchを使って素早くプロトタイプを制作するためのチュートリアル。


Vertical align anything with just 3 lines of CSS

http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/

3行でvertical alignをセンターにするという情報。

使い勝手の良くmixinにして使うといい!


Myth Busting: CSS Animations vs. JavaScript


http://css-tricks.com/myth-busting-css-animations-vs-javascript/

CSSとJSどちらが早いのかという実験。Frontend developerなら必ず考えるトピック。

jquery < CSS < GASPという結果みたい。動かすプロパティとブラウザによって実行速度が違うのも念頭に置かないといけないですね。


Where the best designers go to find photos and graphics


http://www.sitebuilderreport.com/blog/where-the-best-designers-go-to-find-photos-and-graphics?utm_content=buffer6f9f5&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

ちょっとしたデザインを作るときに適当な画像を入れたりするのに使いそう


typographicposters.com

Screen Shot 2014-01-19 at 12.11.24 PM

typeを扱ったポスターを集めたサイト。


Writing A Better JavaScript Library For The DOM

http://coding.smashingmagazine.com/2014/01/13/better-javascript-library-for-the-dom/

jQuery卒業を考えさせる記事。


The Ten Most Popular Web Fonts of 2013


http://www.typeandgrids.com/blog/the-ten-most-popular-web-fonts-of-2013

無難なOpen Sansがweb fontで2013年1位だったみたい。

10位中すべてサンセリフというのはウェブデザインの流行りのフラットデザインと親和性が高いからなのだろうか。

Bootstrap UI Kit

http://bootstrapuikit.com/

Sketchも対応している。使い勝手良さそう。