2022年内に個人開発でサービスをローンチするブログ

なんちゃってプログラマーですが、「2022年内に個人開発でサービスをローンチする」ことを目標にがんばります!とはいっても、ブログはノンジャンルです。

個人開発やってみます!

生存報告

こんばんは、三日坊主です。みなさんいかがお過ごしでしょうか。 8月に宣言して、また1カ月が経ち、久しぶりの投稿です。

先月のブログタイトルを変えたときの投稿ににて、

ただ、ここで宣言することで「こいつ口ばっかりだな」って思われないためにも、まずは、週に1回を目標に書いていこうと思います。

見事に1週たりとも続いていないです。。こんばんは、口ばっかりマンです。 やはりこつこつ続けるのは難しいと思いながら、今日が30歳の誕生日なので、もう一度気を取り直してブログを書いていきたいなと思います。


個人開発やりたいぞ

ブログは続いていませんでしたが、目標にも掲げている通り、「個人開発を年内にローンチする」目標はまだメラメラと燃え続けています。 成果物はまだ皆無ですが、この間に、読書苦手な自分はいろいろと本を読みました。

書評については、今後ブログに書いていこうかなと思っています。
「スマートノート」を読んでからは、頭で思いついたことはすかさず書き起こすようになり、日記と並行してスマートノートも続けています。(これはなぜか続いています。なんでだろう?) 「個人開発~」の本では、個人開発をするにあたっての経験者の方々の実例を知ることができ、その後、「Webコミュニティ」の本(かなり古いけど)ではCGMを作るときの心得を学びました。 そして、やりたい個人開発も固まってきましたが、何から始めればいいかわかなかったので、「要件定義」と「システム設計」のわかりやすい入門本を読みました。

このおかげで、個人開発をやりたい欲は、日に日に高まっています。 ただ、自分の悪い癖で、「始める前の情報集め」に没頭してしまいます。 これは何かというと、新しいことを始める前に入念に情報を収集しすぎて、熱が冷めるorやらない理由を探して、結果的にあきらめてしまうことです。 例えば、以前バイクに乗りたいなって気持ちがあったのですが、バイクのメーカーの商品情報やカタログを集めて、情報ばかり取り寄せて、だんだんと熱が下がり、結局フェードアウトしてしまいました。

ですが、そうならないためにも、30歳を迎えた今日から少しずつ成果物をなんでもいいので残していきたいです。頭の中でとどめず、手書きノートやnotionにアイデアを書き始めたり、実際にコードを書いてみたり、ドキュメント作ってみたり、とにかくやってみることしかないのです。


個人開発のテーマ

「ユーザ同士で好きな音楽について話したり共有できるサービス」を作りたいと考えています。

私は音楽を聴くのも演奏するのも歌うのも好きです。 ある程度、音楽を聴き始めてからは、音楽レビューのサイトや、個人の方のブログからおすすめのアーティストやアルバムなどを知り、聴くことが多いです。 また、身近な人や、好きなアーティストの影響を受けた音楽を知るのも好きで、この人のルーツはこれなんだあって知るのは、とても楽しいです。 なので、この感覚を、ユーザー同士で味わえるようなサービスを作りたいと思っています。(アバウトですが)

最近、Spotify APIの存在を知り、いろいろと遊んでいたのですが、これを使えば面白いことができそうだなと閃きました。ちなみに、Spotify APIは個人での商用利用はNGですので、収益化する目標ではなく、単純に自分が使って楽しいものを作りたいと思っています。

まだ、具体的に機能の内容はお話はできていませんが、まずは小さくてもいいので一機能からローンチしたいと思います。そこから少しずつ機能を足していき(MVPってやつ?)、よりよいサービスにしたいと思います。

やりたい機能はたくさんあるので、まずは要件定義からして、コアの部分を何にするか考えて、ちょこちょこやっていこうと思います。 また、三日坊主発動するかもしれませんが、開発週報みたいなのも書けたらなあと思っています。

読んでいただきありがとうございました。 引き続きよろしくお願いいたします。

PHP ネイティブのPHPでjsonを取得する処理

ネイティブのPHPjsonを取得する処理

