投稿者「賞金首」のアーカイブ

TUMIGAMEロゴ

初めてリリースした個人開発WEBサービスのその後

久しぶりの投稿です。

随分時間が空いてしまいましたが、初めて個人開発したWEBサービスTUMIGAMEを公開したその後についてお話したいと思います。


サービス開始

2022年5月21日に公開したのですが、2ヶ月ほど見守るも利用者数は0のままだったため、2022年の7月にサービス停止しました。


再度サービス開始

サービス停止から半年経った頃、X(旧Twitter)でTUMIGAMEを使ってみたかったとの投稿がありました。

その言葉で嬉しくなった僕はすかさずコンタクトを取り「すぐさま復活させるので少々お待ちください!」と返信し、2023年2月18日に再度TUMIGAMEを公開しました。

そしてありがたいことに、TUMIGAMEのことをnoteに取り上げて頂いたのです。

https://note.com/l_v_1/n/n3f8bb4e6b39d

自分が作ったWEBサービスを記事にして頂けたこと、必要としてくれた事がとにかく嬉しかったのを今でも覚えています。


再度サービス開始からその後

今でもスローペースながらも機能追加やバグ修正などを行ってます。

2022年5月の最初の公開では2ヶ月経っても利用者が1人も居なかったのですが、2023年2月に再度公開後、現状の利用者数は45人になりました。

noteで取り上げて頂いたことと、このブログのTUMIGAME紹介記事からの流入で今でも徐々に増えている印象です。

下記の画像を見て頂くと「積みゲー 管理」で検索するとnoteの記事がTOPに、次いでこのブログが表示されていることが分かると思います。

積みゲー 管理での検索結果
積みゲー 管理での検索結果

下記はグーグルアナリティクスでのアクセス数です。

現状のTUMIGAMEへのアクセス数
現状のTUMIGAMEへのアクセス数

解析を見るとガッツリ使ってくれているユーザーさんも居るのが嬉しいです。

使ってくれている人が居るというのはやはりモチベーションアップに繋がります。

それと同時に「安易にサービス停止できないな…」というプレッシャーもあります。


最後に

まだまだ使いづらい部分やUIがイケてなかったりするので、どんどん改修していきたいと思います。

同じように個人開発をされている方、一緒にがんばりましょう。

この記事が少しでも参考になったのなら嬉しいです。

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

ノートPC

個人開発をする上で参考になる人やブログYoutubeについて

どういうアプリを作れば売れるだろう?ヒットするだろう?

個人開発はどうやって進めれば良いんだろう?

アイデアはどのように出せば良いんだろう?

こういった悩みを抱えている人は多いと思います。

今回は僕が普段参考にしている人やブログ記事、Youtube等について紹介したいと思います。


参考にしている人

入江 慎吾さん

ご存知の方も多いと思います。

プログラミングやWEBデザインなどを学びたい人とメンター(教える人)のマッチングサービスMENTAというサービスを展開されています。
https://menta.work/

このMENTAというサービスも個人で開発されたそうですが、月に140万円の収益を生み出すサービスにまで成長させたそうです。

主に個人開発に関連した情報をYoutubeやTwitter、ブログなどで定期的に発信されており、とても参考になります。

こちらのWEBサービスの作り方の動画では、アイデア出しから競合調査、機能の洗い出しから実際の開発、集客、運営方法まで網羅されています。

何気に個人開発のこういった情報は少ないのでかなり貴重だと思います。

こちらのWEBサービスの集客方法では自分で発信し続けることの重要性をお話されています。

他にも、他の個人開発者さんをゲストで招き、インタビューされている動画などもあったりしてとても参考になります。

どの情報も個人開発者としてはかなり貴重な内容なので、ぜひチェックしてみてください
※僕もほぼ毎日チェックしています。

入江 慎吾さんのYoutubeチャンネル
https://www.youtube.com/@kojin-product

入江 慎吾さんのTwitter
https://twitter.com/iritec_jp

入江 慎吾さんのブログ
https://iritec.jp/


参考にしているブログ記事

14年かかった!個人開発で月収100万達成した話

https://note.com/codemesi/n/n122513c4a453

専業で個人開発をされているSiROさんの記事です。

アイデア出しからジャンルの選別方法、考慮すべきサービス設計など、個人開発する上で知っておきたい情報がすべて載っています。

印象深かったのが「いきなりユーザ投稿型サービスは無理ゲー」の項目です。

掲示板やSNSのような人が集まらないと面白くならないようなサービスは、やはり集客がかなり難しいようで、大体失敗しているとのことです。

他にもユーザーとの交流やTwitterの運用方法、全サービスのPV数やリリース後にバズった場合のアクセス数をグラフ化していたり、ランニングコストなんかも書かれています。

14年かかったというだけあり、かなり有益な情報となっています。

