tomoriのブログ

tomoriのブログ

自由気ままに日記をつけていきます

2022年11月の振り返り

こんにちは、tomoriです。

もう12月の半ばですが、11月の振り返りができていなかったので、今さらながら振り返りを始めていきます。

1年ってあっという間ですね。早すぎて追い越されそう(?)

趣味プレゼン発表会

内定者間の交流を深めるという目的で、内定者の有志が主催した趣味に関するプレゼン発表会がありました。

この発表会は、内定者が4, 5人で1チームという編成で、メンバー間で共通の趣味について複数のチームが15分ほどプレゼンするという内容です。

自分のチームは「ボカロ好き」という共通項で集まったチームで、こちらに関して資料の作成と発表を行いました。

僕自身はライブに行った経験などは1回もないため、いわゆるライト層に該当する人だったのですが、チームメンバーにはボカロガチのガチ勢の方もいたため、なかなか面白い編成でしたね。

他のチームのテーマだと「麻雀」や「キャンプ」「カフェ巡り」など、自分とは今までほとんど縁がなかった趣味に関する発表もあり、聴衆者としての時間もなかなか楽しめる内容でした。

まだ全チームの発表は終わっておらず、また来週別のチームの発表が控えているので、こちらも楽しみにしています。

地方にいるとどうしても内定者間の交流ができずにいることが多いので、こういった機会があると嬉しいですね。

内定者アルバイト

11月の頭から、メディア事業部での内定者アルバイトを始めていました。

11月中に取り組んだ内容は主に「検索改善」「k8sのパラメータ調整」「新規事業の環境構築」の3つです。

1つ目は、とある項目に関する検索機能が、もともと検索ワードが完全一致する箇所を探すように動いていたところを、アルファベットの大文字と小文字を区別せずに検索できるように拡張するという内容でした。

2つ目は、日付が変わるタイミング(特に月初)でアクセス負荷が上昇するという背景から、これらのタイミングを場合分けしてPodを適切な数にスケーリングするようにパラメータを調整するという内容でした。

3つ目は、とある新規事業のdev環境をTerraformを使ってGCP上に構築するという内容でした。

流石に環境全部は担当していないのですが、IPアドレスの発行とドメインとの紐付けやRedis環境の構築などは自分が担当させていただきました。

12月に入った現在は、k8sのリソース管理に関するタスクに取り組んでいるので、こちらも完了次第技術記事として公開しようと思います。

余談ですが、今回の内定者アルバイトは、今年学んだことや経験がかなり活かせている自覚があるので、めちゃくちゃ楽しいですね。

久々に成長を感じることができて結構嬉しいです。

Kubernetesの学習

内定者アルバイトをきっかけにk8sの学習を始めました。

もともと、ずっと気になりつつも一切手をつけられていなかった技術なので、いいきっかけを得たと思っています。

手順としては、公式チュートリアルで全体概要を押さえた後、自分がタスクとして扱うであろうリソースを中心にドキュメントを読み込みながら、それに関するパラメータをいじって実際に動かしてみる、といった形で進めていました。

基本的にはminikubeをインストールして、ローカル上でいじいじすることが多かったですね。

結構わからないことが出てくることもあったのですが、勤務日にトレーナーさんに質問することもできたため、学習環境はかなり整っていたと思います。

何かを学習するとき、それ専用のリポジトリを作ることが多いので、k8sリポジトリを作ってこんな感じで実際に操作したコマンドなどはすぐに見返せるようにしていたりします。

github.com

余談ですが、わからないことを検索する際に、Chromeの検索言語をEnglishに設定して英文で検索をかけることでほとんどの問題は解決したので、是非真似してみてください。

検索範囲を英語圏を中心にすると、マジでめちゃくちゃ情報量が変わるのでおすすめです。

おわりに

11月はもうすぐ1年が終わるという事実に驚きながら、この1年間でちゃんと成長できていたことを確認できたひと月でした。

内定者アルバイトでは、SREっぽいことをやりたいという要望を汲んでいただいているため、タスクも楽しくて最高ですね。

今年も残り半月ほどですが、悔いのないように時間を使うように努めていきます。

あ、あと最近読書習慣を取り返そうと考えていたので、今月から週1冊程度でいいので本(技術書以外)を読む習慣をつけようと思います。

では振り返りはこの辺で終わります👋

2022年10月の振り返り

こんにちは、tomoriです。

11月に入り半月ほど経ってしまったのですが、先月の振り返り記事を書いていきます。

卒業研究

9月のインターンが終わり、10月から本格的に卒業研究に取り組み始めました。

もともと、暗号系の研究をやろうと考えていたのですが、諸々の成り行きにより画像系の研究に取り組むことになりました。

