ryo’s blog

日々学んだことをまとめています.

2022年5月振り返り

42 Tokyoで取り組んだこと

Goの課題

期間限定の課題でした。チームで取り組むこともあって楽しかったです。 あまり関わりがなかった方とも協力して取り組めたのがよかったかなと思います。 いずれはGoroutineを使った平行処理なんかも試してみたいです。

HTTPサーバーの実装

3人チームで始めました。まだ始まったばかりですが、チーム課題は学びが多いです。
自分は要件で求められている挙動やnginxのconfigのルールなど調べてました。 upload_moduleの使い方がややこしかったのでお試し用のリポジトリを作りました。

github.com

読書記録

先月は4冊読みました。 図書館で何冊か借りてきたので今月も色々読みたいです。

オブジェクト指向でなぜつくるのか

オブジェクト指向の生い立ちからその使い道、そこから発展した設計の仕方などが学べました。 新しい技術と出会ったときに、使い方だけでなく、なぜその技術が存在するのかを考えると良さそうです。

ネットワークはなぜつながるのか

Webページを表示する仕組みについて段階ごとに解説されていました。 TCP/IPイーサネットなどプロトコルレベルでの通信の手順を学べたのが良かったです。

Web技術がしっかりわかる教科書

昨年出版されているので、HTTP/3、FaaS、サーバーレスアーキテクチャなど、新しめの技術についても多少触れられていました。 これからWebの勉強をしようと考えている人は、 「Web技術がしっかりわかる教科書」→「Webを支える技術」→「ネットワークはなぜつながるのか」 の順に読むと基本的なしくみが理解できそうです。

アジャイルイントロダクション

今月からチーム課題に入るので事前に読んでみました。 入門編らしく知っている内容が多かったです。チームでの役割分担やペアプロなどの話がありました。

おわりに

最近fukabori.fmを聞きはじめました。音声メディアいいですね。
土曜の夜はカスミンのラジオを聞きましょう。

2022年4月振り返り

42 Tokyoで取り組んだこと

C++STLコンテナ再実装

github.com

C++リファレンスを読み漁る日々に別れを告げました。
vectorやmapなど、データ構造の内部実装が知れて面白い課題でした。

内容が濃かったので、気が向いたら別途記事を書こうかなと思います。
スタートからちょうど3ヶ月くらいかかりましたね。

Goの課題

期間限定で約3週間に渡るGoの課題です。 便利な関数が禁止されているので、基本的な文法を学ぶことに重点を置いている感じがします。 5月の中頃までつづくので地道に進めていこうと思います。

Tuning the backend Contest

github.com

42 Tokyo x 株式会社ドリーム・アーツのイベントでした。 42時間でパフォーマンス・チューニングを行うイベントで、3人1チームで合計100名以上の学生が参加しました。

私はオンライン参加だったので、常にチームでボイチャを繋いで気軽に相談し合えるような環境で進めていました。 思った以上に上手くいかず、チームでもがき続けていましたが、それもいい経験だったと思います。 久しぶりにつら楽しい感覚を味わいましたね。

学ぶことがたくさんありましたが、特に重要だなと感じたのは以下の3点です。

  • 闇雲に取り掛かかるのではなく、どこがネックなのか測定すること。
  • 何となくググって出たものを試すだけではダメ。
  • どこに原因があるのかを論理的に考えて、仮説と検証を繰り返して改善していく事が大事。

これらは普段から活かせそうなので、今後に役立てていこうと思います。 改めて素敵なイベントを開催していただいた42のスタッフ陣とドリーム・アーツの皆様には感謝です。

その他

開発合宿

42の学生、約10名で一泊二日の開発合宿に参加してきました。 それぞれ開発テーマは自由だったので、自分は興味があったWebAssemblyでHello Worldしてました。

夕飯を食べながら、普段話さないような内容で盛り上がったりして楽しかったです。 オンラインが中心になった今でもリアルでのコミュニケーションは魅力的だなぁとしみじみ感じました。

翌日にもみんなで温泉に行ったりと2日間最高な時間を過ごせました。 これまであまり話したことがない人とも交流できてよかったです。

インタビュー企画

note.42tokyo.jp

42 Tokyoの学生インタビュー企画で自分も紹介していただきました。 他にも複数人の記事が公開されているので、42に興味がある方はぜひ読んでみてください!

インターン

なんとなくワイシャツで出勤していましたが、服装自由なのでパーカーで通うようになりました。 朝のアイロン掛けの時間が短縮されることに喜びを感じました。

少しずつ慣れてきたので、実装の精度とスピードを上げていきたいですね。

