Welcome!

This blog documents my hands-on experience logs

初めてインターンに行ってみた

目次 はじめに 業務内容 1週目:サービス調査 2週目:機能追加 インターンを通して感じたこと 実務のコードに触れる面白さ 周りに相談することの大切さ これから伸ばしたいこと 良かった点 これから半年間で取り組むこと おわりに はじめに こんにちは。 8月上旬から約2週間、初めてのインターンシップに参加してきました。 参加する前は、「実務の開発についていけるのかな」と少し不安もありました。ただ、実際に参加してみると、個人開発ではなかなかできない経験がたくさんあり、とても濃い2週間になりました。 具体的なサービスや実装内容については企業秘密に関わるため書けませんが、この記事では、どんな業務を経験したのか、そこで感じたことや今後やっていきたいことを振り返ってみます。 業務内容 1週目:サービス調査 最初の1週間は、企業が提供しているサービスを調査し、その結果をNotionにまとめました。 サービスの機能だけでなく、AWSの構成やGitHubのリポジトリも見ながら、「この機能はどんな仕組みで動いているんだろう」と一つずつ調べていきました。AWSに触れるのも、大きなリポジトリを読むのも今回が初めてです。個人開発とは規模がまったく違い、実際のサービスがたくさんの技術やコードによって支えられていることを実感しました。 チームの方々にも、見るべきAWSの構成やリポジトリの場所を丁寧に教えていただきました。説明を聞いたあとにもう一度コードを読んでみると、ばらばらに見えていたものが少しずつつながっていく感覚があり、調べること自体が面白くなっていきました。 普段は実装したい機能から考えることが多いのですが、先にサービス全体を知ることで、コードの見え方も変わるのだと感じました。 2週目:機能追加 2週目は、既存サービスへの機能追加を担当しました。 バックエンドではGoとGraphQLを使い、フロントエンドでは追加機能に必要なUIを実装しました。GraphQLは今回初めて触れましたが、実際のコードを読んだりチームの方に教えていただいたりしながら、少しずつ実装を進めていきました。 自分が追加したバックエンドの処理がフロントエンドのUIにつながり、一つの機能として動いたときはかなり嬉しかったです。短い期間の中で、バックエンドとフロントエンドの両方を経験させていただけたことも、とてもありがたかったです。 インターンを通して感じたこと 実務のコードに触れる面白さ 今回特に印象に残ったのは、すでに動いているサービスのコードを読んで、その中に新しい処理を追加していくことです。 個人開発では自分の分かりやすい形でコードを書けますが、実務では既存の設計や書き方を理解したうえで実装する必要があります。「この処理はなぜここにあるんだろう」と考えながらコードをたどり、少しずつ仕組みが分かっていく過程に面白さを感じました。 周りに相談することの大切さ 分からないことが出てきたとき、チームの方々に相談すると、自分だけでは思いつかなかった見方や調べ方を教えていただけました。ただ答えを教えてもらうだけではなく、考え方まで聞けたことがとても勉強になりました。 朝会や出社日の会話も含めて、開発は一人で進めるものではないということを実感しました。質問や相談をしやすい雰囲気を作ってくださったチームの皆さんには、本当に感謝しています。 これから伸ばしたいこと 今回、GoやGraphQL、AWSなど、もっと深く知りたい技術が一気に増えました。また、大きなリポジトリから必要な処理を見つけたり、タスクの優先順位を整理したりする力も、これから身につけていきたいです。 次に勉強したいことが具体的に見つかったのは、今回のインターンに参加したからこその大きな収穫だったと思います。 良かった点 初めてのインターンでしたが、自分なりにできたこともたくさんありました。 朝会で、自分の状況や考えを積極的に発言できた 分からないことをそのままにせず、質問や相談ができた 出社日には、チームの方々と直接コミュニケーションを取れた 特に、初めての環境でも受け身にならず、自分から仕事に関わろうと動けたことは良かったと思います。チームの方々とも思っていた以上にたくさんお話しでき、技術以外のことも含めて楽しく過ごせました。この積極性は、これからも大切にしていきたいです。 これから取り組むこと 今回のインターンで、「もっといろいろな技術を知りたい」「もっとコードを読めるようになりたい」という気持ちが強くなりました。そこで、これからは次のことに取り組んでみようと思います。 技術書を読み、実際に開発する まずは技術書を読んで、気になった技術を実際に使ってみます。本を読むだけで終わらせず、学んだ内容を使って小さなものを作るところまでを一つのセットにしたいです。インプットとアウトプットを繰り返しながら、少しずつ使える知識を増やしていきます。 コードを読む習慣をつける 今回、大きなリポジトリを読む経験をして、コードリーディングの大切さを感じました。普段からいろいろなリポジトリをのぞいて、コードの構成や処理の流れを追う習慣をつけたいです。 最初からすべてを理解しようとすると続かなさそうなので、まずはエントリーポイントや気になった機能から少しずつ読んでみます。 報告・質問を意識する 日頃の開発でも実務を意識して、「今どこまで進んでいるか」「何に困っているか」「何を試したか」を整理するようにします。タスクを小さく分けて優先順位をつけることも、普段の個人開発から練習していきたいです。 エンジニアとの交流を増やす 近くで開催されているエンジニアコミュニティや勉強会にも参加してみたいです。いろいろなエンジニアの話を聞いたり、自分の作ったものを見てもらったりすることで、新しい刺激を受けられたらと思っています。 おわりに 初めてのインターンということで、参加する前は緊張もありました。しかし、終わってみると、実際のサービスやコードに触れたり、チームの中で開発したりと、個人開発だけでは得られない経験がたくさんできました。 特に、自分が実装したものが一つの機能として動いたときの嬉しさは、これからも忘れないと思います。もっと技術力をつけて、次はできることを増やした状態で新しい開発に挑戦したいです。 2週間という短い期間でしたが、参加して本当に良かったです。今回見つけた「もっと知りたい」という気持ちを、そのままこれからの学習につなげていこうと思います。 最後に、2週間にわたって丁寧にサポートしてくださったチームの皆さん、本当にありがとうございました。