研究テーマはざっくり言うと画像分類系の分野であり、現在は特定の種類の画像に対する効果的な特徴量を見つける、といった内容のことを行っています。

年末年始は来年の引っ越し先を探したり、別のインターンがあったりとおそらくそこそこ忙しくなる気がするので、年内である程度の成果を出せるように努めようと思います。

Switch買いました

めちゃくちゃ今さら感がありますが、任天堂Switchを購入しました。

前々から買おう買おうと考えたタイミングが何度かあったのですが、ついにという感じです。

最終的なきっかけとしては、9月のインターン先でスプラ3やその他のゲームの話をしている社員さんを目にすることが多く、社会人になってもこういうことでわちゃわちゃできるのが羨ましいと思ったためですね。

↑がゲーム会社だったということと、スプラ3の発売が社内でも話題になっていたという感じです。

ちなみに、僕自身コンシューマゲームで遊ぶのは中学生ぶりかつ、新品でコンシューマゲームを購入するのは初めてであるため、かなりワクワクしながら購入しました。

Switch本体だけでなくソフトや周辺機器なども揃える必要があり、それなりにお金が飛んでしまったのですが、久々に良い買い物ができたと思っています。

大学生活も残り少ないので、ほどほどに楽しもうと思います。

おわりに

ちょっと期間が空いてしまったので、今回は駆け足気味で振り返り記事を書きました。

11月の現在は、また別の部署でアルバイトをやっており、そこそこ開発面で裁量のあるタスクをやらせてもらえそうなので、引き続き開発の方に注力したいと思います。

卒業研究に関して、あまり大きな声では言えないのですが、最小コストで卒業できる程度に時間を割くことになりそうです()

短いですが、今回はこの辺で締めさせていただきます。

ではでは〜👋👋👋

2022年9月の振り返り

こんにちは、tomoriです。

暑い暑いと言い続けていたら、ようやく最近肌寒くなってきましたね。

今年もまた秋はなさそうです。

ということで、さっそく先月の振り返りをしていきましょう。

9月は内定者アルバイトのために、1ヶ月間東京でホテル暮らしをしていましたので、ちょっとだけ東京ってやつを楽しんできました。

内定者アルバイト

9月の1ヶ月間、週5のフル出社で内定者アルバイトを経験してきました。

こちらは、別途記事にしているので、興味のある方は覗いてみてください。

tksx1227.hatenablog.com

内定者アルバイトの関係で、高級店である”牛宮城”へ行ったりと、なかなか普段できないような体験をすることができました。

交通費、宿泊費も全部会社持ちだったためとても感謝しています。

42の校舎へ行きました

初めて42東京の校舎へ行ってきました。

まず第一に想像の倍以上、建物がリッチでした。

その後に行ったAbema Towersやスクスクなども同じような感じだったのですが、階層別エレベーター(?)というもの自体その時が初めてで、指定の階へ上がるまでも苦労しましたね。

校舎の中はとても広くて綺麗だったので、こんな環境でPiscine受けれたら楽しいんだろうなぁなどと考えていました。

本当は東京滞在中にExamを受けようと思っていたのですが、実施曜日が決まっているということで、週5出社の僕には行ける時間帯がなかったです。

(土日だったたら行こうと考えていた。)

結局、東京に来てすぐの1回だけ、パーカーをもらいに行った人みたいな感じになってしまいましたね。

都庁行きました

ストリートピアノを見るために都庁の展望台へ行ってきました。

普段画面上でしかみたことない光景が目の前に広がっているという、なかなか感動する体験でした。

適当に休日に立ち寄っただけだったのですが、思ったよりも人がたくさんおり、常に何かしらの演奏が流れているという最高な状態でしたね。

自分は午後の部しか見ていないかったのですが、その時間帯だけでも「クラシック」「ボカロ」「アニソン」「ポップス」「ジャズ」など、本当に幅広いジャンルの演奏が聞けました。

また、展望台というだけあって、窓から見える景色もなかなか綺麗なものであり、リラックス空間として最高の空間でしたね。

来年また行こうと思います。

(プレイヤーとしてもいつか行きたい)

コンサート行きました

YOSHIKIのクラシカルオーケストラのコンサートに行ってきました。

結構渋いとこ行ったな、と自分でも思うわけですが、次のようなことが被った結果、今回コンサートに行ってきたという経緯があります。

  • もともと X JAPAN が好きだった
  • オーケストラのコンサートを一度は生で見てみたいと思っていた
  • YOSHIKIモデルの楽天カードを使っており、それ経由で抽選の案内が来た

結果的に最高に満足したコンサートだったため、また開催することがあれば行ってみたいです。

オーケストラ系列で言うと、次は久石譲のコンサートにも行ってみたいですね。

タイミングが合えばこちらもチケット狙おうと思います。