おはようございます。
ネイティブのPHPでPOSTされたjsonを取得する方法について備忘録です。
ネイティブのPHPって表現の仕方があっているかわかりませんが、普段フレームワークを用いてAPI実装をすることが多いので、フレームワークを用いずに、どのように取得するかを調べました。

書き方

  • Content-Type application/json でPOSTされたデータをPHP側で取得するとして、
    以下の処理でデータを取得できます。
// JSON取得
$json = file_get_contents('php://input');
$data = json_decode($json, true)

解説

  • php://input はリクエストされたbodyの生のデータを取得することができます。
  • file_get_contents()は指定したファイル、URLの内容をすべて文字列で読み込む関数です。
  • 上記の二つを組み合わせることで、リクエストされたbodyの生データを文字列にして取得できます。
  • そしてjson_decode()jsonをデコードして連想配列にします。

参考にさせていただいたサイト


あとがき

普段フレームワークでよしなにやってくれるので、いざネイティブで書き始めると、戸惑う事ばかりです。基礎は大事ですね。。

読んでいただきありがとうございました。 よろしくお願いいたします。

PHP 例外処理( try ~ catch ~ finally )の書き方

こんにちは。唐突ですが、技術の備忘録もちょこちょこ書いていこうと思います。


例外処理の書き方

プログラム内の例外処理を検知して、別の処理へ分岐させる役割を持っています。 そもそも例外処理とは、プログラムの処理中に想定外のエラーが発生された際に実行される処理のことです。

その際に、try ~ catch ( ~ finally)文、throw文を使用します。

  • 例外処理が発生しうる処理に対して、try ~ catch ( ~ finally)文を使用します。
  • tryブロック内で、throw文を記載し、例外を検知してcatchブロック内の処理へ分岐させます。

try ~ catch ( ~ finally) について

try ~ catch ( ~ finally)文の使い方は以下の通りです。

  • 例外の発生を想定する処理に対して、tryブロックで囲みます。
  • 例外が発生した場合の処理を、catchブロック内に記載します。
  • 例外処理・通常処理のどちらでも最後に実行したい処理がある場合は、finallyブロック内に記載します。

throw について

  • try ~ catch ( ~ finally)文のtryブロック内で、throw文を使用します。
  • 例外が発生した際にthrow文の処理を通すことで、catchブロックへ分岐させます。
  • 上記のthrowの処理を、投げる(スローする)と表現します。

書き方

  • tryブロック内には、対応する catchブロック もしくは、finallyブロックが存在する必要があります。
try {
    // 「例外の発生を想定する処理」を記載

    // 例外が発生した際に、例外処理を捕まえてcatchブロックへ分岐させる(=投げる、スローする)
    throw new Exception();
    // throwをした場合、tryブロック内の以降の処理は通らない

} catch(Exception $e) {
    // 「例外処理が発生した際に実行する処理」を記載

} finally {
    // 「通常処理、例外処理のどちらでも最後に実行したい処理」を記載
}
  • finallyブロックは不要であれば、記載なくても大丈夫です。
try {
    // 「例外の発生を想定する処理」を記載

    // 例外が発生した際に、例外処理を捕まえてcatchブロックへ分岐させる(=投げる、スローする)
    throw new Exception();
    // throwをした場合、tryブロック内の以降の処理は通らない

} catch(Exception $e) {
    // 「例外処理が発生した際に実行する処理」を記載

}

例文

例1

try {
    // 「例外の発生を想定する処理」を記載
    echo '処理開始\n'

    // 例外が発生した際に、例外処理を捕まえてcatchブロックへ投げる
    throw new Exception('エラー発生しました');

    echo '正常処理\n';

} catch(Exception $e) {
    // 「例外処理が発生した際に実行する処理」を記載
    // 例外メッセージを取得します。(Exception::getMessage)
    echo $e->getMessage().'\n';

} finally {
    // 「通常処理、例外処理のどちらでも最後に実行したい処理」を記載
    echo '全処理終了\n';
}

実行結果

処理開始
エラー発生しました
全処理終了

