しまぞうブログ

プログラミングと資産運用

2022年総括と2023年の目標

2022年

出来事

2022年は個人的に本当に色々ありました。

転職

一番大きかった出来事は転職です。

1月に転職活動を開始し、2月末には現在の職場に転職することが決まりました。

以前から、ソフトウェア系の技術を高めたり、経験を積みたいという思いがあり、それが叶う職場で働けるようになったので、転職には大変満足しています。

引越し

転職で勤務地が変わったので、職場の近くに引越しをしました。

都会に近いところに引っ越して、車の交通量が多かったり、自転車で走っていても見晴らしが悪かったりで、正直色々と不便を感じています。

今回引越しをしたことで、将来は不便じゃない程度の田舎に住みたいと思うようになりました。引越ししないと都会の不便さはわからなかったので、今回それを知ることができて良かったです。

目標のふり返り

始めに2022年初に掲げていた目標について振り返ります。

当初はセミリタイアに向けて以下の副業を継続していこうと考えていました。

ブログ

ブログに関しては2021年に「毎日1行」を目標に取組んで継続できていました。それを2022年も継続し、記録したいことをゆるく掲載していきたいと考えていました。

ですが、2022年は転職して勉強したいことが多くなったのと、その内容がブログに載せるようなものではないといった理由から、ブログを毎日書かないようになりました。

書かないならお金のかかるWordPressはもったいないので、はてなブログに移転しました。今後は気が向いた時だけ書くようにしていくつもりです。

Webライティング

当初は月に複数案件の受注を目標としていました。

ですが、転職活動で忙しくなったのを機に辞めました。Webライティングはお金以外のモチベーションが今のところはないので、今後再開する予定もないです。

プログラミング

当初は副業でプログラミング案件を受注することを目標にしていました。

一方で、転職してプログラミングが本業になりました。それにかかわる勉強に集中したかったので、副業はしていません。

今後余裕が出てきたらやっていきたいと思います。

勉強したこと

基本情報/応用情報技術者試験

転職が決まってから、ソフトウェア技術者なら持っておくべきだろうと思い、基本情報と応用情報技術者試験の資格を取りました。

2023年は高度情報の1つであるエンベデッドシステムスペシャリストを取ろうと思っています。

C言語

仕事でC言語を使うので、転職前の有休消化中に勉強しました。大学時代に少しやっていたのと、プログラミング自体は他の言語でやっていたので、割とすんなり学習でました。

仕事で使う上でも特に困らない程度には使えているので、十分に学習できたのかなと思います。

データ構造とアルゴリズム

C言語の勉強の後、仕事でプログラム関連の会話をする際に少しわからないことが出てくることがありました。他の言語だとソート等は関数を使えば簡単にできるので、知らなくても特に困りませんでした。

しかし、ソフトウェア技術者として生きていくには知っておかないと恥ずかしいので、本を買って学習しました。

結局、ほとんど使う場面はないのですが、色んな学習をするうえでベースとなる知識になるので、今後役に立つはずです。

競技プログラミング

ソフトウェア技術者というのは、実は仕事ではあまりコーディングをしません。なので、プログラミングをする機会が欲しいというのと、アルゴリズムの学習を結果が見える形で進めたいと思い、競技プログラミングAtCoderをはじめました。用事がない時は毎週参加するようにしています。

始めた当初から、今年中の入茶と緑Perfを目標にして取り組み、12月中旬に達成しました。次は年度内の入緑を目標に取り組んでいきたいと思います。

目標達成のため、競プロ定番のアルゴリズム動的計画法幅優先探索等)の学習を現在しています。一通りの基礎固めができたので、緑Dif問題をたくさん解いてもう一段レベルアップしたいです。

2023年末には水色問題を解けるようになっているといいのですが…

その他

量子プログラミングやPythonデータ分析の勉強もしていたのですが、あれもこれもやって中途半端になりたくないのと、目標があいまいだったので、最近はやっていません。余裕が出来たらKaggleには挑戦してみたいです。

2023年にやりたいこと

仕事

週の半分を在宅勤務にしたいです。ゆくゆくは住みやすいところに引っ越したいので、その準備の意味があります。

資格

以下の資格取得を考えています。

  • G検定(3月)
  • エンベデッドシステムスペシャリスト(10月)

その他、仕事上でクラウドやAI関連のことがやれそうなら、その周辺の資格取得も考えていきたいと思います。

投資戦略

2023年は景気後退の確率が非常に高いと言われています。また、年後半には利下げの可能性もあります。