Piscine同期との同窓会行きました

自分がPiscineを受けてからちょうど1年ほど経ったわけですが、今回初めて対面でPiscine同期の方々とお会いすることができました。

Piscine中よく話していた方もいたのですが、当時は常にDiscordだったため、対面でお会いするのはちょっと変な感じでしたね。

実際に会ってみると、「普段の自分の生活の中で、このタイプの人は多分自分からは関わらないだろうなぁ」というような方もいたりするので、Piscineのような色々な人と交流できる場はやっぱり面白いなという印象です。

来年からは自分も東京に拠点が移るので、定期的に交流できたらいいなと考えています。

学校や会社以外のコミュニティでできた友人はなかなかいないので、大事にしたいですね。

おわりに

9月は学んだことや経験したことがたくさんあり、自分基準だとかなりアクティブなひと月でした。

今住んでいる場所が結構田舎であるため、東京での暮らしは快適すぎてヤバかったです。

やっぱり駅が近いと言うだけで、かなりフットワークが軽くなるなぁと言う印象がありますね。

また、実は東京での裏テーマとして””コミュニケーション””をひっそりと掲げていたのですが、内定者アルバイトでも人とたくさん話すことができ、自分なりに頑張れた方だと感じています。

この辺りは場数理論を実践していくしかなさそうなので、今後もコミュニケーションの苦手意識を克服するための取り組みをちまちま続けようと思います。

ということで、この辺で振り返りは締めさせていただきます。

ではでは〜👋👋👋

内定者アルバイト2社目おわったよ

9月の1ヶ月間、株式会社サムザップで内定者アルバイトを経験してきたので、その体験記を書いていきます。

配属先について

配属プロジェクトと職種

配属先は、戦国炎舞 -KIZNA-プロジェクトのサーバーサイドエンジニアでした。

また、今回は前回の内定者アルバイトと異なり、フルリモートではなく週5のフル出社で参加してきました。

せっかく対面での参加だったのですが、9月は入社日が7日とかなり遅い日程であり、かつ3連休が2回ある月だったため、トータルの出社日は他の月と比べて少なかったです。

(もう少しだけ出社日欲しかった)

会社の雰囲気など

アルバイト開始前から、サムザップはとにかく会社の雰囲気が良いと評判だと伺っており、実際に就業中には雰囲気の良さや社員の方々の温かさを実感することが多かったです。

また、サムザップには在籍期間の長いエンジニアが多く、他社よりもベテランの方が多く在籍しているという特徴があるようです(入社後に自分のトレーナーになる方がベテランエンジニアである可能性が高い)。

若手が多い会社特有の「フレッシュさ溢れる環境」とはまた一味違う環境かもしれませんが、個人的にはこれはこれで居心地が良かったです(平均年齢は34歳あたりらしい)。

中の人が言うには、「うちには温かいおじさんがたくさんいる」とのことです。(なるほど…?)

社員の方から聞いた話では、「若手が少ないからこそ、新卒で入社する場合は、割と早い段階でサーバーリーダーなどのポジションを任せる可能性が高い」とのことでした。

実際、特にサーバーのメンバーはかなり不足しているらしく、22卒の方が一人いて、その次に若い人が10年目クラスの方になるらしいです。

入社後のキャリアや、任せてもらえる責任範囲の大きさなどを考えると、このあたりの情報を知れたことは大きいですね。

余談

今まで戦国炎舞をプレイしたことがなかったのですが、なんと来年で10周年を迎えるらしく、素直にすげぇなという感想です。

そういえば、このアイコンすごい見覚えがあるなぁと思っていたら、パズドラに全てを捧げていた頃(2013, 2014年あたりかな)にセールスランキングでよく見てたアイコンだと思い出しました。

期間中の内容

ここでは、内定者アルバイトでやりたかったことや、実際に取り組んだことなどについて書いていきます。

受け入れ面談時の要望

今回、内定者アルバイトをするにあたって、事業部受け入れ面談時には次のようなことを要望として話していました。

  • せっかくの出社なので会社の雰囲気を堪能したい
  • サーバーとして入るがインフラ周りの勉強がしたい
  • 機能設計などに立ち合いたい
  • モブプロをやってみたい

結果的にモブプロはできなかったのですが、他の3つは経験できたので満足度は高いです。

ちなみに、モブプロは社員の方を拘束することになるため、特にベテランが多い環境では厳しいのではないか、という話をとある面談時に伺いました。

実際に取り組んだこと

1ヶ月の間で次のようなことに取り組みました。

  • ソシャゲガチャのマスタ、テーブル設計(あくまで体験)
  • 戦国炎舞の管理ツールの改修
  • インフラ勉強会への参加
  • 工数見積り講座