解説

  • まずtryブロックの処理を通ります。
  • throw文を通るため、catchブロックへ分岐します。
  • そのため、tryブロックの以降の文( = echo '正常処理'; )は、通りません。
  • catchブロックの処理を通り、$e->getMessage()で、投げられた'エラー発生しました'の文字を取得し出力されます。
  • catchブロックの処理を終えると、finallyブロックの処理を通るので、全処理終了が出力されます。

例2

// 引数二つを掛け算する処理
function kakezan($a, $b) {
    try {
    // 「例外の発生を想定する処理」を記載
    
    if (!is_numeric($a)) {
    // 例外が発生した際に、例外処理を捕まえてcatchブロックへ投げる
        throw new Exception('第一引数でエラーが発生しました');
    }
    
    if (!is_numeric($b)) {
    // 例外が発生した際に、例外処理を捕まえてcatchブロックへ投げる
        throw new Exception('第二引数でエラーが発生しました');
    }
    
    return $a * $b;
    
    } catch(Exception $e) {
    // 「例外処理が発生した際に実行する処理」を記載
    // 例外メッセージを取得します。(Exception::getMessage)
        return $e->getMessage().'\n';
    
    }
}

// 掛け算結果を出力
echo '実行結果:'.kakezan(1, 2).'\n';
echo '実行結果:'.kakezan('test', 2).'\n';
echo '実行結果:'.kakezan(1, 'test').'\n';

実行結果

実行結果:2
実行結果:第一引数でエラーが発生しました
実行結果:第二引数でエラーが発生しました

解説

  • 関数を実行時にtryブロックの処理を通ります。
  • 引数が数字でない場合、throw文を通るため、catchブロックへ分岐します。
  • 引数が数字でない場合は、$e->getMessage()で、投げられた'~でエラーが発生しました'の文字を結果に返します。
  • 引数が数字の場合は、正常に処理を行い、引数を掛け算した結果を返します。

参考にさせていただいたサイト


あとがき

技術系の備忘録記事を書いてみました。 何かしらかけるだろうと思って書き始めたのですが、自分は理解しているようでちゃんと理解していないことだらけだと痛感しました。 そのため、ブログでアウトプットするってのは情報整理ができて、理解において大切なことだと感じました。そして、技術ブログを書いている方々はありがたい存在だと気づかされました。 その人たちを目標に、これからもこつこつ続けてまいります。

読んでいただきありがとうございました。 よろしくお願いいたします。

ブログタイトルを変えました

ご無沙汰しております。気が付けば、3か月ぐらいブログを書いていませんでした。 というか、4月中しか書いていませんでした。

ブログタイトルを変えました

旧ブログタイトル「アウトプットじゆうちょう」から、
新ブログタイトル「2022年内に個人開発でサービスをローンチするブログ
に変更しました!

忙しいと言い訳するのは簡単なのですが、ブログをどうすれば続けられるか日々模索中であります。 その一つの案として、ブログタイトルを変えて、心機一転+書くように追い込むことで、続けるきっかけにしようと思います。

なんで変えたの?

今までを振り返り、ブログをゆるくやっていこうと思い始めたのが敗因でした。
旧ブログタイトルからわかるように、ハードルをめちゃくちゃ下げてノンジャンルに記事を書こうと思って「アウトプットじゆうちょう」としました。
しかし、このタイトルこそが私の逃げの姿勢(=ブログを書く意欲を下げる)になっていました。
そのため、私の今年の大目標である「個人開発でサービスをローンチする」を高らかに宣言しようと思います。
(今年の目標について書いた記事はこちら)

私の性格上、八方美人、いや八方向どころか64方美人ぐらい、人に見られることを気にする人間です。(直していきたい。)
人に見られてると、見栄を張って真面目に振る舞うのが得意です。いや、もはや本能的にやってしまいます。
この性格は直すべきなのですが、それを逆手(?)にとって、ブログタイトルで宣言して、自分を追い込む方法を思いつきました。

そして、このブログを見ていただいてる方はほぼいないと思いますが、このブログの人は何をしている人なのか知ってもらうことで、自分に発破をかけようという作戦です。

年内に個人開発でサービスをローンチしたい