読書記録

今月も朝の読書会で何冊か読みました。

SQL 第2版 ゼロからはじめるデータベース操作

SQLの機能や文法についての説明が多めで、はじめの一歩にはちょうどよい分量と読みやすさに感じました。 パフォーマンス・チューニングなどはあまり触れられていなかったので、必要に応じて中級編のSQL本も読んでみようかなと思います。

理科系の作文技術

知り合いのエンジニアの方から相手に伝わりやすい文章を書く能力が重要だという助言をいただいたので読んでみました。 自分があまり意識していなかった文章を書く上で気をつけるべきポイントがまとまってあり、読んでよかったと強く感じました。
意見と事実のかき分け方や文章の白さを意識することなど、知っているだけでも今後に活かせそうなことがいくつもあったので、これから文章を書くときに役立てていきたいです。

オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識

7割位まで読みました。前半はC++の勉強で知っていたことが多かったです。 途中あたりから、オブジェクト指向の考え方を設計や要件定義など上流工程にも役立てる方法などが解説されていて、興味深かったです。 残りの章も面白そうなのでゴールデンウィーク中に読み終える予定です。

おわりに

最近はネコの動画をたくさん見てました。
来月からHTTPサーバー実装の課題がはじまるので楽しみです。

2022年3月振り返り

42 Tokyoでの取り組み

  • C++STLコンテナ再実装

mapの実装をAVL木で実装しました。
これで必須パートのvector、stack、mapの実装が終わったことになります。

残りは細かい仕様の確認と実行速度の改善など行っていく予定です。

4月中旬には完成させたいですね。


42 Tokyo x 株式会社ドリーム・アーツのイベントでした。

耐障害性など普段あまり考えたことがなかったので、勉強になりました。
内容についてはnafuka11さんがまとめられています。

nafuka.hatenablog.com

その他

グループワーク形式でDBやAPIの設計について考えられて楽しかったです。
チームで良い設計について議論ができて学ぶことが多かったです。 LTはDB設計の話が特に勉強になりました。

少しずつRuby on Railsでの開発に慣れてきました。 できることも微量ながら増えてきたので、今後も42の課題と並行して取り組んでいきたいです。 また普段オフラインで業務しているのですが、気軽に隣にいる人に質問できるのは魅力的だなと感じています。 オンラインの場合だと質問するのにも文章を考えたり、返答に時間がかかったりと色々コストがかかるので、オフラインならではのメリットもありそうです。

読書

先月から引き続き読書会に参加して色々読みました。

基礎の基礎から丁寧に解説してあるので、考え方や解法の導き方など順を追って学べました。

まだ解けていない練習問題があるので、移動中などに考えるようにしています。 今後も時間を見つけて残りの問題も解いていきたいです。

学生時代にあまり数学を学んでこなかった方こそ読むべき一冊だと感じました。

問題の解き方が学べるというよりは、数学的思考力の必要性や実際にどのように考えるかなどを知ることができました。もっと早くに読んでおきたかったです。とてもオススメです。

今のところ順調に読み進められているので初心者に優しい本です。 0章の環境構築がWindowsしか書いていないので、一瞬つまずきかけました。Macユーザーにも優しくしておくれ。。
まだ3分の1くらいしか読めてないので続きは来月に持ち越します。

  • タコピーの原罪

久しぶりにちゃんと漫画を読みました。

おわりに

桜の季節はロゼワインが飲みたくなりますね。
食事と合わせやすいので、普段飲まない方もぜひ試してほしいッピ。

2022年2月振り返り

42 Tokyoでの取り組み
  • ターミナル上に回転する3dモデルを表示する課題

github.com

ペア課題でターミナル上に3dモデルを表示するプログラムを作成しました。

お互い空いた時間に進めようと話していましたが、ペアの方がめちゃめちゃコミットしてくれたので、自分も1週間ほぼこれだけやっていました。短期間で学ぶことがたくさんあり楽しかったです。

自分たちは平行投影で実装しましたが、中にはレイトレーシングで実装しているチームもありそれぞれ個性があって面白い課題でした。

反省点としては互いのコードをレビューをする時間があまり取れていなかったことです。
事前に防げそうなバグが後から見つかったので、プルリク時のコードレビューで少しでも気になった点は気軽に質問し合うべきでした。反省です。
今後のペア課題に活かしたいと思います。


  • C++STLコンテナの再実装

ひとまず vectorと stack の実装まで終えました。

本家と実行速度の比較など細かいテストはしていませんがひとまず動くようになったのでmapの実装に入ろうと思います。