期間がもう少し長ければ、もっとアプリ側のタスクを任せることもできたらしいのですが、期間が短いために調整が難しいとのことで、割と管理ツール周りが多かったですね。

以下で1つ1つ見ていきます。

ソシャゲガチャのマスタ、テーブル設計

トレーナーさんから与えられた要件定義をもとに、それを満たすガチャのマスタとテーブルの設計をする、という内容の設計体験に取り組みました。

ここでの最も大きな学びとしては、「正規化は必ずしも良いとは限らない」と言うことです。

自分としては正規化こそ正義なのではないか、と思い込んでいた節があり、この事実はかなり衝撃的なものでした。

実際どういうことかと言うと、ソシャゲなどのサービスは多くのユーザーからのデータ取得が頻繁に生じるため、正規化されたテーブルよりも"いかに一度のSELECTで必要十分なデータを取得するか"ということの方が重要だということです。

あえて正規化をしないことで、データ取得時に複数テーブルの結合が不要になり、かつセレクト文がシンプルになるため、パフォーマンスと可読性の双方が向上するというメリットがあります。

正規化以外の点だと、マスタデータはエンジニア以外の方(プランナーの方など)がデータを追加することも考慮する必要があるらしく、エンジニア以外の方が誤った使い方をしにくい構造(enumで文字列を扱わないなど)にすることも意識しているとのことでした。

要約すると、「実際にクエリを実行する状況や、データを追加する方に対して親切な設計を心がけることが重要」ということになります。

こうして文字に起こすと当たり前のことのように思えますが、実際に設計に取り組むと意外とできていなかったことがわかりました。

このあたりの知識は、前回の内定者アルバイトで設計に取り組んでいたときに知っていたかったですね。

フィードバックを受けることで、なぜ自分が以前まで行っていた設計が分かりにくかったのか、ということを言語化できた気がします。

データ設計と同時に考えるSQLのクエリに関しては、データの取得では必要最低限のWHEREだけを指定して取得することが定石らしく、クエリ内での演算は極力行わないようにしているとのことでした。

演算が必要となる処理の場合、アプリケーション側で演算を行い、その値をリテラルとしてクエリに混ぜることで、データベース側での演算処理がなくなりパフォーマンスが向上するそうです。

この辺りも単純なアイデアですが、自分にはない発想だったので新しい視点を得ることができました。

今回自分が取り組んだものと同様の内容のものをQiitaで公開しているようなので、興味のある方は覗いてみてください。

※ 内定者アルバイト・インターンでサムザップへ行く予定のある方はネタバレになるので見ない方がいいかも。

qiita.com

戦国炎舞の管理ツールの改修

管理ツールはPHPフレームワークであるCodeIgniterで記述されており、今回初めて触る技術でした。

改修内容はどれも些細なものでしたが、改修の依頼者がエンジニアでないこともあり、都度依頼背景などのヒアリングを行いながら進めていました。

実際に入社後もこのような形で、エンジニアではない方とのコミュニケーションも必要だと考えると、良い実践演習だったと思います。

ソースコードに関して、特に管理ツールは、サービスそのものが10年目ということもあり、良くも悪くも歴史を感じるものでした。

具体的には以下のようなものが特に目立ちました(主に悪い意味で)。

  • コードのフォーマットが統一されていない
    • インデントに半角スペースとタブ文字が混在
    • functionif の文字列の後に半角スペースがあったりなかったりする
  • スタイル定義の場所が統一されていない
    • 部分的なスタイル定義がPHPファイルの中に記述されている
    • HTMLタグの中にstyle属性をベタ書きしている
  • 所々汎用的な変数名がある
    • $item$ret など汎用的な命名が散見された

話を聞くと、「アプリ側のソースコードは都度整理するが、管理ツールはあまり重要で無いため、リファクタリングに割く時間が無く放置された箇所が多い」とのことでした。

仕方ないといえば仕方ない気がしますが、この辺りをスマートに解決する方法があれば見つけたいですね。

また、GitHubへ移行した時期が割と最近(以前までGitLabを使用していた)らしく、イシューやPRのフォーマットが統一されておらずその点も困惑しました。

改修からテスト、レビュー、デプロイ、リリースといった一連のフローも結構以前の部署と違っており、部署によって色が出るなぁという印象でしたね。

インフラ勉強会への参加

サムザップが全サーバーエンジニアを対象に月一のペースで開催しているインフラ勉強会に参加させていただきました。

今月は第6回目とのことで、途中参加という形になってしまったのですが、事前に第1回から第5回までの資料を共有していただいていたため、ある程度前回の内容には目を通した状態で参加することができました。

今月の内容はコンテナ技術に関するものであり、ECRやECSなどについてハンズオン形式で学びました。

