tomoriのブログ

tomoriのブログ

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

7、8月の目標リスト

諸事情により7、8月の内定者アルバイトの予定が飛んでしまったため、内定先の人事さんとの面談を通して、それに代わる目標を立てました。

決意表明を兼ねて、こちらに書き綴ろうと思います。

目標リスト

ざっくりと7、8月の目標(予定)を列挙します。

個々の説明は下の方で行っています。

研究室系

  • Secret Sharingの理論を一周する
  • MPCの基礎へ入門する

42Tokyo系

  • Philosophersクリア
  • minishellクリア

エンジニア系

  • AWS講座完了
  • SNSのクローン作成

その他

  • ISUCONの勉強
  • ISUCON予選参加

研究室系

自分が所属している研究室では、暗号・圧縮技術や機械学習の応用分野を扱っており、その中の1つである「MPC(Multi Party Computation)」に関する内容を卒業研究のテーマにしようと考えています。

MPCを学ぶにあたって、秘匿情報をパーティ間で安全に共有する技術である「Secret Sharing」の理論から学び始めるとよいと教授から助言を頂いたので、夏場にそこを重点的に勉強しようと予定しています。

正直、現時点では不透明な箇所が多いため、こちらは進めつつ都度目標設定を調整しようと思います。

42Tokyo系

6月でランク2の課題が全て終了したので、7、8月ではランク3の課題である「Philosophers」と「minishell」をクリアできるように頑張ろうと思います。

現時点で、PhilosophersのMandatory Partは9割以上完成しているので、今週中でBonus Partをやった後、minishellに移ろうと考えています。

minishellは大枠が完成してから更に1月ほどかかると聞いているので怖いですね。

また、自分はpipexではなくminitalkを選択した人なので、minishellに取り組む前にpipexをちょっとだけやろうか悩んでます。

大学卒業までに42cursusのレベル6まで踏み込みたいので、ここは予定通りに進められるように努めたいです。

エンジニア系

AWSの講座が完了した後、そのアウトプットも兼ねてSNSのクローンを作成しようと考えています。

モチベーションは下記の項目を実践するという点にあります。

  • AWSでのインフラ構築
  • 設計
  • 設計に基づく実装
  • デプロイ

アプリケーションを作るというよりは、インフラ構築からデプロイまでの一連の開発フローを再現することに目的があるというイメージです。

特にインフラ構築は初めて取り組むものなので、それなりに学べることも多いだろうと踏んでいます。

ハッカソンなどではないので、学習を最優先に1つ1つ丁寧に取り組めたらいいなと考えています。

その他

学習・経験目的でISUCONへエントリーしているので、そのための勉強をする予定です。

ここ数ヶ月でパフォーマンスチューニング系のイベントに参加する機会が何度かあり、そういった領域にも興味を持っていたところなので、良い機会ですね。

ここも知見がほとんどないので、これを機に色々学ぼうと思います。

2022年6月の振り返り

こんにちは、tomoriです。

気づけば6月も終わり、早くも1年の折り返しの時期ですね。

では、さっそく6月の振り返りをおこなっていきます。

(ここ最近、夏の概念が壊れ始めてる気がするのですが、「夏」ってなんなんでしょうね。)

42Tokyo課題(fract-ol)

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

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

github.com

こちらの課題はグラフィック系の課題の1つであり、少々億劫さを感じていたためクリアするまで時間がかかってしまいました。

内容としては、マンデルブロ集合やジュリア集合といったフラクタル図形を描画するプログラムを組むというものです。

こちらの課題ではMiniLibXというX Window System用の小規模ライブラリを使用しています。

MiniLibXは、後の課題でもお世話になるものらしいので、これを機に色々触れてよかったと思います。

課題のレビューでは、”毎フレームごとに新しいイメージをレンダリングするのか”、”移動や拡大などのアクションごとにレンダリングするのか”、といったパフォーマンスに関する議論もでき、なかなか有意義なものでした。

これでようやくランク2の課題が終わり、次のランクの課題が解禁されたので、7、8月で今取り組める2つの課題もクリアできるように努めようと思います。

作成したプログラムのgif画像↓

マンデルブロ集合

