見出し画像

起業して10年エンジニアとしてやってきたこと

今日の10年前、2013年7月2日に株式会社ヤマレコは誕生しました。
サービスは2005年から続いているのですが、私が前職の富士通研究所を退職し、会社を登記した日付になります。

会社の登記簿(一部)

記念の日なので何かを書かなきゃと思っていたのですが、考えがまとまらないので、主にエンジニアとしてしてきた仕事の振り返りをしようと思います。

1.Webサイト開発

起業した10年前、2013年頃はヤマレコとしては「アプリにそろそろ力をいれないとな」という状態で、基本的にはWebサイトがまだ主流の時代でした。

PC用のWebサイトのアクセスがピークを超え、徐々にスマホ用のWebサイトを使う人が増えてきており、スマホ用のサイトもPCサイトと同じ機能に追随できるようにスマホ対応を頑張っていました。

もともと趣味で作り始めたため、当時は技術について相談する相手もおらず、「Webサイトの作り方講座」的なWebサイトを参考にしながら、MySQL・PHP・HTML・CSS周りを独学でずっと進めてきました。

いまではスマホのアプリが主流の時代になってきたことと、Webサイト開発ができる社員が入社してくれたこともあり、自分がWebサイトの開発を直接行うことは減ってきました。
ただ、社内向けのデータ入力ツールやGIS関連など、開発のスピードが必要であったり、地理情報システムの知見を使って作るシステムはまだ自分が中心に開発をしています。

2.スマホアプリ開発

起業をするまではスマホアプリを作る余裕がなかったこともあり、ヤマレコのAPIを公開して、地図アプリを作っている他の開発者の方々に連携をしていただいていました。

起業をすることが決まり時間もできたことで、「流石にアプリを作り始めないと」と思ったのですが、どこから始めればいいのか全くわからない。
まずは登山地図を表示するだけのアプリを作ろうということで「ヤマメモ」というAndroidアプリから作り始めました。

何の情報がどこにあるのかも分からないし、本を読んで勉強するのは苦手なタイプだったので、まずは作りたいイメージを描いて、それを実現するために必要な機能をどうやって作るか、それを海外のWebサイトを中心に調べながら開発を進めていました。

その中でも、StackOverflowのWebサイトにはいつもお世話になってきました。
通常、アプリを作ってコンパイルするとよくわからないエラーメッセージが出てきます。そのエラーメッセージでGoogle検索をすると大抵のことはStackOverflowのWebサイトに質問があり、回答も載っていました。

このサイトのお陰で、なんとか自分のやりたいことを形にできるようになってきました。現在はQiitaやStackOverflowの日本語版など、日本語で調べられるサイトも増えてきました。

ちょっと話は外れますが、最近はChatGPT(GPT-4版)をとても重宝しています。短いプログラムであれば「◯◯をするプログラムをSwiftの言語で書いて」と言うとだいたい動くコードを教えてくれます。
その根拠となるアルゴリズムも合わせて教えてくれるので、回答が怪しいと思ったら根拠を調べることもできます。

また、XcodeやAndroid Studioで出てきたエラーメッセージについても、プログラム固有のところを修正して「このエラーメッセージはなぜ出ているの?」と聞くと、その原因や一般的な対処方法も教えてくれます。

先日も「このプログラムでメモリリークする可能性はある?」と自分の書いたプログラムの一部を渡すと、その原因を推測して適切なアドバイスを返してくれます。

以前は開発者の私が一人で悩んで、多くのWebサイトや公式サイトの情報見て回って、それでも理解が追いつかず、自分の思っている問題の解決方法にたどり着けないことも多くありました。このツールを使えば開発者の力が何倍にもなると実感しています。

今後は「自分でコードを書く」ということだけに拘らず、AIの作るコードと自分の知見をうまく組み合わせられる人が加速度的にアウトプットの量と質を上げていけるんじゃないかと思います。

もちろん過去のコードをベースにアウトプットしてくるので、AIが生成するコードは最新のAPIに対応していなかったり、Deprecatedになっている方法を提案してくる場合もあります。また新しい情報がネットに流れないと、AIも学習をしてくれないので、公式サイトの情報や解説ブログ、StackOverflowのようなQAサイトなど、人間が情報をアウトプットする場は今後も維持していただかないととは思います。

このようなAIに加えて、最近はXcodeやAndroid Studioによる入力補助やツールも充実していて、アプリの開発もだいぶ敷居が低くなってきたと実感しています。
もっと開発の敷居が低くなって、多くの人が自分の欲しいアプリを作れる世界が来ると面白いだろうなと思います。

