見出し画像

【やった!】ソフトウェア開発で達成感を味わった経験3選

こんにちは、ムンペイです。
プログラミングを30年以上やっています。

プライベートで、仕事、多くのソフトウェア開発を経験してきましたが、特に達成感を味わった経験を3つ挙げてみたいと思います。


1.ダウンロード100万超のスマホアプリ

私はお客様から依頼を受けてソフトウェアを開発する「受託開発」を行う会社に勤めています。もう10年近く前の経験になりますが、受託開発して納めたスマホアプリがダウンロード数100万を大きく超え、記憶に残る仕事になっています。

そのアプリは、大手電機メーカーのとある製品と組み合わせて使うためのもので、正確な販売個数はわかりませんが世界中で売れる製品ですので、アプリもそのくらい使われて当然ではあるのですが、やはり100万はちょっと震えましたね。
世界中から届くコメントやバグレポートは、嬉しいものも厳しいものもありましたが、エネルギーをもらえました。

もともとお客様が開発したVer.1があり、Ver.2から私たちが担当しましたが、Ver.3で大幅リニューアルするときに私たちでコンセプトやデザインをまとめ、それが採用されて開発したのは嬉しいことでした。

同じコンセプトでAndroid用とiOS用の2種類を作っていました。Android用はJavaで、iOS用はObjective C++を使っていました。今なら、主力言語はKotlinとSwiftに代わりましたし、React NativeやFlutterを使ってひとつのソースコードでAndroid用とiOS用を同時に開発するのが良さそうですね。

2.フリーウェアのユーザーがいた

次はプライベートの経験で、大学生の頃に開発したフリーウェアのユーザーが身近にいた、という話です。

いまはあまり聞かなくなりましたが、無料で使えるソフトウェアは「フリーウェア」と呼ばれていて、特に個人が開発してネットで公開されているソフトウェアに多かったです。ちなみに、有料のものは「シェアウェア」と呼ばれていました。

個人開発したソフトを公開する人は今と同じようにたくさんいましたが、個人のサイトで公開する他、フリーウェアやシェアウェアを集めて公開してくれるサービスを通じて公開してもらうこともありました。Vector窓の杜が有名ですが、メディアに乗ったということが少し箔がついたようで嬉しかったものです。

さて、私もVectorで2つアプリを公開していました(まだあります)。そのうち1つであるeveは、Windowsの環境変数を編集するソフトでで、自分にとっての必要性から生まれました。長い間Windowsの環境変数変更のUIはすごく使いづらくて、環境変数って長くなりがちなのに一行分のテキストボックス内で編集しないといけなかったんですよね。特にPathをたくさん書くときが顕著で、区切り文字のセミコロンを目を皿のようにして探さなければいけませんでした。
eveでは、保存するときにセミコロンでつなぐので、各Pathを別々に編集することができるようにしました。さらに、当時はプログラム開発のために環境変数を書き換えることが結構頻繁にあったので、すべての環境変数をバックアップしたりそれを戻したりする機能を付けました。
ちなみに、Borland C++ Builder で作りました。

前書きがとても長くなってしまいました。
友人の勤め先で委託したシステム開発会社のエンジニアがこのeveを使っていたのを聞いた、というのが2番目の達成感エピソードです。ユーザーの声まで聞いたわけではないですが、実際に役に立っている場面を知るのは嬉しいですね。

今は仮想環境的な発想が一般的になってWindowsの環境変数をいじる機会が減ってしまったため、個人的にはもう使っておらずメンテもしていないのですが、Windows11の環境変数編集UIもそんなに改善されていないので、まだ役に立つ場面はありそうですね。
今なら、オープンソース化して、コミュニティでメンテというのもありかもしれません。

3.年賀状の宛名面自動生成

年賀状文化は加速度的に衰退しているように感じますが、私はまだ葛藤しながら少し出しています。その時に必要な作業が、住所録のメンテナンスと、宛名書きです。プログラマとしてはITを活用してやりたいのが性でしょう。年賀状ソフトというのがあっていっときは結構盛り上がったものですが、年に一度の利用ですしメンテも面倒なので個人的にはあまりお金をかけたい対象ではないです。

ということで、住所はExcelで管理して、宛名はWordで用意したテンプレートにExcelのデータを差し込みで生成・・・と長年やっていました。
しかし、Wordのテンプレート差し込みだけだとどうも満足が行きません。氏名の文字数が違うときの間を調整したいとか、住所はかなり長さが違うので2行にしたいとか、連名の人数で左右も少しずらしたいとか、です。それで毎年手作業で調整を行っていました。

妻の文の宛名印刷もこの方法で行っていたのですが、私がこの手作業を行う(行いたい)一方、なかなか取り組む時間が作れず、年賀状作成遅延の主要因になっておりました。

そこで、前述の調整も自動化したプログラムを作り、3年くらい前から切り替えました。
住所はGoogle Spreadsheetでの管理に変更し、プログラムがGoogle Spreasheet APIを使ってデータを取得します。宛先の情報を差し込んで、文字数などから各種のレイアウト調整を自動的に行って、人数分のページがあるPDFを生成します。
このプログラムはWeb API化してあり、Google Spreadsheetのメニューから選ぶだけでPDFがダウンロードされてくる、といった形に仕上げました。これで、妻は自分だけで宛名データを作れるようになりボトルネック解消です。(今は、私だけが遅延するようになりましたw)

小さいことではありますが、具体的な困りごとが実際に解消してそれが目に見えるという点が、達成感ポイントです。また役に立った相手が家族であるという点も嬉しさアップでした。

完成を意識して達成感を演出しよう

業務上のビジネス的にもっと大きな仕事はたくさんあったのですが、こうしてパッと思い出されるのは、小さくても役に立った実感が目に見える場面でした。

私の場合、もともと趣味でプログラミングを始めたので、技術や知識の獲得が面白くてかなり時間を使いました。でも、年齢を重ねて時間がより貴重に感じられるようになったことで少し意識が変わり、プログラミングが実際の役に立つことをより重視するようになりました。それは、技術的に難しければ達成しやすいということはなく、むしろいかに簡単な方法で達成できるかを見出す方が難しいと感じています。この辺りは「短く書く」ことが高速化のコツであるという点にも通じると思います。

今の経験値から振り返るなら、学びの段階から、小さいことでよいので完成させて使う、という意識で達成感を演出していく方法が良いのではないかと思います。そして、段々と大きく複雑なものに挑戦していけば、楽しくレベルアップできるはず。とはいっても、何に取り組めばいいのかはそれはそれで難しいですが、この話はまた別の機会に。

これにて御免!


この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?