https://user-images.githubusercontent.com/59915788/174652361-1c030d21-f4ee-4203-bb6f-34bf4c141bb0.gif

ジュリア集合

https://user-images.githubusercontent.com/59915788/174652551-634ad1bd-1831-4590-92d6-853860e8acb7.gif

AWS講座

結構前にUdemyで購入していたAWS講座を進めていました(まだちょっと残ってる)。

購入当時はAWSどころかインフラそのものに大きな抵抗があったため、なかなか進めることができなかったのですが、現在はインフラにも興味があり、実務でAWSを見ることもあったため、楽しみながら進められています。

現時点で既に扱ったサービスはざっとこんな感じです。

  • EC2
  • VPC
  • Route 53
  • RDS
  • S3
  • CloudFront

講座で扱った内容以外にも、AWS上でのDockerやKubernetes周りの技術にも興味があるので、講座を終了次第そちらにも着手しようと思います。

完全に余談ですが、講座の都合で独自ドメインを「お名前.com」で取得したのですが、毎日のように設定の催促(迷惑)メールが届き、ちょっとだけ鬱陶しさを感じています()

あれって届かないようにできるんですかね。

iPhone新調

約5年ほど使用していたiPhone 7からiPhone SE(第二世代)へ買い替えました。

高校1年の2月ごろに初めて買ってもらった携帯電話だったので思い入れもあったのですが、バッテリーが50%台まで落ちていたので、さすがに買い換えることにしました。

ちなみにバッテリー50%台の使用感は、充電100%を初期状態として、「就寝前にYouTubeを1時間ほど見て朝起きると残り50%」、「午前中の外出で音楽用途限定で使用していて、帰宅前には残り1%」といったレベルです。

こうやって書くと絶望的ですね。

iPhone SE2を選んだ理由ですが、最近のiPhoneが高すぎる&オーバースペックすぎるという単純なものです。

カメラに関しては、画質を求めるような用途では全く使用していなかったため、iPhone 7のものでも全然問題ありませんでした。

結果、個人的にはiPhone SE2で大正解でしたね。

強いていうなら、ホームボタンがない機種ちょっとだけ憧れるなーぐらいのものだったので、全然妥協できるものでした。

地味によかったのが、iPhone 7とほとんど同じサイズだった点です。

なんというか、最近のiPhoneのサイズは携帯電話としては大きいと思っていたので、片手で操作するにはこれぐらいがちょうどいいですね。

ちなみにiPhone SE2はメルカリの中古で3万弱ぐらいの価格で購入したのでコスパ◎です。

iPad購入

iPhoneを買い換えると同時に、iPad Pro(第二世代)の11インチモデルを購入しました。

こちらはメルカリの中古で7万弱ぐらいの価格でした。

iPadに関しては、何か理由があったわけではなく完全に勢いで購入した形になります。

ちなみに自分には、「最新(iPhone) = 中古(iPad + iPhone)なんだから、いいじゃないか」という風に言い聞かせています。

正直まだあまり使いこなせていない感はあるのですが、電子ノートと動画鑑賞がメイン用途になると思います。

趣味レベルでお絵描きも嗜みたいなぁ、などと考えていますが、絵を描いた経験はほとんど皆無なので、これに関してはどうなるかわからないです。

最低限アイコンだけでも自分で作れるようになりたいと思い、ちょっとだけ練習していました。

某ゆ○くりの絵柄って可愛いですよね。

おわりに

7月に入ってiPhoneiPadが異常なほど値上がりしているのを見ると、自分の購入タイミングは本当に運が良いの一言ですね。

ちなみに現在のメイン機種であるMacBook Airも3月に購入したため、割とギリギリなところで円安効果を回避しています。

ただ、これで完全にiPhoneが贅沢品の価格帯になってしまったので、今後のスマホ選びはAndroidも視野に入れた方が良い気がしてきました。

Apple製品を集めたはいいのですが、こういうことがあると1社の製品に依存するのは怖いですね。

6月は色々ありましたが、振り返りはこの辺で終了です。

7、8月でやることもある程度決まってきたので、こちらは別途記事にしたいと考えています。

ではまた👋👋👋

追記(2022/07/04 15:30)