3.新しいデバイスのアプリ開発

ここ数年はApple WatchやWear OSの時計のアプリ開発も行ってきました。スマホのアプリ開発と違って、地図のSDKも使えず、どう作ればいいのか、そもそも作っても性能的に役に立つのかも全くわからない状態からスタートしました。

ただ、これまでスマホのアプリで地図アプリの機能を作ってきた経験があったことから、AppleやGoogleの出している公式サイトの情報を元になんとか作りきることができました。

AppleのVision OSも公開され、今後も新しいデバイスが次々と出てくると思うとワクワクしますね。
山で使うと何ができるか、どんな問題を開発できるのか?という視点は忘れずに、新しいデバイスをどんどん試して役に立つサービスを作っていきたいと思います。

4.サーバーの維持管理

事あるごとに書いてはいるのですが、元々ヤマレコは自分が趣味で立ち上げたサービスです。最初は自分でPCパーツを組み立ててパソコンを作り、家の中で24時間365日立ち上げっぱなしの状態からスタートしています。

その流れもあって、まずハウジングで場所だけを借りて自作PCを並べる運用に移行しました。現在は物件を借りて24時間エアコンを稼働させ、バックアップも含めると30台以上の自作PCで運用をしています。

起業直後は知識不足でセキュリティが甘かったこともあり、ハッキングされてマルウェアをばらまいてしまったり、スパムアカウントに短期間に大量にスパム投稿をされてしまったり、と様々な問題に直面してきました。

システムの運用はアプリの開発以上に情報が出てこないため、どういうリソースをどう配置して、アクセスの負荷をどう分散させていくかという問題への対応もとても難しいです。
いまでもサーバーの監視システムの仕組みを作って、負荷の増減をみながらずっと微調整を続けています。

このようなことはクラウドでも同じだとは思いますが、オンプレミスの運用の場合は機器の故障や老朽化による入れ替えなど、管理するサーバーの台数が増えれば増えるほどメンテナンスに必要な費用も時間も取られてしまいます。
最近は仮想サーバーも駆使して、物理サーバーの台数をできるだけ減らす方向でシステムを見直しています。
ただストレージに関してはどうしようもないので、ある程度機器の台数も必要だと諦めています。

5.コスト管理

システムの運用には人件費、設備費、光熱費、サーバー機器の購入費用など、一定の費用がかかります。これらをいかに抑えていくのかという視点も重要です。

もともとヤマレコで収益はほとんど増えないと思っていたので、コスト対性能が最もいいと思われるオンプレミスの自作PCを選んで、それを維持してきてきました。もちろんオンプレミスのデメリットはあるのですが、クラウド運用ではこのようなサービスは絶対に維持できませんでした。

東京ではなく長野県の松本市に移住したことも、個人の生活費と事業コストの両面で有利に働きました。
固定費が少ない地域で、自分の給料を抑えつつ事業が軌道に乗るまで耐え忍ぶことが、10年間続けてこれた秘訣の一つだと思っています。

6.最後に

これからの10年は、日本全体の人口が減少し、高齢者が増えることで、山を訪れる人口はどうしても減少していくと思います。
それでもサービスを維持し続けるためには、規模が小さくても新たな価値を生み出し続ける必要があります。

コロナの影響も減ったことでインバウンドでの観光客も増えてきており、今後は多言語での情報提供が重要になってきます。
山小屋や交通期間など旅行サービス関係はすでに多言語対応が求められていますし、団体ではなく個人の登山客が増えればアプリとしても対応が必要になると思います。

富士山アプリ(Mt. Fuji)というアプリや、Japan Alps Hiking Mapというインバウンド向けの英語版の日本の登山地図アプリも作って来ています。
ヤマレコだけでは日本の登山者にしか価値を提供できないため、今後はヤマレコに加えてこのようなアプリを使ってくれる人を増やし、遭難防止や救助活動への貢献も進めていきたいと思います。

ヤマレコは、多くの投稿をしていただいているユーザーの皆さん、仲間として会社に入ってくれた社員の皆さん、サービス連携をしていただいている提携先の皆さんなど、多くの方に支えられて成り立っています。
これからも皆さんに支えていただきながら、我々のミッションである「一人ひとりの登山を最高の体験に」を実現するために努力し続けます!

最後まで読んでいただきありがとうございました!

2023年7月2日
株式会社ヤマレコ
代表取締役 的場一峰

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