2026年8月31日 · 1 min

Ubuntuインストールで沼った私が、Proxmoxを入れたら一瞬で解決した話

目次 はじめに なぜUbuntuにしようとしたか Ubuntu直インストール 試してみたこと なぜうまくインストールできなかったのか Proxmoxに切り替える なぜProxmoxならインストールできたのか ProxmoxでUbuntuを作る おわりに はじめに こんにちは。 今回は、Windows PCにUbuntuを直接インストールしようとしたもののうまくいかず、代わりにProxmoxを導入したところ一発で環境構築できた体験について紹介します。 なぜUbuntuにしようとしたか 新しくPCを購入したことがきっかけです。 以前使用していたPCは充電端子が故障してしまい、サーバー用途としても使えなくなってしまいました。また、以前からUbuntuを利用していたため、新しいPCでもUbuntuを使おうと考えていました。 実際にWindowsを2週間ほど使ってみたのですが、個人的にはフォルダ管理やコマンド操作がLinux環境の方が使いやすく感じたため、Ubuntuを導入することにしました。 Ubuntu直インストール まずは一般的な方法でUbuntuのインストールを試しました。 Ubuntu公式サイトからISOイメージをダウンロード Rufusを使ってUSBメモリへ書き込み USBメモリを挿した状態でPCを再起動 ブートメニューからUSBメモリを選択 「Try or Install Ubuntu」を選択 ところが、「Try or Install Ubuntu」を選択した直後に画面が真っ黒になり、そのまま何分待っても進まなくなってしまいました。 試してみたこと Linuxのインストール時によくあるトラブルを疑い、いくつかの対策を試しました。 セキュアブートの無効化 BIOS設定画面から Secure Boot を無効化しました。 セキュアブートがインストーラの起動を妨げている可能性を考えたためです。しかし、症状は変わりませんでした。 グラフィックドライバの回避(nomodeset) ブートメニューで e キーを押し、起動オプションを以下のように変更しました。 変更前: quiet splash 変更後: nomodeset これはGPUドライバの読み込みを回避し、最低限のグラフィック設定で起動させるための方法です。 GPUとの相性問題を疑って試しましたが、残念ながらこちらも改善しませんでした。 なぜうまくインストールできなかったのか 現時点でも正確な原因は特定できていません。 ただし、セキュアブートやGPU関連の対策を行っても改善しなかったことから、以下のような可能性が考えられます。 USBメモリの相性問題 ISOイメージの破損 Ubuntuインストーラとハードウェアの相性 起動時のグラフィック関連の問題 本来であればUSBメモリを交換したり、ISOイメージを再ダウンロードしたりしてさらに検証すべきでしたが、時間をかけるよりも別の方法を試してみることにしました。 そこで導入したのがProxmoxです。 Proxmoxに切り替える Proxmox VEは、1台の物理サーバー上で仮想マシン(VM)やコンテナを管理できるオープンソースの仮想化プラットフォームです。 導入方法はUbuntuとほぼ同じです。 Proxmox公式サイトからISOイメージをダウンロード USBメモリへ書き込む USBから起動 インストーラの手順に従ってインストール インストール中にはネットワーク設定を行うため、設定したIPアドレスは控えておくことをおすすめします。 なぜProxmoxならインストールできたのか 正確な原因は不明ですが、Ubuntu DesktopのインストーラではGPUやGUI周りの処理が必要になります。 ...

2026年6月5日 · 1 min

rodoの技術的な話