追加しました。

tksx1227.hatenablog.com

2022年5月の振り返り

あっという間に5月も終わり、早くも6月になりましたねー。

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

microCMSを導入してみた

友人のアイデアを真似てポートフォリオmicroCMSを取り入れてみました。

今までは、コンテンツの管理をプロジェクト内の静的ファイルとして管理していたのですが、これをごっそりmicroCMSの方で管理するように変更しました。

microCMSはヘッドレスCMSと呼ばれるもので、コンテンツの管理に特化したCMSです。

日本製なところもポイント高いですね。

この辺が参考になるかも。

blog.microcms.io

これのおかげで、コンテンツを追加したり編集したりする際に、わざわざ静的ファイルを書き換えてコミットする必要がなくなりました。

ただ、どうもVercelは手動でデプロイができないようなので、microCMS上でコンテンツを編集しても変更が反映されず(SSGを採用しているため)、そこだけが気がかりですね。

なので、結局のところ何かしらの変更をプッシュしてあげないと変更が反映されないという状態です。

手動でデプロイする方法があれば是非教えてください(切実)

追記(2022/06/03)

解決策を教えていただきました☺️

ありがとうございますmm

ドメイン駆動設計入門」を読んだ

結構前に抽選で当選した「ドメイン駆動設計入門」を読みました。

(ファンサービスということで筆者さんのサインがついていますw)

「今さらかよ」って話ですが、開発アルバイトの方でドメイン駆動設計の知識が必要となる場面が多々あったので、「今なら実際のソースコードと照らし合わせながら学べるじゃん」と思い、読み始めたという経緯があります。

当時冒頭をやんわり読んだ記憶はあるのですが、そもそも概念がよくわからず放置していたので、これを機にあらためて向き合うことができて良かったです。

正直、ドメイン駆動設計の思想を取り入れたプロジェクトは実装の難易度がまあまあ上がるのではないかと思ったのですが、機能の追加や変更にタフなプロジェクトになるということは間違いないと感じたので、もう少し実践向けの知識も取り入れていこうと思います。

(この辺の感想は書きづらいので雑にまとめてます。。)

ドメイン駆動設計は何かしらのアーキテクチャとセットで使うようなので、次はアーキテクチャの本を読みたいですね。

内定者アルバイト

3月から参加していた部署でのアルバイトが5月いっぱいで終了しました。

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

tksx1227.hatenablog.com

6月は何もしない予定ですが、7, 8月と9月は別の部署で再度アルバイトをする予定です。

こちらの”内定者アルバイト”という制度ですが、「選考なしでインターン参加し放題」って感じなので、この制度神だなぁと最近よく思います。

人によって参加期間はまちまちとのことですが、自分はとにかくいろんな子会社を見たいと考えているので、最低でもあと3社はまわる予定です。

また、子会社のみならず、職種もある程度希望すれば変更できるとのことなので、サーバーサイドだけでなく一度はインフラエンジニアも経験してみたいという願望もあったりします。

前部署の方から「インフラ寄りのサーバーサイドを経験しながら、徐々にインフラ側にシフトしていく形がいい」とアドバイスをいただいたので、それに従って徐々にシフトしていく予定です。

とにかくやってみろの精神ですね。

おわりに

5月は特にこれといったイベント等がなかったので、質素な感じですね。

まあこんなもんでしょう。

今月は放置していた42の課題を進めつつ、インフラとアーキテクチャ周りの勉強をしようと考えています。

("余裕があれば"ブロックチェーンの勉強もしたいなーと考えていたり)

知識が増えると物事の見え方が変わってくるので勉強って楽しいですよねー、と再確認した1ヶ月でした。

今月も引き続き知識を増やしたいと思います。

ではまた👋👋👋

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

今年の3月頭から5月末までの約3ヶ月間、株式会社CyberZで内定者アルバイトを経験してきたので、その体験記を残していこうと思います。

のちのち自分の部署選びの参考になるというのも兼ねてですね。

配属部署

配属先はCyberZの開発本部で、期間中は「OPENREC.tv」のサーバーチームへ参画させていただいていました。