そして、タイトルに宣言しているように、「2022年内に個人開発でサービスをローンチするブログ」として、今年中に、個人開発でサービスをローンチしたいと思います。
ちなみに、ローンチしたいサービスのアイデアは固まったので、また追々お話しようと思っています。
ただ、このブログは個人開発の内容を書くためのブログになったわけではないです。
引き続き、思いついたことをアウトプットしていきたいと思います。(技術系より雑多な内容が多くなりそう。)

と、いろいろ書いたんですが、

ってこんなこと書いていても、次の記事で「記事が1カ月空きました」みたいなことになりそうで震えております。。
ただ、ここで宣言することで「こいつ口ばっかりだな」って思われないためにも、まずは、週に1回を目標に書いていこうと思います。
そして、ブログも書きつつ、個人開発もこつこつやっていき、ローンチして皆さんに見てもらえたら万々歳です!

最後まで読んでいただきありがとうございます。
引き続きよろしくお願いいたします。

GitHubの草はやしのやり方

こんばんは。

今日はGitHubコントリビューションへの反映(=通称「草はやし」)の方法についてまとめます。
自己学習するにあたって、GitHubにてリポジトリ管理をし、
コミット・プッシュした内容は記録され、開発の記録に便利です。

GitHubのコントリビューションについて

コントリビューション

参考画像は自分のアカウントなのですが、草の少なさがもはや荒野です。
直感的にわかるかもしれませんが、1マスが1日単位になっています。
GitHubでのコミット・プッシュすれば、その日は緑色になります。
また、緑色が濃ければ濃いほど、その日の活動が多いとなります。
この緑を、「草」に表してGitHubのコントリビューション活動を通称「草はやし」と言います。
開発者の方の個人ブログを見てみると、みなさん草が生い茂っているので、
いつかは自分も草だらけにするのが目標です!!

草が生える条件

GitHub Docsに記載されていました。

・デフォルトのブランチ or GitHub Pagesブランチへのコミット
・イシューを作る
・ディスカッションを開く、ディスカッションに答える
・プルリクエストの提案、プルリクエストレビューの送信

自分は個人開発・学習に使い始めようとしていますが、
その際に、リポジトリを作って、そこでイシューを利用してTodoで管理がしたかったので、
それもコントリビューションとして反映されるみたいでありがたいです。