内部で平衡二分木を使用するので、AVL木とRB木のどちらで実装するか考え中です。 今の所比較的シンプルに実装できそうなAVL木でやろうかな〜と心が揺らいでいます。

その他

Webを支える技術を購入しました。

今月の頭にこのような投稿をしたところ、

と42の友人に声を掛けてもらったので、
それから毎朝1時間読書会を行っています。

それぞれ学んだ内容を発表し合っているので、様々な知識が身についていい感じです。
ぜひ今後も継続していきたい。。

ちなみに今月は

以上3冊読みました。

Webを支える技術は、いつか読もうと思っていたのでこのタイミングで読めて良かったです。

過去の自分の投稿を見ると内容も良かったみたいですね。

ちなみにアルゴリズム x 数学本は読破できず。。

急いで読むものでもないので今後も地道に読み進めていきます。


Railsを用いたインターンに今月から参加しています。

オフラインなので運動不足が解消されそうです。わーい。


完走しました。

そしてこちらが感想記事。

ryo-manba.hatenablog.com

おわりに

振り返ってみると今月も色々取り組んでいたみたいです。 3月も頑張るぞ〜。

Rails チュートリアルを完走した

はじめに

今月からRailsを用いた開発に携わることになったので、かの有名なRails チュートリアルに取り組んでみました。 大体かかった期間は1ヶ月です。

内容

TwitterのようなSNSアプリケーションの開発を通して学びます。

MVCモデルとはなんぞやというところから始まり、少しずつステップアップしていくことができます。

ソースコードは全て記載されているので、文法などを学びつつ写経(or コピペ)して進めていきます。

感想

率直な感想としては、Webアプリケーション開発の基礎を学ぶのにとても良い教材だと感じました。

その代わり分量がかなり多いので、完走するぞ!というモチベで取り組まないと途中でやめてしまう気がします。

また手取り足取り教えてくれるので、自分で考えて課題解決しながら学んでいきたいという方にも向いていないかもしれないません。

個人的には、これまでC言語C++などでCUIのみで動作するプログラムの開発を行うことが多かったので、楽しみながら学習することができました。

事前にRubyの文法について学習していたので、文法面では大きく戸惑うことはありませんでしたが、HTML、CSSに関してはかなりなんとなくで進めていました。。

テスト駆動開発をベースに進めていくので、開発手法も学ぶことができて、今後に繋がる良い学習となりました。

今後取り組む方へ

完走してみて重要だなと思ったことは、

  • 1周目はざっくり理解でサクサク進める。
  • なるべく時間は空けずに進める。

この2点です。

分量がかなり多いので、全てを1周目に理解しようとするとかなりの時間がかかります。
気になった点があれば調べても良いと思いますが、なるべくサクサク進めてしまった方が良いと思います。

私自身、現在2周目に入っていますが圧倒的に内容が頭に入ってきている気がします。
なんとなくで進めていたところも2週目となると理解できるようになってくるのでオススメです。

また時間を空けてしまうと、嫌になって挫折してしまうかもしれないので、ぜひ短時間で進めることを意識してみてください。

おわりに

Webアプリケーション開発の基礎的な部分が学べて良かったです。復習しつつ理解を深めていこうと思います。

これが無料で見れるのは激アツだと思うので、興味ある方はぜひ試してみてください。

2022年1月振り返り

はじめに

活動を振り返ることで、自分の現在地や次のステップが見えてくるという噂を耳にしたので、今年から毎月振り返り記事を書きます。(いつまで続けるかは不明)
主に42 Tokyoでの取り組みが中心になりそうですが、さっそく振り返っていきます。

42 Tokyoでの取り組み

約3ヶ月前から取り組んでいたレイトレーシングのペア課題をクリアすることができました。
ベクトルの計算すらあやふやな状況からのスタートだったのでかなり苦戦しました。
グラフィック系の課題は分かりやすく結果が出るので、予想通りに表示された時の達成感が大きかったです。 ペアを組ませて頂いた方には大変お世話になりました。感謝です。

C++の課題は8つステップで構成されてあり、クラスや継承、例外などC++独自の構文やルールを通じて基本的なOOPについて学ぶことができました。
この課題もレイトレーシングの課題と並行してコツコツ進めていたので、なんとか終わらせることができて良かったです。
今月は勉強会と称して毎日3〜8人くらいでボイスチャットに集まって進めていました。ピアラーニングのおかげでいいペースで進めることができて良かったです。

その他