CyberZはプランナーという役職がないことが特徴のひとつであり、エンジニアが機能提案できるという開発者にとって嬉しい文化があります。

プランナーがガッツリいるところだと、なかなかエンジニアが意見することは難しいかと思うので、ここはかなり魅力的なポイントだと思います。

フルリモートでの参加ということもあり、サーバーチーム以外のチームの雰囲気はわからないのですが、サーバーチームは上下関係があまり見えず、皆フラットな関係という印象でした(ドライって表現をしていたような気もする)。

自分にとってはちょうどいい雰囲気でしたね。

業務内容

自分自身、今までサーバーサイドの実務経験がなく、部署の受け入れ面談の際に「サーバーサイドエンジニアとしての業務のフローを一通り経験したい」という風にだけ伝えていました。

そういった意を汲んでいただき、期間中は幅広い業務を経験させていただきました。

取り組んだ業務内容は主に下記の3つです。

  • 既存APIの改修
  • 既存APIの機能拡張
  • マイクロサービスの設計・実装

APIの改修や機能拡張に関して、内容こそそこまで複雑ではなかったのですが、ソースコードの規模が大きいと言うこともあり、最初はどこに何があるのか全く理解できずに焦っていたことを今でも覚えています。

時間をかけて後から理解できたのですが、自分が関わった全てのプロジェクトには「クリーンアーキテクチャ」と「ドメイン駆動設計」が採用されており、とても整理されたものでした。

しかしそれを知ったところで自分が実装できるかは別問題なわけで、SlackやPRレビューの中で何度もご指摘いただきながら、アーキテクチャのルールやアンチパターンについて学習したと言うのが正直なところです。

やはり、この辺は座学で学ぶだけじゃなく実践と並行して学ぶことが最も効果的ではないかと感じています。

そして、後半はマイクロサービスの設計から実装までを担当させていただきました(実装は途中で引き継ぎ)。

自分が担当したマイクロサービスの設計は、ほとんど白紙に近い状態でアサインしていただいたため、とてもやりがいのある内容でした。

とは言ったものの、やはり難しい。

具体的には下記の4項目を考え、設計書に落とし込むと言う内容でしたが、まあ難しい。

  • 処理のシーケンス
  • DBテーブル
  • リソース
  • APIエンドポイント

DBのテーブル設計はお遊び程度でしかやったことがなく、実際のプロダクトだと本当に考慮することが多いんだなぁと実感しました。

一部を紹介すると、「処理を追従するためのステータスが必要かどうか」だとか、「ログはどこまで細かく辿れるようにすべきか」「どのようにテーブルロックをかけるのか」「途中で処理が失敗した場合のロールバックはどう実現するのか」などといった今まであまり考えたことのないような細かなところまで考慮する必要がありました。

設計はレビューの中でも「わかりづらいね」と言うご指摘を何度もいただき、「ヤベェ、これ爆弾を残してしまうのでは…?」と何度も思いましたね…

エンドポイントに関しては、アドミン用と一般ユーザー用で分けて考えており、「アドミンで〜な操作ができた方がビジネス側に優しいよね」と言った観点で適宜エンドポイントを追加したり削除したりということを繰り返していました。

兎にも角にも、この設計が最も難しかったです。

設計の大枠がフィックスされたタイミングで実装も並行して進めていました。

実装は、既存のマイクロサービスを参考に雛形を作成、エンドポイントごとにインターフェース、ロジックを順次追加してPRを出すといった形で進めており、途中で引き継ぎという形になりました。

実装の大半が完了せずに終わってしまったことだけが心残りですね。

学んだこと

正直、この3ヶ月間で経験できた全てが学びだと感じています。

と言うのも、やはり業務未経験で参加したこともあり、とにかく初めて経験することが多く、アウトプット以上に圧倒的にインプットが多かったからです。

クリーンアーキテクチャドメイン駆動設計など、アルバイト開始前からちょっとだけ調べていたこともあったのですが、やはり実際のプロダクトのソースコードを触ることでより理解が深まった実感があります。

また、サーバーサイドの一連のフローどころか、まさか設計フェーズを経験できるとは考えてもいなかったので、実践的な業務も経験でき大変満足しています。

まとめ