Dockerなどのコンテナ技術は、今や多くのプロジェクトで採用されている技術だと思うので、この機会に”インフラ x コンテナ技術”について学ぶことができて良かったです。

AWSなどのクラウドの勉強は、学習を始めるきっかけが無いとなかなか手を付けにくい領域だと感じているので、今回の勉強会のような”きっかけを提供してくれる場”はとてもとてもありがたいですね。

余談ですが、勉強会で使用する環境は全てTerraformで構築するため、必然的にTerraformも学ぶことになったのですが、実際に触ってみると意外にも複雑さは無く簡単に記述できたため、とりあえずやってみることの重要さを改めて実感しました。

最近は自分の志向がSREに傾きつつあるので、期間中にこのような勉強ができて本当に良かったです。

工数見積り講座

開発における工数の見積り方について学びました。

工数の見積りには主に下記の5種類があるらしく、どれもよく使う手法だそうです。

今まで、個人開発やチーム開発をする上で工数の見積りを行ったことがなく、毎度肌感で進めていたのですが、せっかく見積り手法を学んだことなので、次回からは見積りにも取り組んでみようと思います。

学んだこと

この1ヶ月間、タスク的な取り組みはそこまで多くなかったのですが、総合的にみると十分な学びがありました。

上でも見てきたのですが、具体的には次のようなことを学びました。

  • データベースの設計
  • AWSでのインフラ構築、インフラアーキテクチャの理解
  • プロジェクト内でのコミュニケーションの取り方
  • 工数の見積り方

自分としては、インフラの知識が着実についてきている実感があるので、この1ヶ月間での学びは次回以降の内定者アルバイトでも確実に役に立つものだと感じています。

まとめ

1ヶ月間という長いようで超短かった期間でしたが、ほぼ毎日ランチに連れて行っていただいたり、カフェで飲み物を奢ってもらって休憩したりと、かなり充実した1ヶ月間でした。

ランチ以外でも、ディナーとして社員の方々に牛宮城の料理をご馳走していただいたりと、自分では絶対行けないようなお店にも足を運ぶことができ、超楽しかったです。

ちなみに、僕自身、外食は月に1回するかどうか、というレベルの人間であるため、毎日のように外でご飯を食べるという経験はとても新鮮でした。

やっぱりお店の料理って美味しいですね。

こちらの記事では、必要最低限の内容だけ書いているため、ここに書ききれなかったようなこともたくさんありますが、とにかく東京での1ヶ月間は最高に楽しかったです。

よく、新社会人は入社までが憂鬱だという話を耳にしますが、自分の場合は今回の件で社会人になることに対して楽しみだという感情がより一層強くなりました。

11, 12月ではまた別の部署でのアルバイトが決定しているので、そちらでも、今回学んだことを活かして活躍できるように努めようと思います。

では、この辺りで締めさせていただきます。

Bye👋

2022年8月の振り返り

こんにちは、tomoriです。

気づけば9月に突入していたので、さっそく8月の振り返りをしていきます。

minishell(途中経過)

8月は全体の9割くらいの時間を42Tokyoの課題である「minishell」の方へ投下していました。

minishellはBashのようなシェルプログラムを0から開発する課題であり、自分が42Tokyoへ入学してから最初の山場だと勝手に思っていた課題です。

まだ完成していないのですが、体感進捗としては6、7割完成といったところだと思います。

完成後に詳しく記事を書こうと思っているので、ここではざっくりと現時点までに自分が何をやったのかだけを列挙します。

↓実装したとこ↓

  • 入力文字列の解析
  • ビルトインコマンドの実装
    • echo
    • pwd
    • unset
    • exit

ビルトインコマンドの実装はenv, export, cdの3つが残っているのですが、調べれば調べるほど仕様が把握できなくなってきたため、一旦仕様把握に時間を割いているという状況です。

全体を通して、兎にも角にも仕様の把握に一番時間がかかっている気がしますね。

ただ、情報収集や実装を通して、Bash内部での処理のフローなどが鮮明になってきている実感があり、とても勉強になっています。

9月は時間があまり取れないのですが、できれば9月中に提出できる状態まで持っていきたいです。

「良いコード/悪いコードで学ぶ設計入門」を読みました

ネット上で色々とつつかれていたこちらの本ですが、個人的には結構勉強になることが多く、読んでいて面白かったです。

内容は「ドメイン駆動設計入門」と重なる点も多く、以前にそちらを読んでいたということもあってか、割とスッと頭に入ってくる感覚がありました。

どうすればコードの可読性が上がるのか、といった点に関して、自分の場合は直感的なコーディングに頼ることが多かったため、言語化された文章やサンプルコードはわかりやすくて良かったです。

ただ、必ずしもこちらで紹介されているコーディングが””良い””とされるとは限らなさそうなので、そこも含めて自分で判断できる力を身につけていきたいですね。

