今年も残すところ一か月を切り、肌寒い日も増えて参りました。風邪などひかぬよう気をつけていきたいですね。
いつも趣味のことばかり記事に書いている気がするので、考えをまとめがてら自分のお仕事で、最近特に気にしていることについて書いておこうかと思います。
■コーディングというものについて
プログラムを書くこと、もしくは、文字や画像、音声などのデータを特定のコードに置き換える(符号化する)こと。
前者は、仕様書や流れ図(フローチャート)に沿って、ソースコードを記述していくことを指す。
後者は、エンコードと呼ぶのが一般的。
「ASCII.jpデジタル用語辞典」より引用
かれこれ5年はこの概念に付き合っているわけですが、いまだに自分は深いところまでいけてないなと感じるのが正直なところです。
自分が現在理解しているのは、HTML5,CSS3,javascript,jQuery,PHP,Ruby,最近はvueといったところでしょうか。
こうして履歴書に書けそうな言語を羅列していくと結構“それっぽい”感が出てきますが、体感としてはいまだにその表層を泳いでいるだけな気がします。
コーディングというものは指定された言語の中で「こうしたい」という命令を出し、「それ」を実行させることの集合体であり、一つ一つの動作は1~3行で書けてしまう単純なものです。
それらを目的に合わせて順を追って実行させて、目指すゴールへ到着させることで一個のシステムとして完成させる、という認識でいいと思います。乱暴な言い方をすると、図式さえあってればプログラムは動いてくれるのです。
個人的な認識ではバケツリレーのような感じで、水が入ったバケツを順次パスしていき、最終的にはその水で火を消せれば成功といったイメージでしょうか。
火を消す水を運ぶのにバケツではなく、消火器や消火栓や、消防車を用いれる人は、実に向いているお仕事だと思います。(あまり適切な表現でもないと思いますが・・・)
さて、自分はというと率直に申し上げて、消防車を用いれる人と比べて効率的な仕事ができるタイプではないと自覚しております。
自分が10歩歩いている間に、彼らは50歩は先を歩いていると思われます。効率的なコードを書けるわけでもなければ、アクロバティックなコードを書けるわけでもない。今でも頭をウンウン唸らせつつ、コードを書いています。
■コードの可読性
しかし逆に言えば、自分程度でも教科書通りに従えば、コードというのは書けてしまうものなのです。難しいのは、「可読性」だと思います。
先述の通り、命令を与えればプログラムは動きます。文法さえ間違わなければ、ある程度は自由に書けてしまうものなのです。
そうなると必然的に書く人間の“癖”も出てくるようになります、弊社の記事のように。個人サイトなら別にそれでも問題ないので、ジャンジャン組んでいって九竜龍城ばりの記述になってしまっても構わないのですが、仕事では複数の人間がこれに関わり完成させなくてはなりません。
個人で組めちゃう人もいますが、僕のお仕事は複数人で進行しています。自分たちの場合は処理の担当箇所をそれぞれ割り振って進めています。最終的にそれらを統合し、一連の処理として動くようにします。
そうなると必然的に、各担当者が書いたコードに目を通すことになります。書いたコードの意図するところ、何がどういう処理を行なっているかを、一目か二目で理解するようにしていなければ、ほかの人に引き継ぐこともままなりません。
もっと言ってしまうと(あまり想像したくはないのですが)、自分がいなくなったあとでも、引き継ぎされた方が、保守点検修正できるようにしておかなければなりません。
それでなくとも、日々の仕事の積み重ねや忙しさによって、自分が書いたコードの意味を忘れてしまうなんてこともありえます。そうならないためにも、コードの可読性というのは、効率的な処理よりも重要だと認識しています。
可読性の高いコードについてですが、具体的には以下のようなものが挙げられています。
- インデントや改行が整理されている
コーディングは命令文が入れ子になることがほとんどなので、“どの処理がどこに入っているか”をインデントで囲うのは基本中の基本になります。本で言えば、文頭のスペースがないと読みにくいのと似たようなものです。
- 名前から意味が連想できる
クラス名でも処理名でも名前を付けることは多いのですが、名前の意味と内容がイコールになっているかが重要です。また、名前に使われる語句が一般的に使われる名詞や動詞だと、役割が頭にスッと入りやすいと思います。
- 名前に統一感がある
命名が英語なら英語、ローマ字ならローマ字、イニシャルは大文字にするか、アンダーバーで区切るか等・・・これらがバラバラだと、のちのち頭がこんがらがります。
ほかにもいろいろあるのですが、最低限上記3点は守っていくべきだと認識しながらコードを書いています。
5年も書いててそんなこととツッコミが入りそうですが、コードは自分だけでなく、あとから読む人のためにあるものですから、こうした思考は常に大事にしていきたいですね。
■UIをデザインする
人に読みやすいものを描くというのは、UI(ユーザーインターフェース)をデザインする上でも大事だと常日頃から思っています。
web上のUIは日々刻々と進化し、流行ったり廃れたりしています。ボタン一つとっても、1年前のデザインが今ではダサい、なんて話もよくあります。
レイアウトも、ちょっと前はクールと言われたフレームワークが「ないわ」と一蹴されたりもします。実際のところ、正解なんてものは存在しないのかもしれませんね。
ただ恐らく当たり前のことなのですが、“ユーザー”インターフェースというように、使うのはあくまでユーザー(利用者)であり、彼らが使える・使いやすいものでなければ、それはデザイナーの自己満足でしかありません。
スタイリッシュなアニメーションや演出も結構ですが、それが視覚的にどのような影響を与えるか、アクセスしてきたユーザーが探しているものを見つけやすいよう導線が引いてあるか・・・それができなかったり、足を引っ張るようであれば逆にいらないんじゃないか、なんてことを常に考えています。
良いか悪いか、いるかいらないか、それらを常に思考して取捨選択し、デザインの中に取り入れ、使う人々のことを意識しながらコードを書いてUIを組み上げていく。
そうして組み上げたものを使った人が、「使いやすい」と言ってくれたときには仕事冥利に尽きますね。問題点のフィードバックもしてくれたら万々歳です。場合によっては、さらに洗練されますからね。
良い内部処理はまだまだ自己課題が多いですが、使いやすいインターフェースについては、これからも考えていきたいと思っています。