いろいろ書きましたが、初歩的なところから実践的なところまで経験することができたので、とても充実かつ満足した3ヶ月間でした。

この期間でサーバーサイドの業務の全体像を把握できたため、次の部署ではより具体的な目標設定ができそうです。

次の部署はまだ決まっていないのですが、ここでの経験を活かして活躍できるように頑張ります!!

では体験記はこの辺で締めさせていただきます👋👋👋

2022年4月の振り返り

今月から自分の活動を記事として記録していこうと思います。

では、さっそく先月の振り返りを始めていきます。

研究室配属

4月から大学4年生になり、研究室への配属が決定しました。

自分が配属された研究室は、データ圧縮や暗号化に関する研究をメインでおこなっており、自分も例に漏れず暗号に関する研究に取り組もうと考えています。

5月頭の現時点では、週に2回のゼミがあり、機械学習の基礎とマルチパーティー計算(秘密分散)に関する輪読をおこなっています。

ただ、機械学習の基礎はいいものの、マルチパーティー計算に関しては全く理解できず苦しんでいたりします。 入門書のようなものがなさそうな分野なので、どうしたものかと頭を抱えているというのが正直な現状です()

内定者アルバイト

2022年3月から内定者アルバイトとして配信サービスのサーバーサイドエンジニアをしており、先月も引き続きそちらに参画させていただいていました。

3月は実務への戸惑いが8, 9割という状態でしたが、1月もたてば業務にも慣れ、なんの困難もなく日々活動できている、、、と思っていましたが、そんなことはなかったです。

時間の経過とともに段階的にタスクの重さを調整していただいているため、常に学びの連続というのが現実です。

3月は既存APIの改修というのが主なタスクだったのですが、4月から現在にかけては改修や機能追加にとどまらず、新機能の設計段階から1つのプロジェクトを丸々担当するところまで任せていただいています。すごい。

正直、現時点での自分の知識はかなり不足している自覚があるため、並行しながらインプットを絶やさないように心がけようと思います。

Tuning the backend Contest

42Tokyoさんとドリーム・アーツさんの合同イベントに参加してきました。

内容としては、運営側で用意していただいたウェブアプリケーションのパフォーマンスを、3日間かけて改善するというものでした。

今までバックエンドのパフォーマンス改善に取り組んだことがなく、かなり手際の悪い内容となってしまいましたが、手探りながら学べることも多かったイベントでした。

具体的には、データベースのインデックスの効果やクエリの組み合わせ、静的ファイルのキャッシュなどなど、実際に変更を加えることでパフォーマンスへの影響をリアルタイムで確認できたので、結構やってて面白かったです。(1日目は進捗なさすぎて心折れかけましたが)

DevSecOpsThon

つい先日、GMOさん主催のDevSecOpsThonというインフラハッカソンに参加してきました。

GMO Developers | DevSecOpsThon at GMO kitaQ

ネタバレ防止のためにイベントの詳細は記載できないのですが、物理サーバーの構築段階から、サーバーのチューニングまで幅広い領域を扱う新鮮なイベントでした。

チームでの競争という形にはなっているものの、イベントの構成的に特定チームだけが置いていかれるようなことは起きず、各課題に対する対応をしっかり実践できる最高の場でした。

どこまで伏せるべきか判断がつかないため、上記のようにすごくモヤッとした書き方になってしまいましたが、イベントの構成が本当に本当に良かったです。

この3日間を通して、インフラに対するアレルギーが無くなるどころか、なんならインフラエンジニアちょっと興味ある、というところまで来てしまったため、時間を作ってこちらも学習しようと思います。

おわりに

4月は色々な出来事があり、楽しむだけでなく、学べたこと、これから学びたいこと・学ぶべきことなどがいくつか発見でき、とても有意義かつ充実した1ヶ月でした。

また、たった3日間のイベントでインフラへの印象が180度変わったように、価値観を広げてアップデートするためには、自分自身で体験することが最短なのだと改めて実感しました。

僕が大学生でいられる期間は、下手なことをしない限り残り一年を切っているので、残り期間、とにかく興味のあることや面白そうなことを自分で体験していこうと心がけていきます。

ではまた👋👋👋