こちらの記事も併せて読んでみるとためになると思います。

zenn.dev

おわりに

8月はほぼ1つのものに時間を割いていたため、あまりトピックがなかったですね。

9月はインターンで東京の方へ1ヶ月間滞在するので、色々と吸収してこようと思います。

また、東京へ行くのは初めてなので休日に観光等もちょっとしたいですね。

実はストリートピアノの動画を見るのが結構好きだったりするので、どこかのタイミングで都庁へ行ってみたいと考えています。

では今回は短いですが、この辺で締めさせていただきます👋

2022年7月の振り返り

こんにちは、tomoriです。

あっという間に7月も終わり、早くも8月に突入しましたね。(←毎回言ってる)

夏が本気を出してきたらしく、外に出た時の暑さがやばいです。

(気温よりも湿度がキツイ)

湿度高いだけでなんであんなに不快感を覚えるんですかね。

前置きはこの辺にして、さっそく先月の振り返りをおこなっていきます。

42Tokyo課題(Philosophers)

42Tokyoの課題である「Philosophers」に取り組んでいました。

実装コードはこちらです。

github.com

Philosophersは、「食事する哲学者の問題」を少しアレンジしたような内容の課題です。

主なテーマは並列・並行処理であり、下記の項目について学ぶいい機会でした。

概要を軽く説明します。

哲学者が何人かで丸い食卓を囲んでおり、人数分のフォークが各哲学者の間にあるという状況を考える。
食卓中心にはスパゲティがあり、哲学者はフォークを2本使ってそれを食べることができる。
ここで、哲学者は自分から見て左右隣にあるフォークしか使用できない。
このような状況下で、各哲学者は、「食事する」、「睡眠する」、「考える」の3つの状態を順番に繰り返す。
食事と睡眠には一定の時間を必要とし、直前の食事から次の食事まで一定の時間が空いてしまうとその哲学者は餓死してしまう。
以上の条件のもとで、できる限り哲学者が餓死しないようにサイクルを回す。
1人でも餓死した場合はそこで全哲学者のサイクルを終了する。

こちらの課題では、各哲学者がスレッドやプロセスに対応し、フォークが並列・並行処理における共有資源に対応します。

フォークの状態に不整合が生じないように、そしてデッドロックが生じないように、ミューテックスセマフォを用いて排他制御を行う必要があるというわけです。

課題全体を通して、マルチプロセスやマルチスレッドの特徴や状態管理の行い方、排他制御の実装方法などを学ぶことができ、大変有意義な課題でした。

排他制御に関して、ミューテックスはプログラム内の一時的な資源として管理されているため、同一プロセス内でしか機能しないのに対し、セマフォはOSにより管理されているため、異なるプロセスでも同一のセマフォを参照できるという点は面白い相違点だと思いました。

これでランク3の課題は残すところ minishell だけとなったので、引き続き実装を頑張っていきます(絶賛実装中)。

Keychronキーボード購入

外付けキーボードとして「Keychron K2」を購入しました。

こちらは別途記事にしているので、興味のある方は覗いてみてください。

tksx1227.hatenablog.com

Magic Trackpad購入

Macbookクラムシェルモードで使用するにあたり、トラックパッドも欲しいと思うことが増えてきたため、Magic Trackpadを購入しました。

自分が購入したものは、いわゆる第一世代と呼ばれるもので、感圧タッチ機能が搭載されていないモデルです。

メルカリで3,000円ちょっとの中古品を購入しました。

最新モデルの新品が約17,000円ほどすると考えると、機能自体はそこまで大きく変わらないので割といい買い物だと思っています。

というか最新モデル高すぎますよね。

現在、トラックパッドは左手デバイスとして配置しており、マウスと競合しないように役割を分けています。

基本的にカーソル移動などはマウスで行なっており、各種スワイプや拡大縮小などのジェスチャー機能のみトラックパッドで行うという感じですね。

ISUCON12予選参加

42Tokyoのメンバー3人で、ISUCON12の予選に参加してきました。

結論から言うと、ほとんどボトルネックの改善はできずに終わってしまったのですが、色々と学べることも多かったです。

自分の場合、本編というよりは、ISUCONのための準備やインプットが結構勉強になったという感じですね。

まず、チューニング以前の測定ツールなどを準備するにあたり、パフォーマンスを改善する上で事前に確認すべき項目や、その測定方法、実際に測定するために使用するツールの使い方など、今まで触れてこなかった領域の知識を得ることができました。

ただ、本番では事前に準備していたことがうまくいかず、測定段階からまずい感じでしたね。

まず、マシンのCPUやメモリの使用率などといったマシン情報を収集するためのツール(Prometheus)がうまく動かず、結局ベンチマーク実行中に htop などを実行してリソースの使用率を確認していました。

