これからWebデザイン、Web制作を学ぶ人で「プログラミング」に興味を持つ方は多いかと思います。
というのは「これからはプログラミングもできるデザイナー」といったことをたびたび見聞きするからです。私も数年前に完全に未経験、右も左もわからないところからWebデザイナーに転職したので、そういった情報に触れては「『プログラミング』できないといけないのかー、できるようにならなきゃなあー」など漠然と思っていました。
で最近プログラミング関連でググっていたら、たまたまWebデザイナーが学ぶべき言語とかが出てきました。いくつかのサイトをのぞいてみたらHTMLとcss、javascript、PHPだったりしました。
それに対して感じる違和感を書いてみたいと思います。
「プログラミング」ってなんなんでしょう。私はコーディングする上でjavascriptやPHPも多少扱ってきましたが、自覚としてはまだ一度も「プログラミング」をしていない気もします。以下経験浅すぎてITとかWeb業界とかよくわかっていないペーペーの視点ですが思うところです。異論はありそうですが書いてみます。
言語=プログラミング、という違和感
この記事ではそもそもHTMLやcssに関してプログラミングと呼ぶのは適切ではない、という問題は(100%同意ですが)置いておきます。
それよりもjavascriptやPHPなどのプログラミング言語を使うからといって「プログラミングをしている」とは限らないという話です。
以下肩書きがWebデザイナー職だった私の経験です。
典型的なWebサイト制作の作業範囲。
- デザインソフトでデザイン
- HTML、cssでコーディング
- javascriptで動きをつける(主にjQueryのみ)
- CMS(主にWordPress…言語で言えばPHP)でテンプレート化やプラグイン化する
プログラミング言語の使用を基準に考えると主に③以降が対象となります。先述の通り②(HTMLとcss)はプログラミングと呼ぶこと自体に疑問符をつけたいので。
③はjQueryのパラメーターをいじることが多かったです。プラグイン、大抵コアの部分はもうプログラムされているものを使用します。一応javascriptですがまあさすがにこれはほとんどの人がプログラミングとは呼ばないでしょう。
④はWordPressというシステムとPHPを使って、HTML置き換えをしているだけです。データベースの取得などでプログラミングの基本文法(ifやforeachなど)くらいはよく使います。でもぜんぜん「プログラミング」というほどではないなあと思っています。
「プログラミング」とは?
このように私の場合言語は使っているのにまったくプログラミングをしていない気がするのですが、これはどういうことでしょうか。
私の感覚での「プログラミング」とは論理的思考力を使って設計する(アルゴリズムを考える)ということです。数学で言えば方程式をたてて解く、あるいは問題自体を作るみたいなことだと思っています。大抵一つではなくいろいろな条件がある問題。それも机上の理論ではなく実際のリアルな問題。例えば小学校で習う速さの問題で言うと、道が壊れていた場合は…みたいな処理も含めて考える。
それに対して、すでに立てられた(あるいは定番すぎて暗記すればよい)方程式を解いているだけ、あるいは値を代入しているだけなのにプログラミングと呼ぶのはかなり違和感があります。
でも実際Webデザインで使う範囲ってそんなものです。
Webデザイナーがやっていることの本質
私がコーディングの段階でjavascriptやPHPなどの「プログラミング言語」を使ってやっていることの本質です。
- パラメーターいじり(展開とかスライダーとか動きの部分)
- 置き換え作業(HTML→PHP→HTMLとか)
- 表示(テンプレートや一覧、検索結果など)の条件設定
ほとんど論理的思考をしていません。唯一③だけが少しだけ論理的な手順があります。
例えばこんな感じ
- このテンプレートで
- ここに入力がされていたら
- この関数を呼び出して
- 繰り返しをする
こういうので例えば①と②が逆だとダメだったり…はあります。でも論理的思考と呼ぶほどのものではないでしょう。「ある店に行って営業していたら入店し、もしAが売ってなかったらBを買う。やっていなかったら別の店行ってそこも閉店なら帰る。」みたいな日常でだれしもやっているレベルです。実際に書くと見た目的にif,elseifなど多くなって1個の結果のために十数行とか複雑そうに見えたりもしますが内容はごく単純です。
私は頭悪いので適当に書いちゃってみて「ああそうか①と②が逆だった」とかも多いですが、考えるのが面倒なときはそうやれば済むだけです。堅牢なシステムを作るとかじゃないので例外処理もそんなに神経を使うこともないです。
上のような処理はプログラミングの基本であり、どんな大きな長いプログラムでもこれの積み重ねに過ぎないわけで、だから単純で短くてもプログラミングと呼べます。ただこの程度なら「プログラミング学習」をしなくても大人なら普通にできることです。
Webデザイナーはアルゴリズムを考えること(小学生のプログラミング授業で鍛えようとしていること)はほぼないです。実際Webデザイナー・HP制作の求人で「プログラミング」「開発」「エンジニア」といった文言はほとんどありません。PHPやjavascriptでの〇〇系制作何年、みたいなのもほとんどないです。よく目にするのは「PHPやjavascriptがわかる人」「望ましいスキル」などです。つまり文法がわかる・読めるレベルでいいし、それ以上が必要な仕事だったら肩書がエンジニアとかになっています。
このあたりで私の意見をいったんまとめると…
「Webデザイナーはプログラミングも習得するとよい」は×で、「Webデザイナーはプログラミング言語の書き方は覚えるとよい」なら〇。
もちろん「Webデザイナーはプログラミングも習得するとよい」の意味が、「Webデザイナーは稼げないのでプログラマー・エンジニア方向にキャリアチェンジしよう」という意味なら異論はありません。ただ今後もWebデザイナーという職種をメインにしていくつもりならば、本格的なプログラミングと呼ばれるようなものを組めるようになる必要はないってことです。できたらできたで開発系の部署に緊急時に便利屋として回されたりとかある意味活躍できるかもしれません。でもその結果は大きく貢献できることはなく、デザインもプログラミングもどちらも中途半端になるだけだと思います(詳しくは後述)。
スクールなどの営業事情は理解できますが…
デザイナーの業務範囲でプログラミング言語を扱う際よりも、小学校のプログラミング教育のほうが論理的な思考を使っているんじゃないかと思います。
なのにスクール等が謳う「Webデザイナーはプログラミングも…」などという場合には言葉が独り歩きしている感じがします(もちろん本格的なプログラミングができて役立てているデザイナーさんもいることはいるでしょう。例えば「一気通貫で全部請け負います」的なフリーランスなど)。
これからWeb業界を目指す人が言葉通りに捉えてしまうとおかしなことになるかもしれません。
ソースは私です。例えば就職前こんなふうに思考していました。「Webデザイナーはプログラミングもできないといけないのか、じゃあ先にがっつりjavascriptやPHPを学ぼう」。そして挫折、無駄や遠回りになりました。こういう時間はもったいないです。
ですのであまり「これからはプログラミングだ」とか「プログラミングは必須だ」とか言うのはどうなのかなと思います。これだと全くの未経験の人からしたらプログラマーになる人用の勉強をゴリゴリしてしまうかもしれません。実際にはWebサイト制作をメインにしたいのに。例えると、ちょっと外国へ旅行に行くだけなのにビジネス用語を使った英会話を学んでしまうみたいな話です。結局身につかないし使わないです。
HTML講座をプログラミング講座と呼んでいたり
もっと心配なのはプログラミング言語をかじっただけでプログラミングしている気分になっちゃう人が生まれそうな問題です。実際Webデザイナーのやっていることって先述の通りプログラミングのプにもなっているのか微妙な内容が多いわけですが、こういったことをもって「プログラミング」を修得したと思わせるのはちょっとひどいです。
特にHTMLとcssについてプログラミングとは呼ばないでほしいです。「プログラミング」呼称が多いのはスクールや教材などの営業事情なのでしょうが、「プログラミング講座」⇒中身がHTML、とかはさすがにひどいと感じます。
「プログラミングができると、より稼げます。IT業界で重宝されます。」こういう文句で中身がHTMLとごく簡単なjsやPHP程度…未経験だと容易にだまされます。プログラミングを学びさえすれば価値ある人材になれそうという誤解です。
ただそれ以外にもひとくくりにPHPなどの「言語」を習得スキルや資格として語るということ自体も問題に思います。大切なのは何の言語を使えるかじゃなくて何が作れるか。
「プログラミング」学習を「料理教室」で考える
ほとんどプログラミング的な思考を使わないのにプログラミング言語を使っているだけで「プログラミング」と呼ぶ問題。
例えるならどこから「料理」と呼ぶかみたいな話のような気もします。
- カップラーメンにお湯を入れる
- 〇〇の素やミールキット(材料とかもカットされているパック)を使う
- レシピをなぞってその通りに作る
- 素材の状態や食べる人を考慮して適宜工夫をする
家庭では②からじゅうぶん「料理」と呼んでいいと思っています。Web制作で言えばライブラリ、プラグイン使用といったところです。
でももし料理教室が「プロを目指せる講座です」と言って〇〇の素を使っていたら詐欺と感じる人も多いでしょう。もし職業として通用する料理人や調理師だったら最低でも③で、適宜④を挟んでいくくらいが最低条件だからです。
「プログラミングができるデザイナー」とは?
プログラミング講座等が与える誤解についてはこのくらいにしておくとして、この記事で定義したような”ちゃんとした”プログラミングができるWebデザイナーというのは必要なのでしょうか。いたとして、その人が活躍できる場面はどこなのでしょうか。
個人的にはあまりイメージがわきませんし、思い浮かぶのは以下のようなネガティブなやつです。
- 人手がないからプログラミングもやってね
- 両方できる人材だと給料が増えるか→いや給料はたぶん変わらない(どちらも労働集約型だしそれぞれ専門雇っても同じことだから)
- 「プログラミングまで考えたデザインができるよ」→それ必要なくない?(「コーディング・マークアップしやすいデザイン」ならわかる)
- 初心者が最初から両方を追いかけて一兎をも得ず
- 仮にデザイン専門から広げていったとしても両方の進歩に対応し続ける必要があるためやはりどちらも中途半端か時間の制約により疲弊する
どんな世界もより専門性を高めないと生き残れないという流れが自然なのに両方やったらアップデートや経験の蓄積が追いつくわけないです。オオタニサンみたいな天才以外は。
まあ相乗効果というのは考えられなくもないですが、やはりデザインと関係が深いのはマークアップまで(つまりHTMLとcssとごく簡単なjs)と思います。
制作会社での自分の実務経験から思い返すと、「プログラミング」スキルがあったらよかったなあと思ったのはたった2回くらいです。過去の人が作成したサイトで、なぜかゴリゴリのスクラッチでjavascriptを書きまくっていたのがありました。それが原因で不具合が起きたとき修正が大変でした。
あとはCMS案件で既存のシステムでは対応できないほどの複雑な表示条件を出されたときに自分でゴリゴリ書く必要がありました。ただこれは今考えると開発課があるのにデザイナーにやらせていた会社が悪い。
まあこのくらいです。これだけのためにシステムエンジニアやプログラマーを目指すかのような勉強をするのは非効率と思います。
私とプログラミング言語の付き合い方
じゃあ「Webデザイナー」は「プログラミング」とどの程度の付き合い方をするのかという話です。私の個人的な考えですが…
- javascriptとPHPは基本の文法だけ押さえればよい(その他の言語の場合も)
- その言語ではだいたいどういう書き方で何ができそうなのかだけ知っておく
- リファレンスに親しむ、その他ググるスキルが大事
まず1ですが設計とかアルゴリズムではなくて文法ということです。文法とはただの書き方のルールです。ごく簡単な入門本の前半で終わります。プロゲートなどのWeb学習でもいいです。文法っていうのはコピペしていてもなんとなく把握できるものですし、かける時間は数時間以内とかでいいです。なので「プログラミング学習講座」といったなんだかハードルが高そうな、いかにも特別そうな教材とかはデザイナーには不要と思います。
2と3は分けて書きましたが同じようなことです。だいたいどういう書き方で何ができそうなのか、これを押さえるように意識しています。PHPやjsに関してWebデザインで使うレベルのことってググればほとんどはなんとかなります(ググればわかる…つまり「技術」とは呼ばないレベルの問題がほとんど)。調べた結果書き方で解決する以外の方法がベストのことも多いので視野を広く持つようにしたいと思っています。またググる際にはコピペOKの個人ブログなどに頼らず、まず公式のリファレンスなどに当たることが大事と思います。そうすれば自然に力がつきます。特にPHPはわかりやすいので基本公式に当たれば〇。
まとめ
なんだか「プログラミング」という言葉が独り歩きしているのではないか…と思うことが多いので記事を書いてしまいました。
Webデザイナーというのは学ぶべきことが多いです。そのため入門者はむやみにプログラミング言語に集中しないようにし、必要に応じて学べばいいと思います。とはいえいきなり実案件でソースコードに触れたりすると面食らうとは思います。暇なときに入門書でもちょこちょこと触れておくくらいしておくとだいぶ違ってくると思います。
むしろどちらかというとデータベースやサーバーなどの概要を学んでおくのがいいかと思います。私はいまだにチンプンカンプンですが、理解できていればスムーズに仕事できただろうなあというのはいろいろありました。
コメント