目的
「プログラミングとは」と銘打っていますがそんなたいそうなものではなくプログラミング/ソフトウェア開発に係わるひと/初心者へ、私の経験をもとに開発にかかわる際どんなことを意識して欲しいのかや、開発する際にどんなことを考えるのかについて話していきたいと思います。
(最初は何かくか決めてなかった)
About me
handle name: kigawa
GitHub: https://github.com/kigawa01
organization: OneServer,Pixelsia,kigawa-net
- java/kotlin 2年
- PHP/typescript 1年
- C#/go 半年
業務経験としてはwebサイトとwindowsのアプリケーションで連携したシステムなどを作成したことがあります・
最近は主にminecraftのpluginの作成やminecraftの改造のほかライブラリやコンソールアプリなどを作成しています。
意識して欲しいこと
開発に係る際に意識して欲しいことは主に4つあります。
- 行間を読まない/含めないこと
- わからないことはわからないということ
- 言葉の意味を考えること
- 簡単な答えだけを求めない
- バグは起きるもの
- 修正/変更は大変
行間を読まない/含めないこと
会話などの際に行間を読んだり、含めたりしないでください。単純に理由が知りたくて質問しているのに詰められてると感じてしまう人が良くいますが、そんなことはありません。
逆に、相手に察してもらおうとしても伝わらないのではっきりといってほしいです。
わからないことはわからないということ
開発に関することはすべてを知ることが不可能なほど様々な知識や、物があるので、無知を恥だと思わず素直にわからないことはそういってください。
取り繕ってもばれますし、大事な場面でのミスにつながりかねないのでやめてください。
言葉の意味を考えること
たまにコードのミスや変数なども命名の指摘に対して「細かいことはどうでもいいでしょ(意訳)」といった返事が返ってくることがあります。
しかし、プログラムというものは「,」と「.」では全く意味が違いますし、「A」と「a」でも全く違うものとして扱われます。そして変数などの名前が適当なプログラムはとても分かりにくく、直せるバグも直せなくなってしまうほか、かかる時間もどんどん増えていきます。
ですので変数などの名前もよく単語の意味を考えてつけてください。
簡単な答えだけを求めない
例えばコードを書いていて何かしらのエラーが発生した際、どこに何を書けばそれが治るのかを聞く人がいます。しかし問題はそんなに単純には解決できないことがほとんどですし、聞かれた側にも大きな能力/労力を要します。そして、プログラミングのうちそれをすると何が起きるかという知識は教えることができますが、それを組み合わせて作るのはあなたにしかできません。どこに何を書けばいいのか事細かに教えてもらうという行為はプログラミングを教えてもらっているのではなく、ただ代わりにキーボードを打っているだけです。
バグは起きるもの
バグはないのが普通だと思わないでください。皆さんがよく知ってるものにもバグはありますし、それを感じられずにいるのは開発している人の多大な努力のおかげです。
修正/変更は大変
プログラムの挙動が少しだけ違うからと言って修正/変更が簡単になるわけではありません。場合によっては機能を一つ追加するのにほぼすべて作り直す必要があることもあり得ます。
そんな修正/変更は開発者と相談しながら開発期間を決めたり、内容を決めたりしてください。
開発する際考えること
開発 = コードを書くことではありません。
開発では、ユーザーにとって使いやすいのはどんなソフトウェアか、今後のメンテナンス(※後ほど説明します)がしやすいのはどんなコードか、ほかの人が開発しやすいのはどんなコードかなど、いろいろなことを考える必要があります。
ただ単純にコードを書くだけでなく、これらを考えることでよりよく、より早く、ソフトウェアを作ることができます。
ユーザーにとって使いやすいソフトウェアとは
ユーザーの要望通りに作ることは使いやすいソフトウェアを作ることではありません。ほとんどの場合においてユーザーは、どのように作ると使いやすいのか知りませんし、人によって答えも変わってきます。
例えば、ユーザーの要望道理に作っていると、機能がどんどん増えていくことがあります。機能が増えることはいいことだと思う人もいるかもしれませんが、そうではありません。
AdobeのPhotoShopを想像してみてください。機能がたくさんあって使いこなすまでにたくさんの労力がかかります。それを使いこなすことが大変なソフトウェアは使いやすいソフトウェアとは言えません。
しかし例外もあります。PhotoShopなどは使いこなすことができればとても有用でその学習するだけの価値があります。ただ、ほとんどの場合においては、それだけの価値を提供できないうえ、結局誰もその機能を必要としていないこともあります。
これ以外にもUIや導線など、使いやすいのはどんな風なのか考えながら作っていきます。
メンテナンスとは
ソフトウェアが完成したとしても、それで終わりではありません。
場合によってはそれをサーバーで動かし続ける必要がありますし、まだ見つかっていないバグが見つかったり、外部の変更によって動かなくなる可能性もあります。
そんな場合にもソフトウェアを動かすことができるように更新することなどをメンテナンスといいます。
最後に
普段開発者でない人と何かを作ったり、初心者の人に少し教えることがあるのですが、開発者とそうでない人の認識の差を感じていたので、それが少しでも埋まってくれたらうれしく思います。