2022年の目標であったインターン採用をしていただきました。嬉しい。。
来月からRuby(Rails)を用いた開発に携わらせていただく予定です。

  • Rubyの勉強を始めた

インターンで使用する予定なのでRubyの勉強を始めました。
AtCoderのABCのAB問題をRubyで解いたり、RailsでTODOリストの作成などを行いました。

今やっていること
  • STLContainersの再実装

具体的にはvector, map, stack, setなどのデータ構造とイテレーターの再実装に取り組んでいます。

江添亮の入門C++ | 江添亮のC++入門を参考にvectorの実装から進めていますが、なかなか時間がかかりそうです。。

途中まで読みました。
後回しにしてしまっているので来月中には読破する予定です。

始めたばかりなので、まだまだこれからです。頑張りたい。

おわりに

来月からは42の課題と並行してインターンでも貢献できるよう精進していきます。
2月も頑張るぞ。

2021年振り返り

軽い自己紹介

25歳ソムリエの Ryo です。以前はミシュラン2つ星レストランやワインバーに勤めていました。
現在はエンジニア転職を目指して、42TokyoでC言語を中心にコンピュータの基礎から学習しています。

はじめに

2021年を一言で表すと
「42」
これにつきます。
1月に入学試験のPiscineに参加し、4月に入学してから毎日約10時間以上を学習に費やしてきました。
そんな怒涛の一年間を振り返ってみます。

42で行ったこと

カリキュラム

  • libc, fgets, printfの再実装

  • TCP/IPサブネットマスクなどネットワークの基礎知識を学ぶ課題

  • DockerでLEMP環境の構築

  • シグナルを使ったメッセージの送受信を行う課題

  • 2つのスタックを限られた操作でソートする課題

  • X Window Systemのラッパーライブラリを利用してfractalを表示する課題

  • 食事をする哲学者の問題

  • bashの再実装(ペア課題)

  • debianをインストールしてパスワードポリシーやパーティションなどの基本設定を行う課題

  • IPv4のルーティングを学ぶ課題

その他

  • テストフレームワークの実装(ペア課題)

  • Go, Node.js, Vue.js の基本的な構文を学ぶ課題

  • 2週間に渡るPython版Piscineの参加

  • コードレビューを100回行う(課題によるが1回につき1時間程度)

  • 亀山会長に腹筋を見せる

  • Tutorになる

個人的に行ったこと
触った技術

C言語
1年間ほとんどCでコードを書いてました。 libcの再実装から始まり、2ヶ月間かけてbashの再実装を行ったりしました。

C++
主に競プロで利用していました。42の課題を通して基本的な構文やオブジェクト指向プログラミングについて学び始めています。

Python
42のPython Piscineをきっかけにちょっとした作業で使ったりしています。 Discord Botの作成、NBA API を利用したデータのグラフ化などを行いました。

Go
42の課題で軽く触れました。これから本格的に勉強していく予定です。

Node.js
Node.jsとsqlite3を利用してCRUD操作を行うREST APIを作成しました。

Vue.js
42の課題で軽く触れました。

印象的な課題

約2ヶ月に渡るbashの再実装は、これまで取り組んできた課題の中で一番濃かったです。
GitやNotionを利用して細かく情報共有を行いながら課題を進めていきました。
マニュアルやbashのソースを読みこむ必要があり、実装量も多いため時間をかけた分、学ぶことがたくさんあったように思います。
ここでコードの読みやすさや一貫性、機能の疎結合化などを意識するようになりました。
またペアの方がエンジニアとして10年以上の経験があったため、課題の取り組み方や実装方針の立て方、困難にぶつかったときの解決方法などを教わりました。
現在はここで学んだことを意識して日々の課題に取り組んでいます。

印象的なできごと

詳細は省きますが、亀山会長に腹筋を見ていただくという貴重な経験をしました。今年こそはマッチョになりたいです。
42TokyoのTutorになれたことも印象的でした。今後も積極的にコミュニティに貢献していきます。

今やっていること

Raytracingのペア課題に取り組んでいます。これでC言語の課題が終わるので1月中に完成させたいです。 C++、Goの勉強も少しづつ行っています。

今年の目標
  • firstcircle突破

  • AtCoder 入緑

  • アルバイト or インターン or 就職

  • ブログを月1回以上更新

改めて1年間を振り返って

42Tokyoで多種多様な人達と出会い、ともに成長していくことができたと思います。 さまざまな価値観や考え方に触れることで自分にない気づきを得ることもありました。 今後もピアラーニングを通じて成長していきたいです。

おわりに

出会ったすべての人に感謝です。2022年も頑張ります。