このため、年前半は債券投資、後半は利下げ次第でテック株を買っていく戦略を考えています。

債券投資に向けて、調べたことを以下にまとめます。

  • 債券は金利が下落すると上昇する
  • 利下げの条件は「インフレ終了」と「景気悪化」
  • インフレはすでにピークアウトしていると思われる
  • FRBは2023年には利下げをしないと言っている

現状は4つ目の情報で債券ETFは下落しています。 ちなみに、債券ETFは以下が有名です。

  • BND:よくわからないが一番オーソドックス
  • TLT:20年債
  • TMF:TLTの3倍ETF

以下に戦略をまとめます。

  • 景気悪化の可能性が非常に高く、かつインフレも頭打ちの様子があるので、1月決算前にある程度の量を保有する
  • 1月の決算が悪ければTLTを買い増す
  • TLTの上昇が顕著であればTMFも買って加速させる。
  • 利下げが決まった段階でTLT,TMFの売却を検討する。TMFは利下げ決定後値動きが落ち着いた1段階目で全部売り、TLT or QQQに移す。
  • 景気が悪いうちは利下げをすると思われるので、決算ガイダンスが悪いうちはTLTは売らない。
  • 決算が底打ちした様子が見え始めたら、早めにTMFは全売り。TLTは値動きが小さいので、じっくり待ってもいいかも。
  • 明確に底打ちしたら、テクノロジー株が上がり始める。TECLやSOXLを買う。利下げの時点で上がり始めるかも

2023年はシナリオが分かりやすいので、思い切った投資ができるかが大事だと思っています。

WordPressからはてなブログ(無料版)に移転しました

タイトルの通り、2022年8月にWordPressからはてなブログに移転しました。

移転理由

理由は至って単純で、ブログ運営にお金を払いたくなくなったからです。

ブログをはじめた当初は収益化を目指していたのですが、最近はブログが自分用のメモ代わりになってきました。

このため、ブログのカスタマイズ性とかどうでも良くて、ただ気楽にブログが続けられたら良いのです。

ただ、今年に入ってからアクセス数が少しずつ伸びていたので、それだけは少しもったいないなあと感じてしまいます。

今後について

今後も変わらず、メモしたいことがあったらブログにまとめていく感じでやっていこうと思います。

しばらくは使い方に慣れが必要かも…

C/C++ Makeまわりのことをまとめる

タイトルの通り、C/C++でMakeまわりのことを色々調べたのでまとめました。

使ったツールとか覚えた用語とか

gcc

gccコンパイラです。プログラムが1つのファイルだけで構成される場合はこれだけで不自由ありません。

しかし、複数ファイルにまたがる場合は色々やる必要があります。なお、Visual Studioとかの統合開発環境を使用する場合はおそらく気にする必要ありません(以前の私がそうでした)。

Makefile

1つのプログラムが複数のファイルで構成される場合、Makefileでビルド作業を自動化できます。1度Makefileを作ってしまえば楽なのですが、Makefile自体を作るのがまあまあ面倒だったりします。

CMake

CMakeというツールを使えば自動でMakefileを生成してくれます(他にも同様のツールがあったはず)。

CMakeはCMakeLists.txtに従ってMakefileを生成します。このCMakeLists.txtは、例えばVSCodeならコマンドパレットから簡単に生成することができます。

デバッグ手順

VSCodeにてF5でデバッグをするために、初めてのコンパイル時には以下の作業をしています。

  1. コマンドパレット開いて「quick start」
  2. .vscodeをテンプレからコピー
  3. cmakelists.txtの使うファイルを編集
  4. launch.jsonのexe名を編集
  5. コマンドパレット開いて「build target」
  6. F5でデバッグ実行

これでブレークポイントとか仕込んでデバッグすることが出来ました。

ちなみに、.vscodeの中身は色々いじったので、それを使いまわしています。

参考サイト

GCC

CMake

CMakeにはテストも組み込めるようです。

VSCodeでのデバッグ関連

Visual StudioとVS Codeではデフォルトのエンコードが異なる

Visual Studio 2022で作成したソースファイルをVisual Studio Codeで開いたら、日本語が文字化けしていました。Visual Studio 2022ではShift-JIS、Visual Studio CodeではUTF-8がデフォルトになっているためです。

調べたら色々な対策が出てきましたが、ひとまずはVisual Studioで「名前を付けて***を保存」→上書き保存の横の▼→「エンコード付きで保存」でUTF-8を選べばOK。

操作に慣れたいし、今度からはコーディングはVisual Studio Codeでやろうかな…