紐づけの手順

  1. 事前に、GitHubのアカウントを作ります。(https://github.co.jp/)
      また、Gitをインストールしておきます。

  2. GitHubにログイン後、右上の「+」アイコンから「New repository」から新しいリポジトリをつくる

  3. 「Create a new repository」画面にて、任意のRepository nameを付ける
     その他はそのままで大丈夫なので「Create repository」をクリック

  4. 作成したリポジトリダッシュボードに移動するので、リモートリポジトリのURLをコピー
  5. 以下コマンドを入力

作業を行う任意のディレクトリを用意する
例として、ドキュメントの中に開発用のプロジェクトをつくります。

C:\Users\"ユーザー名"\Documents\develop\projects

Git Bashを開きます。

# 現在地を確認 (/c/Users/{ユーザー名})
pwd
# マイドキュメントへ移動 (/c/Users/{ユーザー名}/Documents)
cd Documents/
# 新しくディレクトリを作る 
mkdir -p develop/projects
# 作成したディレクトリに移動 (/c/Users/{ユーザー名}/Documents/develop/projects)
cd develop/projects
# 新しくディレクトリを作る 
mkdir -p develop/projects
# プロジェクト用のディレクトリを作る (sampleは任意の名前)
mkdir sample
# gitの初期化(ローカルリポジトリを作成します)
git init
# 今回gitにあげるファイルを作成(なんでも大丈夫です)
echo a > test.txt
# インデックスに追加する(コミットする対象ファイルを選択)
git add test.txt
# コミットする(ローカルリポジトリに記録する)
git commit -m "first commit"
# ローカルリポジトリとリモートリポジトリ(GitHub側)の紐づけをする
git remote add origin {4.でコピーしたURL}
# プッシュする(リモートリポジトリに反映する)
git push -u origin master

そうすると、リモートリポジトリのダッシュボードを見るとファイルが反映されます!



そして、草も生えました!

雑な手順で申し訳ないですが、
Gitの使い方、基本用語について知りたい方は、以下のサイトがおすすめです!

はじめて、技術に関連した文章を書いたので、かなり時間がかかったし、
内容も分かりにくいかもしれません。質高く、わかりやすく、早くかけるようになりたいです。
ぜひみなさんも草はやしをやってみてください!

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

タイピングについて

こんばんは。

今日は自分の特技でもあるタイピングについてお話ししようと思います。

いまさっき寿司打をやってみたのですが、自分はタイピングが得意です。
このネットの海にはもっと早い人はたくさんいるかと思いますが、職場とかでは速い部類に入ると自負しています。

しかし、タイピングが速いだけでプログラミングするスピードは遅いし、記号系、数字は結局見ながら打ってしまうので、もっぱらタイピングゲームでしか役に立たないかもしれませんが、今日は得意なタイピングの話でもしようかなと思います。

(よく考えたら、ブログはタイピング早いと書くスピードが上がるから得かもしれない…!頑張って続けられるようにします!)

なんで速くなったか

数少ない 特技 の一つですが、自分の性格上、飽き性で何をやっても長続きしないです。タイピングはなぜ続けられたかというとやはり昔からパソコンでインターネットをしていたからかなと思います。

当時はHabboとかhanGameなどのオンラインチャットでやり取りすることが多かったので、ブラインドタッチはできませんでしたが、タイピングをする習慣は当たり前に身についていました。

そこからはタイピングゲームにハマりだして、ブラインドタッチを覚えて、

カチャカチャカチャ…ッターン!

とタイピングの音で威圧していました。(仕事はとろいです)

なので、何事も、好きなことだったり、日常的にやる習慣があったりすれば、自然と身についていくのかもしれませんね。ブラインドタッチの練習におすすめのタイピングゲームを思い出したので紹介します。

 

おすすめタイピングゲーム

Typing Of The Dead

こちらの方がプレイしているのはドリームキャスト版みたいです。

超おすすめです。ただ、Windows10対応してないかもです。。
SEGAガンシューティングゲームHouse Of The Deadシリーズのタイピング版として、登場して歴史が長い作品です。生産終了しているので、値段も高いですね。

まず、ゲームとして楽しいです。ガンシューティングゲームをそのままタイピングゲームにしているので、このクォリティのタイピングゲームは中々ないかもしれません。

そしてモードがとても充実しています。ステージを進むアーケードモード以外に、単語練習ができるドリルモード、ホームポジションで打つ練習からやってくれるチュートリアルモードなど、初心者から上級者まで楽しめるつくりになっています。

チュートリアルモードは懇切丁寧でかつ飽きさせないようになっているので、私はここでブラインドタッチを覚え、メキメキ上達しました。

Windows10ではできるか定かではないですが、このような質問をみかけたので、ぜひ参考までに。

タイピングオブザデッド2004をWindows10で動かす方法は... - Yahoo!知恵袋

ちなみに、ゲームセンターだと、池袋にあるゲームセンターミカドで筐体がありました!(2022年1月頃)ぜひ、プレイしてみてください!

アクセス | 池袋ゲーセンミカド

 

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

「小さな習慣」という本を読みました

こんにちは。

今日は少し前に読んだ「小さな習慣」という本について紹介しようと思います。

小さな習慣 / スティーヴン・ガイズ

きっかけ

私は技術系のことで調べものをする時、個人ブログをよく見ます。
調べているときに、ついそのブログを書いている人のほかの記事をのぞき見することがあります。特に技術とは関係ない内容やプロフィールなどを読んでしまいます。
ある時、調べものしている際に、とあるブログを書かれている方で、「小さな習慣」という本の感想が書いてあり、ふと気になったので、読み始めました。

私は本を読むのが苦手です。何を読んだか記録するために、ブクログを利用していますが、自分の悩みを補うための本ぐらいしか読んでないです。
本棚で弱い人間性が出てしまっています(笑)

自分なりの要約

久しぶりに本を読むため、読了できるか心配でした。
しかし、この本では「毎日2ページ読みましょう」と書いてある通り、
それが、この本で伝えたい「小さな習慣」ということがわかりました。
この「毎日2ページ読むこと」で「小さな習慣」を身につけて、効果を体験しながら読むことができました。

小さな習慣のポイントは以下の通りです。

  • 達成したい目標に向けて、習慣を考える
  • 習慣は笑えるぐらい小さいことにする
    (例:「筋肉をつけたい」なら「毎日腕立て伏せ1回」)
  • 小さな習慣は、いきなり多く始めない(多くても3つまで)

習慣が続けられない、目標を達成できない理由の多くは、「その時のモチベーションで考えた”ハードルの高い習慣”」を行おうとするからです。

モチベーションを行動に使うこと自体は、きっかけとしていいことです。
ただ、モチベーションが高い時に目標を立て、習慣を決めるとハードルは高くなります。

始めた頃は、気を引き締めて取り組みますが、モチベーションが切れた時に、同じ行動量をこなすのは難しいです。その結果、習慣が続かずあきらめてしまい、いつのまにかフェードアウトしているのです。

小さな習慣は、とにかく小さくして、こなすことをポイントとしています。
そのため、体調が悪くても、テンションが上がらなくても、毎日できるレベルに落とし込み、続けることで、自己肯定を高めていきます。そして、段々続けていくうちに、小さな習慣を超えて、「今日はもっとやってみよう」と思う日もあり、続けていきながら、ステップアップもできるのです。

自分の習慣に落とし込む

この本を読んでさっそく実践していこうと思い、始めました。
私は今年の目標である三つの目標に対して、小さな習慣にして、取り組みはじめました。

1.ブログを50記事書く!

 → 毎日画面を開き、1文字でも書く。(始めた当時はWordPressをやってました。)

2.個人開発でサービスローンチする!

 → エディタ(VsCode)を毎日起動する

3.音楽活動をする!

 → 音楽にまつわる本を読む or 自宅の電子ピアノの机に向かう

こんなひくほど、小さい習慣を掲げて、さっそく取り組み始めました。

それから3カ月後…

結果として、ブログ、個人開発、音楽活動ともに毎日の小さな習慣をクリアできる日があったり、なかったりみたいな日々が続いてます。読む前と比べては確実に効果があったとゆるめの自己評価をします。

最初の一カ月はほぼ毎日できました。(言い訳です)
それは、笑えるほど小さくて、感情・体調を抜きにして、手を動かしてできることだからです。そして、何日か続けていると、その習慣より多くやる日の方が多かったです。

この小さな習慣を一日やっただけで、

「自分はやるべきことをやっている」=「約束を果たせている」

で自己肯定できているのです。今まで読んできた目標達成系の本の中で、一番適性があると感じていました。

そして二か月後にはハードルを上げ始めてしまいました。

1.ブログを50記事書く!

 → 毎日記事を書く。(始めた当時はWordPressをやってました。)

2.個人開発でサービスローンチする!

 → 毎日1時間取り組む

3.音楽活動をする!

 → 音楽にまつわる本を読む AND 自宅の電子ピアノの机に向かう

そして見事に頓挫しました…調子に乗りました…

敗因を考えて今後の活動

敗因は何だろうと考えたときにこれだと思いました。

  • 小さな習慣は、いきなり多く始めない(多くても3つまで)

数は維持をしていましたが、毎日続けていると

「あれ、自分やればできるじゃん!余裕あるしもっとタスク量増やしていこう!」

と調子に乗り、月の変わるタイミングで、ハードルを上げてしまいました。

その結果、最初はうまくいってたのですが、例えば仕事が忙しくなった時に、あきらめてしまうことが多くなりました。そうすると、「今までやっていた習慣を破ってしまった」と自分を責めてしまいます。そして、習慣に対して、またどんどんモチベーションが落ちていきます。そしてクリアできず負のサイクル。。

最近はまた小さい習慣に再度落とし込んで、もっとゆっくりペースアップをするようにしています。できる日、できていない日もありますが、あまり責めずに受け入れるようにしています。小さな習慣のいい点は、やり直しが容易なことです。

引き続き、ハードル低く取り組んでいこうと思います。

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