僕もこの記事を何度も見返しては参考にさせて頂いています。

SiROさんのTwitter
https://twitter.com/codemesi


まとめ

思った以上に少なかったですね…。

とはいえ、情報が絞れてこれはこれで良いのではないかなと個人的には思います。

エンジニア歴も長く、月に140万円達成したサービスを作られた個人開発者の入江 慎吾さん。

月収100万円達成した個人開発者のSiROさん(あまり積極的に個人開発に関する情報を発信されていなかったため、記事のみピックアップさせて頂きました)

個人開発の進め方や収益化の方法、アイデア出しなどかなり勉強になるのでぜひチェックしてみてください。

関連記事

個人開発(WEBシステム)の進め方

個人開発アプリの集客方法

ボツにしたアイデアと今後の個人開発について

個人開発でボツにしたアイデア

プログラミング画面

Dockerでapt-get: command not foundエラーの解消法

dockerでmysql8.0イメージをビルドする際に、以前までは成功していたんですが、下記のエラーが表示されるようになりました。

 > [tumigame_db 2/5] RUN apt-get update:
#0 0.158 /bin/sh: apt-get: command not found

どうやらapt-getが存在しないために発生しているエラーのようです。

結論から書くと、ベースイメージにdebianを指定することで解消されました。

# FROM mysql:8.0
FROM mysql:8-debian

この-debianを指定しないと、ディストリビューションがoraclelinuxとなってしまい、apt-getが使えなくなってしまうようです。

公式のサポートしているタグのリンクを辿ると、oraclelinuxとdebianの2つがディストリビューションとして定義されていました。

https://hub.docker.com/_/mysql

docker hub mysql公式イメージのサポートタグリスト
docker hub mysql公式イメージのサポートタグリスト

下記が8.0.29、8.0、8、latest、8.0.29-oracle、8.0-oracle、8-oracle、oracleのいずれかで定義した際のベースイメージです。

リンク先のgitで管理されているDockerファイルからも読み取れます。

mysql8 ベースイメージoraclelinux
mysql8 ベースイメージoraclelinux

下記は8.0.29-debian、8.0-debian、8-debian、debianのいずれかで定義した際のベースイメージです。

mysql8 ベースイメージdebian
mysql8 ベースイメージdebian

いつの間にかビルドが通らなくなっていたので、どこかのタイミングでベースイメージがdebianからoraclelinuxへ切り替わったのかもしれませんね。

短いですが、今回はこれで終わりにしたいと思います。

最後まで読んで頂きありがとうございます。

プログラミング画面

Mac(M1)向けFlutterのインストール方法

環境としてはmacOS Monterey12.1(Apple M1)にインストールした際の方法になります。

M1じゃないMacでもこの方法でインストールできると思います。

Flutterのインストール方法は大きく分けて、公式のSDKをダウンロードして設定する方法とbrewを使った方法の2つがあります。

この記事ではbrewを使ったインストール方法になります。

※Homebrew、Visual Studio Code、Google Chromeはインストール済みの前提です。


Flutterのインストール

依存パッケージなどは後ほど「flutter doctor」コマンドを使って表示されたものを順次入れていけば良いので、まずは下記コマンドでFlutterをインストールします。

brew install flutter

下記のようなメッセージが表示されれば成功です。

==> Installing Cask flutter
==> Linking Binary 'dart' to '/opt/homebrew/bin/dart'
==> Linking Binary 'flutter' to '/opt/homebrew/bin/flutter'
🍺  flutter was successfully installed!

依存パッケージの確認

下記コマンドで必要となるパッケージを確認します。

flutter doctor

そうすると下記画面のようなメッセージが表示されます。

「flutter doctor」実行後の画面
「flutter doctor」実行後の画面

メッセージを確認するとAndroid toolchain(Android Studio)とXcode(XcodeとCocoaPods)をインストールする必要があるので、これらをインストールしていきます。


Xcodeのインストール

App Storeから「xcode」で検索してインストールします。

※インストールが完了するまで2時間ぐらい掛かりました…。気長に待ちましょう。

インストールが完了したらそれで終わりではなく、開いてライセンス契約に同意する必要があります。

Xcodeライセンス契約同意画面
Xcodeライセンス契約同意画面

「Agree」で同意して進めます。

完了したら下記コマンドを入力し、初期設定を済ませます。

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch

Cocoa Podsのインストール

下記コマンドを入力してインストールします。

sudo gem install cocoapods

下記のようなメッセージが表示されれば成功です。

