見出し画像

工数削減努力を考えればアプリのソースコード一式が気軽に入手できるストア等がもっと流行っても良さそうな気がしたから公開してみた|小さきアプリ屋の悩み

アプリ開発の高額な費用はどうやって決められているのかを、業界以外の人たちはあまり知らない。知ればとても単純だ。殆どが人件費なのである。パソコンさえあれば良いからだ。スマホすら必要ない。エミュレータ(仮想端末)でアプリはバーチャルに実行できる。

外部から見た平均的な IT エンジニアの時給はおおよそ 5000 円で(地域差は多少ある)、そのエンジニアが 1 か月 20 日間を費やした場合、

8 時間× 5000 円× 20 日= 80 万円

となり、そこに利益を乗せることになる。大体、エンジニアが 1 人 1 か月、100 万円が相場だ。

これは外部から見た金額で、とても高額だ。しかも、エンジニア不足で最近さらに高騰し始めている。

しかし実態は、時給 5000 円のエンジニアをバカ正直にアサインする企業は殆どない。時給 3000 円や 2000 円の安い、技術力の乏しいエンジニアをアサインし、上乗せした 20 万円の利益に、さらに利益を積むことが慣習になっている。

最近は人手不足で経験のない初心者に近いエンジニアが爆発的に増えてしまったので、トラブルが非常に多い。発注元は、100 万円もの大金を支払っているのに、実は 100 万円の能力のないエンジニアがサービスを開発し納品しているので、不具合が多く、技術的な言い訳をする為にエンジニアが表に出てきて、そこで金額に乖離した能力のエンジニアだったと発覚することになるケースが多々ある。

常々感じていることだが、エンジニアの学習コストは本当に高い。十数年エンジニアをやっているが、今でも毎日勉強して、新しい技術を習得しなければならない日々だ。

他人に教えている余裕はないし、そもそも、他人に教えられるようになる頃には、また新しい技術が生まれている。だから、新しいエンジニアは、自分で必死に学習するしかなく、それが実践できるエンジニアは、本当に限られている。

技術は継承されずに、同じことを繰り返している。

これはとても悪い循環を生んでいて、実際に開発現場で発生していることだが、隣に座っている人なら直ぐに解決できる問題を、そうだと気が付かずに何時間も自分で調べてしまうことがある。隣の人なら 1 時間 5000 円で解決できる問題を、自分で 4 時間 2 万円で問題解決してしまうことが多々ある。

これは技術は無数に存在し、自身の豊富な経験が問題解決の根本にあることを知っていると、尚更、誰か自分の代わりに解決できる人はいませんかと聞けないのだ。そして聞き始めたら、全ての問題をまず誰かに聞かなくてはならなくなるからだ。

そうすればいいじゃないかと思うこともあるかもしれないが、その都度、最低でも一人の仕事が止まり、一緒に問題解決を探る時間が必要になる。結果、分からない、という結論が最悪で、殆どの場合、深く調査しなければならなくなる。全知全能のエンジニアなど存在しないので、常に仕事中すらも勉強必死なのだ。

ところで、これら問題というのは、何も特許のあるような高度な技術ではない。経験と時間さえあれば、勉強さえすれば、誰でも解に辿り着く問題なのだ。

今や、Qiita などの技術サイトは散見されるが、本当に欲しい情報というのはピンポイントに見つけ出すことが難しい。一番、多いケースは、

このアプリのこの部分と同じ対応をしたいけど、実装の仕方が分からない

だろう。アプリを操作した挙動から、似たような制御の実装をウェブで探したり、試行錯誤して実装してみたり、ようやく、導き出した答えが、実は公式リファレンスに丁寧に掲載されていたことだったということも多々ある。

それを知っているかどうか、経験しているかどうか、でエンジニアに掛かる費用が大きく左右されるというのは、考えてみると、ふと、とても馬鹿馬鹿しく思えてきた。

もし、そのアプリが、特許になるような特別な技術以外の部分を公開していたなら、そのソースコードを読むだけで、解決できた問題なのだ。

例えば、解決するのに 2 日間 8 万円が掛かっていたところを、1 日の 4 万円で解決できたかもしれない。公開されたソースコードが有料で、それが 4 万円未満、3 万円だったならば、1 万円分の工数を削減できたことになる。

世の中のアプリが、ソースコードを公開していて、それが当たり前になっていれば、アプリ開発の金額は、もっと低くなり、より身近になるのではないかと思えてくる。

一人時給 5000 円で計算するのは、問題解決にどれくらいの時間を費やすか不明だからという要因も大きい。時給 5000 円のエンジニアをバカ正直にアサインしてしまうと、そのエンジニアが難しい問題に直面して、時間外の対応を余儀なくされてしまったら、請け負った側はその超過分の金額を、ダイレクトに損してしまう。

発注側の要望も同じで、「あのアプリのあの部分みたいにしてほしい」ということが多い。その実現方法が分からなければ、請け負う側はそれを一から調べる金額を多く見積もって損をしない保険とするしかない。だから、アプリのソースコードが手に入ることが当たり前であれば、請け負う側もそんな保険で高額を請求する必要がなくなるし、発注側もソースコードがあるのだから無闇に費用を搾取されないだろうと、不明瞭な高額を支払うリスクを軽減できる。

誰かが既に実現しているものを、一から同じ軌跡を辿って、同じものを実現する、改めて、なんとも馬鹿馬鹿しい金と時間の使い方だと思う。

どうせ辿り着く同じ結果・結論、それらを業界で共有して、業界の技術的なハードルを一気に下げたらいいではないか。エンジニア不足は、圧倒的に、この一から同じ軌跡を辿るコストが高過ぎるからだ。

きっと同じ思いの人たちがいると思って、アプリやサービスのソースコードを販売するプラットフォームを幾らか見つけたのだが、流行っていると思える状態ではなかった。

昨今のプログラミング学習ブームなら、この観点でももっとソースコード販売が流行っていてもおかしくないと感じる。

プログラミング学習サイトの勉強内容は、アプリ開発の全体像を掴むことが非常に難しい。それを勉強して、結局、何が実現できるのか、というのが想像できない。プロセスが逆だからだ。

実際の開発では、完成図から、何をすべきかを紐解く。プログラミング学習サイトは逆だ。基礎から学んで、それらがどこへ行き着くのか完成図を示さない。無限の可能性がある基礎勉強はゴールがなくただ疲れるだけで頭に残らない。

そういった学習サイトの問題からも、完成し実際にストアに公開されているアプリのソースコード一式が丸々手に入ることは、有意義であると思えて仕方がない。自分で一から作り上げることが最終的な理想だが、既に完成しているアプリを改造しながら学習していく方法も、かなり意味がある。

私が何も分からない無学な新人エンジニアだったとき、短期間で仕事で通用する技術を身に着けたのは、手当り次第、既存のアプリを模倣して実装することだった。

それは今も尚、新しい技術を学ぶとき、変わらない学習手法になっている。

以下に、スレッド式メモ帳アプリ『CBnotes』のソースコード一式を公開中。最新の「Android アーキテクチャ コンポーネント」を学ぶ為に一から開発したアプリだ。私が定期的に新しいアプリをリリースしているのは、こうやって新しい技術を学ぶ為という目的が殆どで、実際にアプリとして形にする学習方法が一番分かりやすく身につきやすい。


食費入力のみ家計簿アプリ「食費簿」、自慰管理アプリ「アイナーノ」、どちらも御陰様で好調です。より良いアプリ開発に役立てます。