目次 はじめに 使用した技術スタック一覧 アプリケーション ディレクトリ構成 golang 1.ルーティング(main.go) 2.アプリケーション機能(handler.go) 3.データベース(mysql.go) サービス基盤 Docker kubernetes おわりに はじめに 前回のルーム型To-Doアプリを作ってみたの技術スタックについてまとめていきます。 以下はRodoのgithubリポジトリになります。 https://github.com/szakky/rodo 使用した技術スタック一覧 使用言語: Go, HTML DB: MySQL インフラ: docker ,kubernetes ,cloudflare アプリケーション ディレクトリ構成 ├── db/ │ └── mysql.go ├── templates/ │ ├── room.html │ └── top.html ├── docker-compose.yml ├── dockerfile ├── handler.go └── main.go golang 1. ルーティング(main.go) ここでは、アプリケーション機能をどのようにしてルーティングしているか説明していきます。 package main import ( "database/sql" "log" "net/http" "todo-api/db" _ "github.com/go-sql-driver/mysql" ) var conn *sql.DB func main() { var err error conn, err = db.Connect() if err != nil { log.Fatal("db error:", err) } defer conn.Close() //kill db connect if err = conn.Ping(); err != nil { log.Fatal("db error:", err) } log.Println("db connected") log.Println("ready") http.HandleFunc("/", topPage) http.HandleFunc("/room/", roomPage) http.HandleFunc("/add", add) http.HandleFunc("/update", updateTask) http.HandleFunc("/delete", deleteTask) http.HandleFunc("/delete-all", deleteAll) log.Println("waiting for requests...") http.ListenAndServe(":8080", nil) } todo-api/db パッケージは次のmysql.go をインポートしています。グローバル変数conn は、*sql.DB dbの接続情報が入っています。todo-api/db パッケージを使って、データベースと接続し、結果として接続情報(conn)と、エラー(err)を受け取ります。db.Connect() が成功しても、ネットワークの問題で通信ができないこともあるので、conn.Ping() で通信ができるかチェックします。http.HandleFunc()は、URLのパスに対して、どの関数を実行させるか設定しています。これでhandler.go のアプリケーション機能を呼び出しています。そして、http.ListenAndServe() でポート番号8080 番のサーバーを起動させ、アクセスを待つ状態にします。 ...

2026年5月6日 · 6 min

ルーム型To-Doアプリを作ってみた

目次 はじめに 開発経緯 具体的な使い方 トップページとルーム作成 ルームページとタスクの追加 タグとメモ入力 その他の活用事例 実装とアプリケーション基盤 Dockerによるイメージ化 Kubernetesでのデプロイ 開発で苦労した点と学び おわりに はじめに こんにちは。今回、個人開発で作成したルーム型To-Doアプリ"Rodo"について紹介していきます。 RodoのURL: https://rodo.yashiro.org 開発経緯 一般的なTo-doアプリは、個人を識別するためにアカウントの作成・認証が必要になります。 サクッと複数人でタスク管理したい場合は、アカウントの作成・認証に時間がかかり不便と感じることが多くありました。 そこで、ルーム名を入力するだけで「早く」「簡単に」「誰でも」作って共有できるTo-Doアプリを開発しようと考えました。 チームメンバーや他の人にルーム名を共有し、チームでのプロジェクト管理や、複数人でのタスク管理にも有用です。 具体的な使い方 本アプリは、シンプルかつ迷わず使えるUIを意識して設計しています。 トップページとルーム作成 トップページにはルーム名を設けています。 ここで入力した文字列がそのまま「ルーム名」となり、新しいルームが作成されます。次回以降も同じ文字列を入力するだけで、すぐに同じルームにアクセスできる手軽な仕組みにしました。これにより面倒なユーザー登録なしで、すぐに使い始められます。 ルームページとタスクの追加 ルームに入ると、共有されているタスク一覧が表示されます。 「読書」や「運動」など毎日の作業を、直感的な操作でどんどん追加していくことができます。 タグとメモ入力 単にタスク一覧を表示するだけでなく、それぞれのタスクに「タグ」と「メモ」を追加できるようにしています。 これにより、タスクのジャンル分け(例:「日課」「家事」など)や、メモにちょっとした備忘録を残すことができます。 その他の活用事例 以下のように学校のグループワークをする際に作業分担を管理する時にも有用です。 実装とアプリケーション基盤 バックエンドからフロントエンドまで、できるだけシンプルな構成を目指しました。 アプリケーション基盤は、dockerやkubernetesを活用して構築しています。 Dockerによるイメージ化 開発に使っているPC上で docker build を行い、アプリケーションのコンテナイメージを作成しています。イメージは、そのまま Docker Hub 上に push して保管しました。 Kubernetesでのデプロイ 用意したマニフェストファイル(DeploymentやServiceなど)をkubectl apply -f コマンドでデプロイしています。 詳しい実装とアプリケーション基盤に関しては別の記事で紹介する予定です。 開発で苦労した点と学び 今回の開発を通して苦労した点は「Goにおけるルーティング(URL)の設計」です。 開発の初期段階では、トップページを /topPage、ルーム画面を /roomPage といった具合に、画面の種別に依存したURL設計をしていました。しかし、実装を進めるうちに「もっと自然で直感的なURL構造にすべきだ」と考え、トップページを / に、ルーム画面を /room/(設定したルーム名) となるように設計を変更しました。これにより、URLを見ただけでどのルームにいるのかが分かる直感的なURL設計に改善できました。 さらにデータの扱い方も見直しました。。Go側で .Query().Get(“room_id”) を使用してリクエストからルーム名を取得し、それをキーにしてMySQLからタスクや情報を取得するように実装しています。URL設計からデータベースとの連携まで、初期段階から大きくコードを改善できたのは個人的にも良い経験になりました。 ...

2026年5月4日 · 1 min