Done installing documentation for concurrent-ruby, i18n, tzinfo, zeitwerk, activesupport, nap, fuzzy_match, httpclient, algoliasearch, ffi, ethon, typhoeus, netrc, public_suffix, addressable, cocoapods-core, claide, cocoapods-deintegrate, cocoapods-downloader, cocoapods-plugins, cocoapods-search, cocoapods-trunk, cocoapods-try, molinillo, atomos, colored2, nanaimo, rexml, xcodeproj, escape, fourflusher, gh_inspector, ruby-macho, cocoapods after 15 seconds
34 gems installed

Android Studioのインストール

下記コマンドを入力してインストールします。

brew install android-studio

下記のようなメッセージが表示されれば成功です。

==> Installing Cask android-studio
==> Moving App 'Android Studio.app' to '/Applications/Android Studio.app'
🍺  android-studio was successfully installed!

Android SDKのインストール

ここまで問題なくインストールできたら、一旦「flutter doctor」で確認します。

flutter doctor

Android Studioを初めてインストールした場合、おそらく下記のようなメッセージが表示されると思います。

Command-line Toolsが無いというエラー画面
Command-line Toolsが無いというエラー

Command-line Toolsが無いと表示されているため、Android Studioからインストールを行います。

Launchpad等からAndroid Studioを起動します。

初回起動すると、下記画面のようにライセンス契約に同意するよう求められるので、すべてAcceptを選択してFinishを押下して進めます。

Android Studioライセンス契約同意画面
Android Studioライセンス契約同意画面

起動後、Android Studio → Preferences…を開き、Appearance & Behavior → System Settings → Android SDKを開き、SDK Toolsタブを選択します。

Android SDK Command-line Tools (latest)にチェックを入れてApplyを押下します。