今思えば、AWS側でセキュリティグループが設定されていたためアクセスできなかっただけだと思いますが、当時はどうすればいいのかわからず諦めていました。

またスロークエリの測定に関しても、MySQLでの設定しか準備しておらず、SQLite側のデータを測定することができませんでした。

こういったことがあり、準備にまあまあ時間がかかりました。

測定後、データベースの負荷がかなり重いということはわかったものの、SQLiteの扱いがわからず、なかなかクエリを修正することもできなかったです。

結局インデックスを貼ったり、独立したテーブルごとにデータベースを分割して負荷を分散させる、といったことしかできませんでした(本当のボトルネックが改善できなかったので、あまりスコアは上がりませんでしたが)。

結果こそアレでしたが、決まった時間だけ集中してやり切る、ということ自体が楽しかったので参加してよかったと思っています。

来年はパワーアップしてまた参加したいですね。

電子ピアノ購入

プライムセール中にこちらの電子ピアノを購入しました。

https://www.amazon.co.jp/dp/B08LGQ8CGZ/ref=cm_sw_r_api_i_ZBQ8FSGGWC3PGMBXMP8E_1?psc=1www.amazon.co.jp

あと一年もしないうちにこの部屋から引っ越すのに荷物増やすのもなぁ、とも考えましたが、欲しいときに買った方が後悔しないだろうというノリと勢いで購入を決断しました。

この生き方はおそらく学生の特権でしょうね(?)

もともと大学1年生の頃に安めの電子キーボードを購入し、趣味として嗜んでいたのですが、ハンマーアクションに憧れていたので、今のところ買ってよかったと思っています。

独学で暇なときにちまちま練習しているレベルなので大して弾けるわけではないのですが、好きな曲を耳コピして弾けるぐらいになりたいなぁ、という漠然としたモチベーションがあるので、やめることはないと思います。

個人的に、楽器は人生で一生続けられるであろう趣味の1つだと思っているので、今後も趣味の範疇で続けていきたいですね。

おわりに

7月は学んだことや経験したことがたくさんあり、とても濃厚なひと月でした。

一方で、やるべきこと・やりたいことがまだまだ残っているのにも関わらず、やりたいことが増えてしまい、どうしたものかと考えていたりもします。

最近だと、CTFに興味があるので、合間を練ってちょっとやってみたいですね。

話題は変わりますが、TL上でアニメ「リコリス・リコイル」が絶賛されているのをよく見かけていたので、気になって僕も試聴してみたのですが、キャラデザ、作画、音楽、ストーリーとどれをとってもめちゃくちゃ好みでどハマりしています。

久々にここまでワクワクする作品に出会えたので、毎週とても楽しみです。

アマプラだと放送日の3、4日後に公開されるのですが、ABEMAだと地上波同時で放映されているらしい(プレミアム限定かはわからない)ので、次回からリアタイで追いたいですね。

ということで、この辺で振り返りは締めさせていただきます。

ではでは〜👋👋👋

Keychron K2を購入しました

先日、外付けキーボードとしてKeychron K2を購入し、約1週間ほど使用したので、こちらのレビューをしていこうと思います。

商品の紹介

僕が購入したモデルはこちらになります。

ライトはホワイト一色かRGB、フレームはプラスチックかアルミかの二択をそれぞれ選択することができ、自分はRGBかつアルミフレームのモデルを選択しています。

ただ、今だからこそ言えるのですが、ぶっちゃけライトはホワイト一色で全く問題ないですし、フレームもアルミである必要はなかったな、と思っています(その方が安く済みますし)。

