『アイデアの接着剤』から心に残った3文を抜粋しコメントする

今や知らぬ人はいないご当地キャラクターくまモンをデザインした水野学さんの『アイデアの接着剤 (朝日文庫)』を読みました。

本書はアイデアの出し方というより、著者のアートディレクターとしての生き方哲学に近い気がしました。
良いアイデアを出すためには、知識ももちろんですが、人間としてのベースが大切。
本書の構成は小さなトピックの集まりです。今回はこの中から気になった3つをチョイスしてそれに対して考えたことを書いていきます。


1. 労働 = 準備 + 作業 + 反省

「パソコンに向かうのは『一日三時間』と決める」p.64

労働時間が1日8時間とするとパソコンの前に座って作業をするのは3時間だけだそうです。
デザイナーの労働はデザインする作業だけだと思われがちですが、実は作業の前後の準備と反省がとても大切。
これはエンジニアも同じことが言えそうです。 エンジニアの労働 = どんなものを作るか考える + プログラミング + 作ったものの反省し、次に生かす
この準備、作業、反省の繰り返しによって成長することができます。
事前に道順を調べずに出発して迷子になる人のように、闇雲にコードを書いていても成長は難しいと思います。
どうしても目に見える成果というのは「作業」のフェーズだけなので、力を1番入れてしまいがちですが、スタート時には最下位でも、できるだけ最短距離に近いコースを走った人が早くゴールするのと同じく、最短の作業時間で済むように工夫することが大切です。


2. 作ったものは誰かに理解されなければ意味がない

「プレゼンのうまい発明が、歴史に残る」p.100

デザインもプログラムも自分1人が使うものではないので、いくら自分で良いと思ったものを作っても、他者に理解されなければ意味がありません。
デザイナーのアウトプットはビジュアルですが、なぜそのように作ったのは、背景にある理論を言葉で説明できる必要があります。 エンジニアも同じく、アウトプットのコードを、なぜそのように書いたのか、しっかりと言葉で説明できなければいけません。


3. 価値観を変えることを人に頼っていいのか?

「価値観を変えてくれるのは、いつも『人』」p.174

さて、上の2文は著者に賛成で、「デザイナーではなくエンジニアだったら」と考えてみましたが、最後に選んだ1文には少し疑問を持っています。
人との関わりはもちろん大切です。しかし、自分も相手と同じくらいのレベルでないとそもそも相手のすごさを理解できないのではないでしょうか?
例えば、アプリ開発のスペシャリストの人が実際のコードを見せてくれながら知識を教えてくれたとしても、わたし自身はアプリ開発をしたことがないので、その人の話が理解できずに知識を吸収できない。少なくとも、相手の話を理解して「スゴイ!」「価値観が変わった!」となるためには、まず最低限の知識、経験を自分が学んでいなければならない。アプリの例で言うと、一通りの開発手法について理解しており、1つくらいはアプリを作ったことがなければ、アプリ開発のスペシャリストの凄さは理解できないと思います。

自分勝手にならないために人の意見、価値観を知るのはとても大切ですが、その前に自分の意見、価値観をしっかり持たなくてはいけないと思います。
自分の価値観を持ってから、初めて、価値観を変えてくれるような素晴らしい人かどうかがわかると思います。

JS プロトタイプオブジェクトのインスタンスの作り方

オブジェクト指向には2種類ある

  • プロトタイプベース
  • クラスベース

JSはプロトタイプベースのオブジェクト指向言語

コンストラクタの代わりに、プロパティを利用する

var proto = {
    hoge: 4,
    foo: 2
}

var makePerson = function(name, age){
    var person = Object.create(proto);
    makePerson.name = name;
    makePerson.age = age;
    
    return person;
}

var firstPerson = makePerson(‘Joe’, 24);
var secondPerson = makePerson(‘Sam’, 30);

クラスベースのオブジェクト指向言語のように、インスタンスを作る際に new も使用できるが、
Object.create を使用するのがベストプラクティス

参考書籍

シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA

Python文字列覚書

文字列の種類

  • バイト文字列
  • Unicode文字列
  • raw文字列

文字列の扱い方

>>> 'abc', "abc"
('abc', 'abc’)

>>> """abc
... def"""
'abc\ndef’

>>> print('abc\ndef')
abc
def

>>> print(r'abc\def')
abc\def

>>> 'ab' + 'c'
‘abc'

>>> 'ab' * 3
‘ababab'

>>> str([1,2,3,4])
'[1, 2, 3, 4]'

>>> s = 'abcdef'
>>> s[3]
‘d'

>>> s[3:5]
'de'

>>> s[3] = 'D'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

>>> '%s is now version %d.' %('Python', 3)
'Python is now version 3.'

>>> '%(lang)s is No. %(num)d.' %{'lang': 'Python', 'num': 3}
'Python is No. 3.'

>>> len(u'日本語')
3

>>> len(u'日本語'.encode('utf8'))
9

参考図書