参考記事(https://qiita.com/rikupo/items/5999a67cd6b4806830ea)

Android SDK Command-line Toolsインストール画面
Android SDK Command-line Toolsインストール画面

ここまで完了したら、最後に下記コマンドで残りのライセンス契約に同意します。

flutter doctor --android-licenses

Accept? (y/N):と聞かれるので、問題無ければyで同意していきます。

下記のようなメッセージが表示されれば完了です。

All SDK package licenses accepted

再度依存パッケージの確認

「flutter doctor」で無事にすべての依存パッケージがインストールされているか確認します。

flutter doctor

下記のように「No issues found!」のメッセージが表示されていれば無事完了です。

Flutter依存パッケージすべてインストール済み
Flutter依存パッケージがすべてインストールされている

Flutterの環境構築は以上で完了ですが、念のためHelloWorldしてみます。


HelloWorld!で確認する

HelloWorldする用の適当なディレクトリを作成します。

mkdir -p ~/Flutter/Sample

Visual Studio Codeを起動します。

まずは公式で用意されているFlutterプラグインをインストールします。

Extensionsメニューから「Flutter」で検索し、一番上に表示されるFlutterをインストールします。

Visual Studio CodeのFlutterプラグイン
Visual Studio CodeのFlutterプラグイン

Flutterプラグインのインストールが完了したら、Open Folder…から作成したディレクトリを指定して開きます。

「main.dart」というファイルを新規で追加し、公式から拝借した下記サンプルソースを貼り付けます。

void main() {
  for (int i = 0; i < 5; i++) {
    print('hello ${i + 1}');
  }
}

Flutterプラグインが正常に動作していれば、エディタウィンドウにRun | Debugが表示されているはずなので、Debugを押下して実行します。

エディタウィンドウにRun | Debugの表示
エディタウィンドウにRun | Debugの表示

コンソールに上記画面の結果が表示されれば成功です。


終わりに

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

ことわざを紹介して終わりたいと思います。

千里の道も一歩から(せんりのみちもいっぽから)

大きなことを成し遂げるには、手近なところから着実に始めていくことが肝要であることのたとえ。

https://kotobank.jp/word/%E5%8D%83%E9%87%8C%E3%81%AE%E9%81%93%E3%82%82%E4%B8%80%E6%AD%A9%E3%81%8B%E3%82%89-1729075

モチベーションが上がる有名なことわざですね。

お互いFlutterの勉強がんばりましょう。

スマートフォン

[雑記]ユーザーフレンドリーなアプリ/サービス

あくまで雑記なので、あまり参考にならない記事になるかもしれませんのでご了承ください。

普段WEBサービスをメインに個人開発をしています(仕事でもWEBサービス開発をしています)

サービスのアイデアを書きなぐっているネタ帳を見ていると「これはスマホアプリにすべきだなあ」というものや「こっちはWEBサービスが良いかな」といったように、機能要件によって展開すべきプラットフォームが異なることが分かります。

今回はユーザーフレンドリーなアプリやサービスの場合、どのプラットフォームで展開すべきか?という考察記事になります。


PC / スマホのブラウザからアクセスするWEBサービス

基本どの端末でもブラウザからアクセスできるといったWEBサービスは王道なプラットフォームだと思います。

しかし、このパターンはPCからアクセスした場合「一覧性が上がる」「操作性が向上する」のようなメリットが無いと意味が無いので、これらの要素が無い場合はスマホアプリのみにすべきだと思っています。

すべきというとちょっと語気強いですが…その方が良いと思います。

仮にPCとスマホでのアクセスで視認性も操作性も変わらず差別化できないのであれば、類似のスマホアプリがリリースされた場合、そっちにユーザーを取られてしまうと考えているからです。

根拠としては、スマホアプリはHOME画面にショートカットアイコンが配置されるため、ユーザーが開きたい時に1タップでアクセスすることができるので、ユーザーの負担は最小です。

スマホのHOME画面

※スマホアプリはHOME画面にアイコンが自動で配置されるため、1タップで起動できる。

URLのショートカットをHOME画面に配置することもできますが、ユーザーがそれを調べて実施する労力は持ち合わせていないことの方が多いです。

URLショートカット作成画面

※iPhoneのSafariを使った場合の画面。
※iPhoneの場合GoogleChromeだと「ホーム画面に追加」メニューが無いためできません。

そのため、自ずとユーザーは使いやすい方であるスマホアプリの方に流れてしまう可能性が高いと思っています。

※ちなみに下記は個人開発した積みゲー管理WEBサービスTUMIGAMEの画面レイアウトです。PC版はスマホより表示件数を多くして一覧性を上げています。


PC / スマホのブラウザおよび専用スマホアプリからアクセスするサービス

ちょっとややこしいですが、PCとスマホのブラウザからもアクセスができ、専用スマホアプリからのアクセスもできるハイブリッドなサービスのことを指しています。

専用スマホアプリの場合はブラウザ経由ではなく、ネイティブ側のUIで表示されるイメージです。

スマホアプリでの操作性は基本レスポンスも早いしプッシュ通知等も使えるため、上述した「PC / スマホのブラウザからアクセスするWEBサービス」より格段にユーザーフレンドリーな作りになります。

懸念点としては開発負担が大きいことですね。

WEB側とアプリ側とで実装する必要があるので、単純に開発と運用の工数が膨れ上がります。

なので、スマホアプリでないと駄目な理由が明確に無いのであれば、無理にアプリ開発しなくても良いかなと思います。

例として、プッシュ通知が必須、ゲームの実績機能(Appleの場合はGame Center、GooglePlayの場合はリーダーボード等)必須とかでなければ、アプリ開発せずともレスポンシブ対応したWEBサービス(上述したPC / スマホのブラウザからアクセスするWEBサービス)に留めておいて良いのかなと個人的には思います。


スマホアプリ

1つの画面内の情報量が少なく、小さい画面内で収まるのであればスマホアプリのみがベストプラクティスだと思います。

上述したHOME画面にアイコンが設置されるため、アクセスも早いしネイティブUIで基本サクサク動きますしね。


まとめ

ざっくりまとめると、開発と運用工数に余裕があればWEBとスマホアプリ、無ければWEB、情報量が少なく小さい画面で収まればスマホアプリという感じが良いかなと思いました。

最後にことわざを紹介して終わりたいと思います。

商いは門門(あきないはかどかど)

商売のこつは客を観察してその客に合った物を売ることだということ。

https://kotowaza.jitenon.jp/kotowaza/392.php

このことわざの通り、何がユーザーにとって一番良い形か見極めて提供できるようになりたいですね。

短いですが、今回はこのあたりで終わりたいと思います。

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

幸福な女性

幸福になるにはどうすればいいか?

どうすれば幸せになれるのか?どう生きれば良いのか?などをよく思案しているのですが、その答えについて固まってきたのでまとめてみたいと思います。

大層なテーマを語れるほどの人間ではありませんが「ふーん…そういう見解もあるんだね」くらいに読んで頂けると嬉しいです。


幸せとはどういう状態か?

幸せを感じる瞬間は人それぞれで、人によっては読書している時だったりゲームしている時だったり、子供と遊んでいる時だったりお酒を飲んでいる時だったり色々あると思います。

「幸せを感じる瞬間」と前置きをしている通り、これらは一時のものであるので永続的な幸せにはなり得ません。

じゃあ永続的な幸せとはどういう状態か?幸せの定義はなんなのか?と言うと、僕を含めてまわりの人を観察していると「誰かに認められている状態」だと確信しています。

一生懸命書いた絵を親に見てもらいたい子供のように、その本質は生まれてから死ぬまで変わらないのだと思います。


認められている状態とは?

端的に言うと「自分という人間が必要とされていると感じる」状態だと思います。

たとえばですが「教えたい」のと「教えられたい」ので言えば、どちらの気持ちの方が強いでしょうか?

おそらく前者の方を選択する人が多いと思います。

人は自分が持っている知識を教えたい生き物で、教えている = 必要とされていると感じられるからなのでしょう。

他にも、たとえば会議中に「君の意見を聞かせてくれ」なんて言われたら自分の意見を必要としてくれているんだと嬉しくなりますよね。

Twitterやインスタでもいいねが付けばそれだけで嬉しいし、話しかけられたりしたらもっと嬉しいし、有名人に反応貰えたら天にも昇る心地ですよね。

友人や知人、恋人や家族との関係性もしかり、互いに必要としているからこそ成り立つのだと思います。


どうすれば幸せになれるのか?

前置きが長くなりましたが「認められている状態」を目指せば良いということは分かりました。

じゃあどうやってこの「認められている状態」を作り出すか?ですが「先ず人を認める」ことが幸せになる方法だというのが僕の見解です。

「与えよ、さらば与えられん」という聖書にある有名な言葉がある通り、人に認められたいなら、先ずはこちらから誠意を持った態度で人と接する、その人との関係性を大切にすることが大事だと思うのです。

※この言葉の本来の意味は誰かに与えれば誰かから与えられる…ではなく、与えることで神の祝福が得られるといった精神的な報酬を指すようですが、いったんそれは置いておきます。

人に優しくするとお礼が返ってくる一連の流れは、端的にこれを表していると思います。

誰かに優しくすれば優しくされるし、愛せば愛してくれます(例外もありますが…)

真摯に人と接する

幸せになるにはこれだけで良いのだと思います。


具体例

実際にどうすれば良いのか分からない方も居るかもしれません。

僕が実際に効果があったものや気をつけていることをリスト化したので、参考にして頂ければと思います。

  • ありがとうを言う
  • こちらに否がある場合はちゃんと謝る
  • Twitter(SNS)では積極的に話しかけたり、いいねしたりする
  • Twitter(SNS)では基本自慢しない
  • 既に知っている情報を教えてもらった場合、知らないフリをして助かったとお礼を言う
  • 話すより聞く方をメインにする(あまり話さないタイプの人の場合はこの限りではないです)
  • 相手が話した内容のリアクションをちょっと大げさに取る(これは無意識ですが、好印象な気がしています)

意識的なものもありますし無意識なものもあります。

共通しているのは「不快な思いをさせない」ことと「気持ちよくなってもらう」の2点ですね。

この2つを抑えておくと円滑な人間関係を結べるかもしれません…(基本的にそんなに人と関わらないので偉そうに言えませんが…)


最後に

ここまで偉そうに書いておいて恐縮ですが、僕自身は極力誰とも繋がらずひとりになるよう努めています。

それは個人開発とこのブログに集中したいためなので、時と場合によっては敢えて人と繋がらない選択をした方が良い時もあるのかなと思ったりもします。

幸せになりたいのなら人と接し、結果を残したいのであればひとりになる…ということなのだろうなと思います。

最後にことわざを紹介して終わりたいと思います。

禍福己による(かふくおのれによる)

禍(わざわい)や福は己の心掛け次第という意味のようです。

良いことわざですね。

悪いことわざが無いだけかもしれませんが。

それでは今回はこのあたりで終わります。

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

少しでも参考になりましたら幸いです。

デジタルマーケティング

個人開発アプリの集客方法

過去記事でも書きましたが、個人開発サービスの集客は相当難しいと感じています。

ブログやサイトのように日々コンテンツが追加されるのであれば、その分グーグル検索でHITするために必要なキーワードが増えるので有利ですが、ログイン必須のサービスの場合、ログイン後のURLはクローラに徘徊してもらえないので、圧倒的にキーワードのボリュームが不足しSEOの面でかなり不利です。

そんな絶望的に集客が不利なサービスでも、少しだけ活路が見いだせたので、今回はその方法と方針について紹介します。


ブログで個人開発アプリを紹介する

先日、個人開発WEBサービスのTUMIGAME(積みゲー管理WEBアプリ)の紹介記事をこのブログ内にて投稿しました。

そこからのアクセスは今のところありませんが、ターゲットであるユーザーが検索するであろう「積みゲー 管理」のキーワードで検索したところ、検索結果上位10件以内に表示されていました。

「積みゲー 管理」の検索結果
「積みゲー 管理」で上から9件目に表示

このことから、冒頭でお話したコンテンツボリュームの不足をブログが補うような形で集客できる見込みがあることが分かりました。

「ブログでアプリを紹介して集客する」方法はかなり有効であるというのが僕の見解です。


気をつけること

ブログで個人開発アプリを紹介し、そこからの流入を狙うのが有効なことは上述しましたが、当然ブログを日々更新して続けないことには成立しません。

なので、ブログを更新し続けていることが大前提となります。

個人開発の作業中にブログを続けるのはしんどいと思うので、リリース後はブログをメインに作業するのが良いかもしれません。

他に気をつける点として、紹介記事を書くときは実際に使ってくれる人をターゲットとした記事にした方が良いと思います。

上述したアプリの紹介記事については、技術的な内容や開発時の苦労話などは一切入れていません。

これは「積みゲー 管理」で検索して、紹介記事をクリックして読んだ時のことを想定しているためです。

ここでアプリの機能以外の話をしてしまうと、利用するかもしれないユーザーにとっては不要な情報となり、それを理由に使ってもらえなくなる可能性があります。

そのため、個人開発アプリの紹介記事を書く際は実際に利用してもらえるかもしれないユーザーに響くような内容にすることをおすすめします。


とにかく露出を増やす

個人開発アプリの集客方法について色々な方の記事を読んでいるのですが、共通していることは「知ってもらうためにとにかく色々なところで告知する」です。

ブログにアプリの紹介記事を書く以外にも、TwitterやFacebook、noteやqiitaに書くようにするのが良いみたいです。

ブログで告知はしていますが他のSNSは活用できていないため、今後のためにも運用したいと思います。


まとめ

アプリやサービスの集客方法は、ダイレクトアクセスを狙うより、ブログやTwitter、Facebook、note、qiita等の紹介記事を経由しての流入を試みるというものでした。

割と当たり前のことですね…。

紹介記事のタイトルにターゲットであるユーザーが検索するであろうキーワードを入れることを忘れないようにしましょう。

※積みゲーを管理したいユーザー向けのサービスだったら「積みゲー 管理」筋トレ+食事の管理をしたいユーザー向けのサービスなら「筋トレ 食事 管理」など。

あとは告知する際に「押し付けがましくうざい」感じにならないようにするのも大事だと思います。

特にTwitterやFacebook等のSNSでは、宣伝がうざいと思うとブロックしたりミュートしたりしたくなりますからね…。

最後にことわざを紹介して終わりにしたいと思います。

牛の歩みも千里(うしのあゆみもせんり)

何事もなまけずに努力を重ねれば、最後には成果が得られるというたとえ。足ののろいウシでも歩みを重ねれば、やがて千里にも至ることから。

https://www.kanjipedia.jp/kotoba/0001418100

努力を続けたくなる良いことわざですね。

努力系のことわざは牛が出てくることが多いですね。

それでは今回はこのあたりで終わりたいと思います。

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

少しでも参考になりましたら幸いです。

プログラミング画面

Laravel9でのsitmap.xmlの実装例(コピペOK)

Laravel9でのライブラリを使わない実装例になります。

ほぼコピペできるような内容なので、良かったらご活用ください。

現時点ではLaravel9に対応していないようですが、Laravel8以下であればlaravel-sitemapの利用をおすすめします。


ルーティングの定義

use App\Http\Controllers\SitemapController;

Route::get('/sitemap.xml', [SitemapController::class, 'index']);

コントローラーの定義

例として、ログイン / プライバシーポリシー / お問い合わせページのsitemap.xmlを定義します。

class SitemapController extends Controller
{
    public function index()
    {
        $data['data'] = [
            [
                'loc' => route('login'),
                'lastmod' => '2022-05-03',
                'changefreq' => 'weekly',
                'priority' => '1.0'
            ],
            [
                'loc' => route('privacy.policy'),
                'lastmod' => '2022-05-06',
                'changefreq' => 'weekly',
                'priority' => '0.8'
            ],
            [
                'loc' => route('contact'),
                'lastmod' => '2022-04-18',
                'changefreq' => 'weekly',
                'priority' => '0.8'
            ],
        ];
        return response()->view('sitemap.index', $data)->header('Content-type', 'text/xml');
    }
}

ビューの定義

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    @foreach ($data as $d)
        <url>
            <loc>{{ $d['loc'] }}</loc>
            <lastmod>{{ $d['lastmod'] }}</lastmod>
            <changefreq>{{ $d['changefreq'] }}</changefreq>
            <priority>{{ $d['priority'] }}</priority>
        </url>
    @endforeach
</urlset>

表示

/sitemap.xmlへアクセスして、下記のような表示になっていれば正常です。

※下記はhttps://localhost:8080/sitemap.xmlへアクセスした時の表示です。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<script/>
<url>
<loc>http://localhost:8080/login</loc>
<lastmod>2022-05-03</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>http://localhost:8080/privacy-policy</loc>
<lastmod>2022-05-06</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://localhost:8080/contact</loc>
<lastmod>2022-04-18</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

終わりに

Controllerのheaderメソッドで’text/xml’を指定するのを忘れないようにしてくださいね。

長文書くのがちょっと面倒だったので、今回はsitemap.xmlを生成する実装例を紹介しました。

最後にことわざを紹介して終わりたいと思います。

手を抜く(てをぬく)

しなければいけないことをやらないこと。または、力を尽くさず、いい加減にすること。

https://kotowaza.jitenon.jp/kotowaza/5383.php

短いですが、今回はこのあたりで終わりたいと思います。

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

少しでも参考になりましたら幸いです。

TUMIGAMEロゴ

積みゲー管理WEBアプリTUMIGAMEとは?

先月個人開発制作物である積みゲー管理WEBアプリTUMIGAMEについて、どういうサービスなのかを紹介したいと思います。

TUMIGAME公式Twitter


どういうサービスか?

所有しているゲームの管理や購入予定のゲームの管理などができるサービスです。

ログインすると「積みゲー」「プレイ中」「クリア済み」の3つのステータスが用意されており、これらのステータスに所有しているゲームを追加して管理を行います。

※ステータスは自由に追加、編集が行えます。

下記はゲーム追加画面です。

TUMIGAME ゲーム追加画面
ゲーム追加画面

下記はダッシュボード(ゲームメニュー)画面です。

ここでどんなゲームがあるかを一覧で見ることができます。

右上の検索バーから、ゲームのキーワードで検索が行えるようになっています。

TUMIGAME ゲーム管理画面
ゲーム管理画面

Googleアカウント対応

TUMIGAMEは、Googleアカウントで利用することができます。

Googleアカウントでのログイン

何ができるのか?

以降はどういう機能があるか?またその機能の詳細について紹介します。

ゲーム追加機能

TUMIGAME ゲーム追加画面
ゲーム追加時の画面

ゲームを追加する際に、下記を入力します。

※追加できるゲームの数は現状、無制限です。

ゲームタイトル

ドラゴンクエストやファイナルファンタジー等のゲームタイトル名称をここで入力します。

プラットフォーム

一般的なゲームプラットフォームである下記から選択します。

ゲームを追加する際にゲームのプラットフォームを選択できます。
デフォルトで下記から選択できます。

Switch, PS4, PS5, XSX, Steam, iOS, Android

上記以外にも追加したいプラットフォームがある場合、プラットフォームを追加できます。

プラットフォーム追加画面
プラットフォーム追加画面

ステータス

追加するゲームのステータスを選択します。

積みゲーの状態なら「積みゲー」プレイ中であれば「プレイ中」などといった感じで、そのゲームの現在のステータスをここで選択します。

ステータスメニューから自由に追加、編集が行えるため「購入予定」「売却予定」などのステータスを追加し、管理することができます。

画像

ゲームのパッケージ写真やスクリーンショット等の画像をアップロードできます。

既にアップロード済みの画像から選択することもできます。

画像アップロードが面倒な場合は「画像無し」も選択できます。

プレイ時間

現在のプレイ時間を入力できます。

入力しない場合、ゲーム管理画面上でのプレイ時間が非表示になります。

メモ

ちょっとしたメモを記入できます。

現在のトロフィーや実績状況や、攻略情報、ストーリーをどこまで進めていたか等の情報を入力することを想定しています。


ゲーム管理機能

追加したゲームを管理できます。

TUMIGAME ゲーム管理画面
ゲーム管理画面

ステータス、プラットフォームでの絞り込み以外にも、右上の検索バーからゲームタイトルを検索することができます。

1ページあたり40個のゲームが表示されます。

スクロールすればさらに40個のゲームを読み込んで表示します。


ステータス追加 / 編集機能

TUMIGAME ステータス追加画面
ステータス追加時の画面

最初にログインすると「積みゲー」「プレイ中」「クリア済み」の3つのステータスがあらかじめ用意されていますが、これとは別に追加や編集が行えます。

「購入予定」や「売却予定」などを追加することにより、より細かくゲームを管理することができます。


画像追加 / 編集機能

ゲームを識別するための画像をアップロードできます。

ゲーム追加時にアップロードすることもできますが、画面メニューからもアップロードが行えます。

TUMIGAME 画像アップロード画面
画像アップロード時の画面

こんな人に使ってほしい

  • 積みゲーを管理したい
  • 所有しているゲームを一覧で管理したい
  • 購入予定のゲームリストを作りたい
  • 所有しているゲームからやりたいゲームが無いかを確認したい(購入するゲームを抑制したい)
  • トロフィーコンプ、実績全解除しているゲームをリスト化したい

こういうお悩みがありましたら、ぜひTUMIGAMEを使ってみてください。

PC、スマホから無料でお使い頂けます。

TUMIGAME公式Twitter


最後に

不明点などありましたら気軽にご質問頂けると嬉しいです。

今回は個人開発物の宣伝記事になりましたが、技術的な内容についてのご質問でも歓迎です。

お答えできる範囲で回答させて頂きます。

今回は宣伝にちなんで、このことわざで締めたいと思います。

名を広める(なをひろめる)

その名が世間で広く知られるようになるようになること。

https://kotowaza.jitenon.jp/kotowaza/6112.php

そのまんまですね。

というかこれ、ことわざなんですね。

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

プログラマー

[雑記]在宅勤務のありがたみと孤独感

今回は私事の雑記でお茶を濁します。


2ヶ月ぶりの出社

仕事は都内でWEBサービス開発しており、ほとんどフルリモートですが先日2ヶ月ぶりくらいに出社しました。

朝に電車に乗るのは半年ぶりくらいでしたが、今はすっかり満員電車に戻ってましたね…。

そして出社したらフロアに居る人は知らない人だらけで完全にアウェイな感じでした。

出社した時点で電車通勤 + 徒歩で結構疲れていたのですが、社内のゴミゴミとした環境内での作業は窮屈でとても疲れました。

僕は神経質なので「誰かが居る」環境での作業は結構なストレスが溜まります。

「背伸びしたいけど後ろ通る人が居たら…」とか「人目をはばからずあくびしたい…」とか「オナラ出そうだけど我慢しなきゃ」とか余計なことを考えてしまいます。

他にも、誰かから話しかけられるとどう返事して良いか分からず、汗かきながらしどろもどろになったりします。

仕事を終え帰宅する時にはドッと疲れが出たんですが、その時に「もう在宅勤務でないと仕事できないカラダになってしまったんだな」と心底思いました。

人目をはばからずあくびが出来るしオナラを我慢する必要もない、作業が一段落したら小休止でちょっと横になったりできるし。

何より往復で2時間掛かる通勤時間が無いというのがとても有り難いです。

外へ出るためにそれなりの準備をして服を着て…というのも必要ないですし、女性の場合は化粧しなくても良いというのもメリットですよね。

かなり効率化された働き方であることは間違いありませんね。

とはいえチーム内のコミュニケーションが円滑に行えないため、組織で働く以上は週に1回くらい出社するのがベストかもしれません。


在宅勤務時の孤独感

それ以外にも在宅勤務のデメリットとして「孤独」というのが挙げられます。

これは僕も強く感じていました。

誰とも話さずに1日を終えることもあり「誰でも良いから話したい」と発狂しそうになります。

贅沢な悩みですが、これは精神的に相当参ります。

コロナ前と比べてうつ状態の人の割合が2倍以上になっているというニュースも見ましたが、この孤独感と因果関係がまったく無いわけではないでしょう。

あまりに孤独で辛いとき、本当はいけないのでしょうが僕は出社してました。

気が狂いそうだったので…。

ただこの孤独感を感じない時もありました。

それは忙しいときです。

作業に没頭している時ですね。

やはり没頭している時は集中しているため、余計な感情が付け入る隙がまったくないんですよね。

在宅勤務中でも無茶なスケジュールで相当忙しかった時があるんですが、その忙しかった時の方が肉体的にも精神的にも調子が良かったです。


暇が精神を蝕む

これは事実だと思います。

なにかをしていない時はいろんなことを考えちゃいますよね。

「どうすれば幸せになれるんだろう?」「どう生きていくのが正解なんだろう?」こういう考えをしているとそのうち「なんで自分は何者でもないんだろう」「なんでこんなにつまらない人生なんだろう」とか、どんどん負の感情で埋まっていきます。

これは身を持って経験しています。

「うつ病の人は何も考えずただ休んだほうが良い」と世間では言われていますが、果たしてそうなのだろうか?と疑問に思うこともあります。

確かに、仕事とか人間関係に起因する場合において、その環境から離れてすぐの時はそれが正解なのだろうとは思います。

ですが、この考え方には違和感を覚えます。

良い薬は忘れさせてくれる何か、夢中になれる何かだと考えています。

もっと抽象度を上げると「何かをしている」状態なので、何もしないで良い環境を長く続けることは、もっと悪い方向へいってしまうのではないかと危惧しています。

またタチの悪いのが、人は基本的に怠惰なので、自発的にタスクを自分に課すことはできずに暇を繰り返し、中々うつ症状から脱却できないのではないかと思っています。

その何かを見つけるのはなかなか難しいですが、とりあえずブログをはじめてみるのをおすすめします。

毎日更新とかしていると自己肯定感も上がり楽しくなってきます(僕がそうでした)

あとは身体を動かした方が良いのは言うまでもないので、Nintendo Switch Sportsするなり筋トレするなりを習慣化すると良いと思います。

なんだかよく分からない雑記になってしまい恐縮ですが、最後に精神にまつわる有名なことわざで締めたいと思います。

健全なる精神は健全なる身体に宿る(けんぜんなるせいしんはけんぜんなるからだにやどる)

読んで字の如く健全な精神であるには健全な肉体である必要がありますよ、ということわざです。

乱文な記事を最後まで読んで頂きありがとうございました。

少しでもお役に立てたのなら幸いです。