軸に関しては、直前まで茶軸と青軸で迷っていたのですが、青軸の「僕、今キーボードめっちゃ打ってます( -`ω-)✧ドヤッ」と言わんばかりの打鍵音がすごく好みだった、という単純な理由で最終的にこちらを選びました。

カニカルキーボードを初めて買う人が青軸を選ぶのはやめた方がいい、みたいな記事をちらほら見かけたのですが、個人的には全く後悔していないです。

まあ茶軸の方が好みかもしれないという線は否定できませんが。

購入方法に関してですが、Keychronのキーボードは公式サイト日本代理店のどちらかで購入することができます。

僕は代理店であるKOPEK JAPANで購入したのですが、公式サイトで購入した場合、同じスペックのものが$79(約11,000円)と比較的安価で購入できます。

ただし、公式サイトで購入する場合は海外発送となるため、本体価格に加えて送料が$20ほどかかるというデメリットがあったりします。

送料が$20追加されるだけであれば、それを踏まえても公式で購入した方が安いじゃん、と思ったのですが、どうやら地域によっては追加で送料を取られるらしいです。

自分の場合、今住んでいる地域が田舎すぎたのかわかりませんが、送料が$20に加えてさらに$35かかると言われたので、公式での購入をキャンセルし、代理店での購入に切り替えたという背景があったりします。

都会に住んでいる人であれば、公式サイトで購入した方が安く済みそうですね。

羨ましい。

完全に余談ですが、今KOPEK JAPANでサマーセールが開催されており、全商品が20%オフで購入できるらしいです。

1週間待って、今買えば良かったなぁと思ったり。。

使用感

使用感ですが、正直かなり気に入っています。

カニカルキーボードどころか、深いストロークのキーボード自体初めてだったので、購入前は「合わなかったらどうしよう」などと考えていましたが、完全に杞憂でした。

うまく言語化できないのですが、初めて「キーボードを打っていて楽しい」という感覚を覚えています。

YouTuberにありがちな、「これは、、、極上のキータッチだぁ!!」みたいな大袈裟な感動は全くないのですが、気づいたら何か文字を打ちたくなっている感じです。

今回のキーボードは初めてである点が多いので、何がそんなに楽しいと感じるのかまだ自分でもわかっていないのですが、この辺も解明したいですね。

↓この辺りのどれかが自分に合っていたんだと思う↓

打鍵音に関しては、ぶっちゃけかなりうるさいです。

とは言っても、このカチャカチャ感が心地よかったりするので、完全に好みの問題だと思っています。

もともと持ち運びは一切考えおらず、据え置き限定で使うつもりだったので、自分にとっては全然マイナスじゃないです。

公式がサンプル動画を出しているので、こちらが参考になるかも。

youtu.be

書き忘れていましたが、こちらのキーボードはまあまあ高さがあるので、パームレストは必須です。

僕は公式のパームレストをセットで購入して使用しています。

気になるところ

こちらが1週間使ってみて気になった点です。

  • キーキャップの素材があまり好きじゃない
  • スペースキーが長すぎる
  • ファンクションキーが中途半端(?)

それぞれ見ていきます。

まずキーキャップの素材に関してですが、デフォルトだとABS素材というものらしく、若干指に引っ付くような感覚があります。

そこまで頻繁に気になるわけではないのですが、素材に関してだけはMacbookのキーボードの方が断然良いと思いました。

PBT素材のものに変えると改善されるとのことなので、もしかしたら今後キーキャップのみ交換するかもしれないです。

次はスペースキーが長すぎるという点です。

これはUS配列だから、というわけではなく「US配列だとしても長い」ということです。

画像からもわかるように、左側は「X」の半分ぐらいまで、右側は「,」の3分の2ぐらいまでスペースキーが占有しています。

Macbookだと「C」から「M」の範囲で収まっているぐらいの長さだったので、大体キー1つ分ぐらいスペースキーが長いです。

僕は左右のコマンドキーで入力リソースの入れ替えをおこなっていたので、コマンドキーに親指を伸ばすのが若干辛くなりました。

それ以外にも、コピペなどのコマンドキーを使う入力は若干しんどいです。

どういった意図でこんなに長くしたのかわかりませんが、この点が唯一明確に不満を持った箇所ですね。

ラストはファンクションキーが中途半端という点です。

まず、Keychronは初期状態でファンクションキーを押すとそのままファンクションキーとして機能します。

ここはMacbookに挙動を合わせたかったので、キーボード本体の設定でデフォルトをメディアコントロールキーとして認識するように入れ替えました。

それにより普通に押した際にはメディアコントロールキーとして機能し、地球儀キー(コントロールキーに割り当てている)との同時押しでファンクションキーとして機能するようになっています。

この時、F5, F6キーだけ挙動が中途半端なんですよね。

Keychronは本体のライトを調整するキーがF5, F6に割り当てられているのですが、ここだけメディアコントロールキーのように動作しません。

なぜかF5, F6に関しては、そのまま押しても地球儀キーとの同時押しでもファンクションキーとして機能します。

キーボードのライトの調整をしたい場合、地球儀キーではなく、右下のfnキーとの同時押しをする必要があります。

キーの配置的に、F5, F6をそのまま押したときはキーボードのライトの調整を行なってほしいのですが、そうではないと言う点が割と気になりますね。

まあ頻繁に触るキーではないのでいいのですが。

以上3点が気になった点です。

追記(2022/07/18)

こちらを参考にすることでファンクションキーに関しては解決しました。

www.reddit.com

おわりに

色々書きましたが、個人的にはかなり好きなキーボードです。

打ち心地の良さはもちろんながら、デザインもカッコよく、非常に満足感の高いキーボードだと思います。

最小構成だと結構安価で購入できるので、興味のある方は是非購入を検討してみてもいいかもしれないです。

ではレビューはこの辺で締めさせていただきます〜。