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

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

再々始動です!

再度のお久しぶりです

ご無沙汰しております。全然更新してなくてすみません。 お久しぶりというか、これはもはや、はじめましての表現のほうが正しい気がします。
これから言い訳をつらつらと書いていきますのでよろしくお願いいたします。

前回の記事から半年以上経ってた。。

前回ブログを書いたのが、自分が30歳の誕生日のときで、「個人開発をやるぞ」という記事でした。
で、気が付けば、半年以上が過ぎてしまいました。個人開発はおろか、このブログもtwitterも全く更新していませんでした。。すみませんというか、これは誰に対してのすみませんかもよくわからなくてすみません。

で、この間、私は変わらずSESでPHPで開発のお仕事をしております。(現場も変わらずです。)そんな中、私生活では、実は去年の6月に我が子(男の子)が誕生したのです!!(説明足らずですみませんが、2020年に結婚しているのです。)

前回ブログ書き始めたときも、我が子はすでに誕生しており、その時は「何事もがんばるぞ」って気持ちだったのですが、やはり子どもがいる環境となると、独身時代・結婚生活と比べて、圧倒的に、自分の時間が減るのです。(言い訳ですみません。) 今どきのイクメンの方々と比べて私は、奥さんへのサポートがまだまだ未熟ですが、それでもあきらかに自分の時間を減ったのは確かでした。
(とは言っても、今までも、たくさんある時間を大切に使っていなかったと感じます。)
なので、この記事を読んだ皆さんは、子どもが生まれたら時間がギューッと縮まるんだと覚えておいてください!
でも、大変なことばかりでなく、我が子が元気に育ってくれているのは何にも代えがたい嬉しいことで、三人の生活は楽しいものです。なので、皆さんもぜひ育ててください(?)

なので、言い訳になりますが、私生活が忙しくなったので、発信をついおろそかにしてしまいました。すみません。

現在の状況

もうそろそろで、我が子は1歳になります。1年が経過しようとする現在、私はようやく生活のリズムが固まってきました。奥さんと子どものおかげで、1年前より確実に有意義に時間を過ごせています!(メリハリができた!)

また、奥さんが仕事への理解もあるおかげで、現在は土日の午前中は基本コワーキングスペースにいってお勉強をしています。
SESで仕事をしているため、よりいいお給料の現場に行くためには、自分のスキルを磨くことがとても重要です。なので、土日に学習ができている+習慣になっているのはとてもありがたいことで、この1年で「休日にプログラムを書くこと」に抵抗がなくなってきたのは大きな変化でした。
今までは時間のことを考えずダラダラしていたんだなと深く反省しております。 現在は、年齢のこと・家庭をもったこと・子供がどんどん育っていくことなどで、人生のいろんな「納期」が出現した(というか見えるようになった?)おかげで、せかせかと動けています。

そしてこれから

上半期があとちょっとで終わるところですが、これからやりたいことをまとめました。

  • 個人開発の活動を毎日する(プログラム書くに限らず、考えるとかでも)
  • このブログを月2ペース(低い目標。。)で発信する
  • TwitterをROM専にしないで、なんでもいいのでつぶやく癖をつける

まず、個人開発は私の大目標であり、今年こそは小さくてもリリースをしたいと思います!
一年前と比べてスキルもだいぶ向上し、あとはやりながら個人開発はできるのではないかと感じております。なので、とりあえずリポジトリとメモをつくって、思いついたことをガシガシ書いていきたいと思います。年内にリリースをするつもりです。

そして、ブログとTwitterなどのSNSの発信です。 これは自分とみなさんとの繋がりを途絶えさせないためにやります。ちゃんと個人開発の活動ができているかを監視するためです。
私は黙々と集中して取り組める人間ではないです。なので、学習も家ではせず、コワーキングスペースのほうが集中して取り組めます。そう、他人がいる環境だと、カッコつけて取り組む人間(超がつく八方美人)です。なので、SNSで発信することによって、八方美人の自分が引き下がれない状況をつくるのです。(といっても、このブログは2回も失敗しています。。)

がんばります!

というわけで、再びブログをはじめます。
またいつまで続くかわかりませんが、これで続かなかったらいよいよ自分はダメダメになってしまうので、何としてもがんばります!!(小学生みたいな文章)


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

個人開発やってみます!

生存報告

こんばんは、三日坊主です。みなさんいかがお過ごしでしょうか。 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月頃)ぜひ、プレイしてみてください!

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

 

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