Visual Studio 2022でstdio.hが見つからない…

C言語の勉強のためにVisual Studio 2022を使おうとして、定番の"Hello World!"のプログラムを実行しようとしたところ、「stdio.hが見つかりません」という、困ったエラーが出ました。まさかこんな最初からつまづくとは…。

検索すると、同じようなエラーに出会っている人は多いものの、記事のVisual Studioのバージョンが古かったりで、なかなか解決策が見つからず。

そんなこんなで、ほぼ丸1日調べてなんとか解決しましたのでメモしておきます。

症状

プログラミング学習で最初に出てくる"Hello World!"のプログラムを実行すると、「stdio.hが見つかりません」と言われました。具体的には以下のようなプログラムです。

#include <stdio.h>

int main(void){
    printf("Hello World!");
    return 0;
}

stdio.hは"C:\Program files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"に格納されています。

Visual Studioのインクルードディレクトリを確認すると、末尾が"ucrt"のディレクトリは"C:\Program Files (x86)"ではなく、"C:\Program Files"になっており、参照先が誤っています。

原因

こちらのサイトによると、古いバージョンのWindows SDKにバグがあるらしいです。アップデートしても古いバージョンのWindows SDKが邪魔するようです。

解決策

以下の手順でWindows SDKを新しいバージョンに更新することで、この問題を解決することができました。

まずは、Visual Studio Installerを起動して「変更」をクリック。

インストール済みのWindows SDKのチェックを外し、最新バージョンのWindows SDKにチェックを入れ「変更」をクリック。

インストール完了後、新しくプロジェクトを作成し、上記と同様のプログラムを実行すると、正常にビルドできました。

副作用が無いか心配ですが、しばらくこのまま使ってみます。

【Git】リモートリポジトリを用いて複数人でバージョン管理する方法【Sourcetree】

ソフトウェア開発する上で、バージョン管理ツールはとても便利です。もはや必要不可欠と言ってよいでしょう。

個人開発でローカルリポジトリのみ用いる場合は比較的簡単に運用が可能です。以下の記事で基本的な操作手順を解説しています。

shimazoh.hatenablog.com

一方、複数人で開発を行う場合はリモートリポジトリを用いる必要があります。ローカルリポジトリのみを使用する場合と比べて手順が多くなり、運用がやや煩雑になります。

本記事では、リモートリポジトリを用いて複数人で開発を行う場合を想定する場合、どのように運用すればよいか解説いたします。

前提条件

前準備としてリモートリポジトリとローカルリポジトリの設定を行ってください。手順は以下の記事を参考にしてください。

shimazoh.hatenablog.com

リモートリポジトリを用いるメリット

リモートリポジトリは、ネットワーク上に存在するリポジトリのことです。ネットワーク上に存在するため、複数人で共有することができます。

リモートリポジトリでバージョン管理することで、複数人での開発において各個人でコーディングしたものを後で統合するといったことが可能になります。

リモートリポジトリを用いてバージョン管理する方法

ここからはリモートリポジトリを用いてバージョン管理する手順を説明します。

作業開始前にプルする

作業を開始する前に最新の状態をローカルリポジトリに反映する必要があります。このため、作業開始前にプルをします。

作業毎にコミットする

ここは個人開発と同様の手順です。詳しくは冒頭のリンク先を参考にしてください。

再びプルする

一通りの作業を終えたら、ローカルリポジトリの状態をリモートリポジトリにプッシュする必要があります。

しかし、自分の作業中にリモートリポジトリが更新されている可能性があります。それを改めてローカルリポジトリに反映する必要するため、プッシュする前にプルをします。

memo

作業開始前とプッシュ前にプルすると覚えておきましょう。

プルした際、自分が編集した箇所が自分以外のメンバーによって変更されているとコンフリクトが発生します。コンフリクトが発生した場合は個別に対処が必要になります。

プッシュする

無事プル出来たらプッシュしましょう。

GitHubでCompare & Pull Requestをする

GitHubで「Compare & Pull Request」 を押し、チームメンバーにレビューしてもらいます。

参考

以下のサイトではより詳しく解説されています。

【GitHub】exeファイルを配布する方法

GitHubを使用してexeファイルやzipファイルなどを配布するには、GitHubのrelease機能を利用すればよいです。

その手順を説明します。

手順

GitHubにアクセスし、下図赤枠の「Create a new release」をクリックする。

バージョンなどを入力し、アップしたいファイルをドラッグアンドドロップする。

入力等が完了したら「Publish release」をクリックします。

以上で完了です。

参考サイト