GCC 2025 Taiwan 体験記

GCC 2025 Taiwan参加 「GCC 2025 Taiwan」というイベントに参加しました。 GCC 2025 TaiwanはGlobal Cybersecurity Camp 2025 Taiwanの略で、「国籍・人種を超えた専門知識のあるグローバル人材の育成」と「国境を超えた友情とゆるやかなコミュニティの形成」を目的としたイベントです。日本、シンガポール、韓国、台湾、タイ、ベトナム、マレーシア、インドネシア、インド、ルーマニアの10カ国が参加し、各国から数名の学生が参加するイベントです。 今回選考に通ったので、参加させていただくことになりました! イベントの詳細なスケジュールや、講義の内容などは以下のサイト等を参考にしてください。 GCC Security Camp Committee ここではGCCに参加し、印象に残っていることと、学んだことを紹介します。 初めての海外 GCCで台湾に行くのが、私にとって初海外でした。飛行機が台湾に着陸し、検査場を通った時は、とてもワクワクしました。事前に契約していたeSIMが正しく認識するのに手間取り少し焦りました(笑) 一日目は、アイスブレイクパーティーがありました。様々な国の受講生と話をしました。私は英語が苦手なので、なかなか聞くことも伝えることも時間がかかりましたが、日本のアニメや歌手、アイドルなどの話で盛り上がりました。受講生の多くがCTF好きで、流石だなと感じました。 印象に残った講義 二日目以降は朝から夜までセキュリティの講義がありました。サニタイジングとC++のバイナリ解析の講義が特に面白かったです。私はCコンパイラを自作したことがあり、サニタイジングのことについても少し聞いたことがありました。しかしサニタイジングを実装することまではしたことがありませんでした。講義では簡単なサニタイジングをコンパイラに実装するというもので、やりがいがありました。グループのメンバーからもDiscordで質問されて、答えられたのも良い思い出です。 カーネルエクスプロイトの講義は、難しすぎてほとんど理解することができませんでした。基礎の基礎から勉強する必要があるなと感じました。勉強するためのサイトなどを教えてもらったので、コツコツと進めていきたいです。 グループワーク 講義の他にグループワークもありました。私たちのグループは台湾、韓国、インド、タイ、ベトナムの方で構成されていました。グループワークでは各グループに課題が割り当てられ、最終日にその課題をクリアして発表するという内容でした。私たちの課題はSSOのロガーの実装でした。 講義は夜まであったので、グループワークはその後グループメンバーのホテルの部屋で行いました。毎晩夜の3時ごろまで取り組み、何とか最終日までに実装を終えました。グループのメンバーはとても仕事が早く、私がSSOの仕様を調べている間におよそのUIを作ってくれていました。私はSSOで使われるプロトコルの仕様を調べるのと、実装部分の修正、プレゼンで使用する資料の作成を手伝いました。グループメンバーの方がとても親切で、英語が得意ではない私のために、Discordでやり取りをしてくれたり、ご飯にも誘ってくれたり、色々と気遣ってくれました。皆と協力して課題に取り組めたのはとても楽しかったです。 グループとしては「EXAM VOUCHER」という権利をいただきました。まさか選ばれると思っていなかったので、グループのメンバーもとても驚いていました。 海外のノリ 最終日には半日の観光とクロージングパーティーがありました。カラオケが行われ、大変盛り上がりました。音楽が流れれば、手拍子や、ダンス、掛け声などがかかり、海外のノリを肌で感じることができる非常に良い経験になりました。 英語は楽しむためのツールである GCC全体として学んだことは、英語で自分の言いたいことを伝えられた時の「楽しさ」です。私は英語が下手ですが、ジェスチャーを使ったり、例をたくさん挙げたりして、自分の言葉で伝えられた時はうれしさと楽しさでいっぱいでした。 海外の方はとても優しく、GCCを十分楽しむことができました。しかし、もっと英語が使えれば、ジョークを言ったり、海外のノリに加われたり、講義をより理解できたりして、もっともっと楽しむことができるのになあという場面に何度も出会いました。今回の一番の学びは「英語は楽しむためのツールである」ということに気づけたことです。今後、より楽しむために英語を学びたいと思います!! 感謝 GCCに参加し、無事に日本に帰国できたのは日本人スタッフの方や、日本チームのサポートスタッフの方、日本チームの受講生の方、グループワークのメンバーの方など、全てのGCCに関わる皆さんのおかげです。大変貴重な経験をすることができました。ありがとうございました! またどこかで会いましょう! You can meet me for free~~~~~~~~~~~~~~!!!

2025/03/1 · KashiuchiSotaro

セキュリティ・キャンプ全国大会2023 応募課題公開

概要 「セキュリティ・キャンプ全国大会2023」のL3『Cコンパイラゼミ』の応募課題を公開します。 間違っている内容もあると思いますが、ご了承を。 問1:コンパイラの動作 コンパイラを一つ選び、そのコンパイラがどのような過程でソースコードから実行バイナリを生成しているかを、現在知っている範囲で説明し、実際にコンパイラがその過程を経ているということを自分なりに検証してみてください。どのように検証したか、そして、その検証結果から何が言えるかを教えて下さい。どの言語をコンパイルするコンパイラかは、好きなものでかまいません。 検証環境 今回選んだコンパイラはC言語をコンパイルする「gcc」コンパイラです。検証環境は、Linuxコマンドを使用できる点と、Linuxで使われることが多いABIを使用したかったため、Linuxで行います。具体的にはホストOSで仮想化ソフトを起動し、ゲストOSを立て、ゲストOSで「gcc」コンパイラを動かします。以後の検証を行う環境は基本的に下のとおりです。 HostOS: Microsoft Windows 11 Home VirtualizatioSoftware: VMWare Workstation 17 Player GuestOS: Kali GNU/Linux Rolling (2022.2) Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian compiler: gcc (Debian 11.3.0-3) 11.3.0 全体像 まず初めにソースコードから実行可能ファイルが作成されるまでの大まかな過程を知っている範囲でまとめてみます。 ソースコード |–プリプロセス(プリプロセッサ) プリプロセス後ソースコード(中間コード) |–コンパイル(コンパイラ) オブジェクトファイル(中間コード) |–リンク(リンカ) 実行可能ファイル 検証方法 上記の過程が本当に正しいのかどうかをgccコンパイラのオプションを利用して、調べてみます。 簡単なプログラムを作成 中間ファイルを取り出す -save-tempsオプションを付けてコンパイルすると、コンパイラが生成した中間ファイルを削除しないようにしてくれるらしい。この機能を利用し、中間ファイルを取り出す。 取り出した中間ファイルを調べる lsコマンドを使って、中間ファイルが作成された順番を調べる fileコマンドを使って中間ファイルを調べる ファイルの中身を見て調べる 今回使用するプログラム #include <stdio.h> #define MAX_VALUE 20 int main(void){ int i, a, b; for(i=0; i<MAX_VALUE; i++){ // MAX_VALUE回挨拶を行う printf("%d Hello World\n", i); } return 0; } 検証結果 # gccコマンドの実行 └─$ gcc -save-temps main.c # 作成日時が古い順から表示 └─$ ls -ltr total 48 -rw-r--r-- 1 kali kali 76 Apr 24 20:17 main.c -rw-r--r-- 1 kali kali 17958 Apr 24 20:53 a-main.i -rw-r--r-- 1 kali kali 465 Apr 24 20:53 a-main.s -rw-r--r-- 1 kali kali 1368 Apr 24 20:53 a-main.o -rwxr-xr-x 1 kali kali 15976 Apr 24 20:53 a.out # fileコマンドを実行し、それぞれのファイルを調べる └─$ file * main.c: C source, ASCII text a-main.i: C source, ASCII text a-main.s: assembler source, ASCII text a-main.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped a.out: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=14a8fbe181354a90f63ee35839a3ae1876077f0c, for GNU/Linux 3.2.0, not stripped 生成された中間ファイル(a-main.i) ...

2024/04/1 · KashiuchiSotaro

高専ビジネスコンテスト2024 in 鈴鹿高専

概要 先日、高専ビジネスコンテスト2024 in 鈴鹿高専というコンテストに参加しました。残念ながら賞を受賞することはできませんでしたが、学んだことをまとめておきます。 また、発表資料のリンクを貼っておきます。(発表資料) 2024/01/10: 参加決定 コンピュータ部に急に高専ビジネスコンテストに参加してほしいと連絡がありました。強引に参加を強制され、コンピュータ部の多くの学生が参加することになりました。 私も例外ではなく、参加することにしました。私は「ジャバラ」というチーム名で参加しました。(応募の締切が近すぎで、10分ほどで考えた名前 2024/01/17: アイデア出し開始 申し込みから、寮生会、留学生交流会、情報処理の課題などで、土日も丸一日忙しくなかなかビジネスコンテストに時間を割くことができませんでした。 1月17日からようやくアイデアを出し合いました。私が日常的にためているアイデアのいくつかを出し、その中で「友達の友達は恋人」というコンセプトのアイデアがチームメンバーで良いのではないかということになりました。 このアイデアを説明します。これはマッチングアプリの一種で、既存のマッチングアプリよりも安心・安全に使えることを目指していました。そこでまず、クラスメイトや、地元の友達と相互フォローしあいます。次に友達Aに友達Aが知らなそうな友達Bを紹介します。後は友達Aと友達BがDMなどで繋がり、恋愛等に発展していくというものです。 2024/01/19: スライド作成が本格化 アイデアは出たので、スライド作成に進みました。またアプリのデザインだけでもあったほうがわかりやすいのではないかと言うことで、Figmaというソフトを使用し、フロントエンドの部分だけを作成することにしました。 Discordでメンバとも話し合いながら遂にスライドが完成しました。 発表練習では、約7分もかかった(発表時間は4分しかない)ため、スライドや、文章を削りに削りました。 なんとかいい感じに発表できるところまで進めることができました。 2024/01/20: コンテスト当日 発表練習を少し行い、朝7時に鈴鹿高専に向け出発しました。 鈴鹿高専に付き、軽く発表時の画面の共有方法などを確認しました。 いよいよコンテストが始まり、別のチームの発表内容を聞いていました。 多くのチームが2ヶ月から半年かけて練り上げられたアイデアでした。 私達のチームの番が回ってきました。さて画面共有をしようかと思った瞬間、友達のテザリングが切れて、共有できませんでした。焦りに焦りマックった結果、予備のスライドに切り替えてもらうという決断をしました。こうするとスライドは共有できるのですが、デモンストレーションの映像は共有することができません。ただ時間は止めてもらえず、どんどんと時間が過ぎていきます。焦りに焦りまくりましたが、なんとか発表が終わりました。 質疑応答では、LINEなどのアプリなどの違いについて聞かれました。私は、LINEとは用途が違う、LINEは家族や友達とつながることを目的にしており、友達を紹介するのは敷居が高いと答えました。 また招待する側のメリットがあれば良いと思ったなどの意見をもらい、発表は終わりました。 全体的にぐたぐだで、相当気分が落ち込みました。 学んだこと 多くの視点でアイデアを見つめ直すということです。私達は、友達を紹介される側のメリットばかりを考えており、友達を紹介される側のメリットを全然考えられていませんでした。全ての利用者にメリットがあるアイデアしか上手く導入できないと思いました。 また、スライドの完成度よりも、中身のあるアイデアにするということを学びました。時間がなかったため、とりあえずスライドを完成させようという思考になっていました。それよりも、アイデアをもっと練り上げることに時間を使うべきでした。反省です。 後、発表ですごくグタグタになってしまったので、事前準備はしっかりとしていきたいです。テザリングの安定性や、パソコンの安定性、考えられる質疑応答のブラッシュアップなどです。 逆によかった点として、タスクの割り振りを適切に行うことです。チームメンバにタスクを上手く振り分けることができたと思います。メンバ全員が参加でき、仕事がある状態を作れたことが良かったとおもいます。 また他の人の発表の様子を見てみると、非常にわかりやすかったです。なぜわかりやすいのかはまだ分析できていませんが。。。 今後について 今回は、先輩に半強制的に参加させられ、1週間と短い期間での準備で、非常に受動的でした。 今後は自ら出場したいと思うコンテストを選び、能動的に行動していきたいです。

2024/01/20 · KashiuchiSotaro

ゆめくじらプログラミングコンテスト2023

去年の1月から準備を進めていた、「ゆめくじらプログラミングコンテスト2023」を今日(2023/11/12)実施しました。 コンテストの概要 このコンテストは、和歌山高専のサークル「ゆめくじら」が主催し、「Link-U」と「ReLic」の2つの和歌山県の企業が協賛企業として企画したコンテストです。コンテストのビジョンは「コンテスト参加者が新しい視点を得る。」、コンセプトは「コーヒーカップのようなコンテスト」です。コーヒーカップのようなコンテストとは、他学年、他クラスとの交流をコーヒーカップのようなグチャグチャ混ざり合う感じにしたいということです。 部門は2つ用意しました。一つはオセロ部門です。こちらの部門では参加者にオセロを行うためのプログラムを作成してもらい、対戦するという感じの部門です。もう一つの部門は、自由部門です。こちらは、どのような作品を作っても良いという部門です。 応募者を募集するチラシを載せておきます。 コンテスト前に講座を実施 コンテストを開催する前に、コンテスト参加者を募集することと、コンテストに出す作品のクオリティを上げるため講座を企業の方たちが、講座を実施しました。結構人があつまりました。 コンテストを実施 コンテストを実施してみての感想としては、「大成功」の一言に付きます。 コンテスト当日は、高専祭でもあったため、そのため学生以外の一般のお客様も沢山いました。そのため想像よりも沢山のお客さんが見に来てくださいました。当日配ったチラシの写真を載せておきます。 感想 企業が協賛して頂いているということもあり、景品が豪華で、チラシやポスターなども非常に豪華で、企業の力はすごいと感じました。またコンテストに参加してくれた学生が楽しそうだったのが嬉しかったです。自分の作った作品を誰かに見せれる場があると、ユーザ側の反応を知ることができ、非常に刺激になるなあと感じました。 今後は反省点を洗い流し、来年に活かしたいです。

2023/11/12 · KashiuchiSotaro

英検準2級への挑戦

経緯 英語の必要性は高専1年生の夏休み頃から感じました。多くの情報は英語で得ることができます。英語で検索できるのとできないのでは、天と地の差があるといってもいいのではないでしょうか?しかし、私は英語に非常に苦手意識があります。中学3年生の時にギリギリ英検3級を受かったレベルです。 そこで高専2年生になったらTOEICを受けようと考えていました。高専1年生の3月、いざTOEICの過去問を解いてみると、ほとんどわかりませんでした。そこでまずは単語力をつけようと、「TOEIC L&R TEST 出る単特急 銀のフレーズ」をはじめました。高専2年の5月、数百問覚えたところで、もう一度TOEICの過去問を解いてみましたが、ほとんど成長がありませんでした。更にリスニングはほぼ全く聞き取ることができませんでした。自分にはTOEICのレベルは高すぎると自覚しました。 そこで高専2年の6月、英検準2級を受験するという方針に変更しました。というのが英検準2級を受験するまでの経緯です。英検準2級なんて低い級を受けるのかと言われるかもしれませんが、今の自分にちょうどよい級だと考えています。英語が苦手だからといって何もせずに終わるのではなく、諦めるにしても、挑戦してから諦めたい!! 2023/06/XX:勉強開始 まずは語彙力を強化するために、単語帳を進めました。Ankiというアプリを使用して単語を覚えました。その後、過去問をときました。リスニング力がたりなさすぎるため、音読等をがんばりました。 2023/10/08:一次試験当日 雨男の力により、一次試験当日、安定の雨でした。試験終了後の感想として、ライティングがいつもよりできませんでした。ライティングのお題が難しすぎて、日本語でも説明が思いつきませんでした。ライティングの失敗を引きずり、リスニングの初めの10問は集中できませんでした。手応えなしです。。。 一次試験が終わったので、どれぐらい勉強を頑張ったか振り返っておきます。下の写真は、一次試験当日までの単語アプリの使用状況です。期末テスト、セキュリティ・キャンプがある期間は全然勉強していませんが、それ以外は結構継続できているようです。よく頑張った! 単語は比較的継続できていましたが、英検全体の勉強は思うように進みませんでした。下の写真は、英検の過去問の点数をグラフ化したものです。ライティングはChatGPTに採点してもらいました。グラフを見てわかるとおり、8月17日から9月17日までの一ヶ月間でほぼ点数が上がっていません。9月17日以降の半月で頑張って合格点を超えるぐらいまで持ってきています。つまり実質的に英検の勉強(単語以外の音読、速読等の勉強)は最後の半月で追い込んだことになります。もう少し余裕を持ってコツコツしたいと感じました。 2023/10/23:一次試験合格発表 いよいよ合格発表の日です。恐る恐る結果を見ると、「合格」の文字があるではありませんか!!嬉しい!! 合格基準が1322点の問題で、1345点で合格していました。いやギリギリすぎる(笑)。もう少しいい点で合格したかったです。予想通り、ライティング問題の点数が普段よりは低かったです。下の写真は試験の結果も含めた点数の推移のグラフです。 二次試験合格に向けて頑張りたいです。 2023/11/12:二次試験当日 一次試験の合格発表から3週間ほどが経ち、ついに二次試験の日がやってきました。 会場には一番に到着し、面接も一番はじめに行いました。問1,2,3はそこそこできたと思います。しかし問4と問5の自分の意見を述べる問題でだいぶテンパりました。なんとか設問を聞き取ることができたのですが、答える内容が日本語でも思いつきませんでした。挙句の果、文法がメチャクチャな状態で回答してしまいました… やらかしてしまいました… 二次試験が終わったので、勉強してきた内容を振り返ってみます。自分で面接の練習を10回分行い、英語の先生にも協力してもらい3回分、計13回分練習しました。英語の聞き取りでは何回か聞き直すことで、聞き取れるレベルでした。自分の意見を述べる部分では、語彙力の少なさと、知ってる語彙でも使えない語彙(瞬時に出てこない英語)が多いことに気が付きました。ひたすら使える語句を増やすトレーニングをしました。後半はなかなか上達せず、モチベーションを維持するのが大変でした。 2023/11/21:二次試験合格発表 待ちに待った、合格発表の時がやってきました。 結果は「合格」でした。600点中424点とギリギリでしたが、なんとか合格することができました!! 英検準2級合格で止まるのではなく、もっともっと勉強していきたいです!

2023/10/23 · KashiuchiSotaro

デジタル人材リテラシー

高専では高専間単位互換制度というものがあります。この制度は他の高専の授業を受け、単位を取ることができる制度です。私は石川高専の「デジタル人材リテラシー」という授業を受講しました。この科目では、様々なデジタル技術を学び、各専門分野でそれらの技術を活かそうと言うものです。今の時代、情報系でなくとしても、デジタル技術を扱えたほうが、より多くの可能性を見出すことができます。デジタル技術を浅く、広く学ぶことで、自分が研究している分野などに応用できるという可能性を作り、視野を広げようというのが大まかな趣旨です。詳細はシラバスに書かれています。 授業の形式としてはオンライン配信で、各コマで一人の専門家を呼び、講義を受けるという形でした。以下の評価が各コマの授業の内容です。 コマ 授業内容 1 ガイダンス 2 DX入門 3 デジタル社会を支える技術 4 企業におけるDX 5 金融とデジタル技術 6 サイバーセキュリティ入門 7 サイバーセキュリティ入門 8 ドローン入門 9 航空宇宙産業とデジタル技術 10 デジタル社会を支える技術 11 デジタル社会を支える技術 12 アントレプレナーシップ入門 13 AI数理データサイエンス入門 14 デジタル技術と専門技術の融合 15 復習 特に面白かったのは、データセンターをGoogle ストリートビューのような感じで、オンラインでデータセンターを見学したことです。データセンターを見学したことはなく、とてもメカメカしていてかっこよかったです。見学だけではなく、データセンターに適した土地や、条件などの説明や、空調設備などが見どころでした。 この科目を通して、全体的に視野が広がったと思います。またその分野のプロフェッショナルな人の講義を聞くことで、人生の生き方などを学ぶことができました。むしろこっちのほうが多くの学びがあったと思います。 次回別の高専間単位互換性の授業を受けれるなら、実際にハンズオンなどがある技術系の授業も受けてみたいと思っています。

2023/10/10 · KashiuchiSotaro

インターンシップ in omeroid

概要 2023/09/04から14日までomeroidという会社のインターンシップに参加させていただきました。 学べたことをつらつらと記しておきます。 行ったこと 主にomeroid社内で使用するツールの開発に参加しました。既に仕様が決まっており、それに合わせてIssuesが割り振られ、各インターン生が開発を進めていくものでした。初日は開発環境を構築し、二日目、三日目で、社員さんにライブコーディングなどを行ってもらい、開発の仕方を実践的に学びました。四日目以降はインターン生が各自開発を進めていきました。 技術 人事評価を相互に行うためのシステムを構築することを目的に開発を行いました。システム構成として、AWS上にデプロイし、Slackから人事評価を行うことを想定していました。開発で用いた技術を紹介します。実際に触ったのは以下の一部部分です。 Golangで開発を行った OpeaAPIという規格に沿って記述されたyamlファイルを基に、oapi-codegenというツールを用い、コードを自動生成させていた。yamlファイルの定義から、入力と出力のインターフェイスを持った関数と、URLがマッピングされたコードが自動で生成される。生成された関数の中身を今回のインターンで実施した マイグレーションツールにはgooseというツールを使用した。マイグレーションツールを使用することで、データベースの変更、更新などが容易に管理できる ORM(Object Relational Mapping)にはSQLBoilerを使用した。ORMとはSQLを使用せずに、データベースを操作する手法。SQLBoilerは実際に存在するデータベースから、データベースを扱うためのプログラムを自動生成してくれる。例えばAテーブルの外部キーとしてBテーブルの主キーが設定されているデータベースがあるとすると、AテーブルとBテーブルを結合したデータを取得することができる関数が自動で生成され、その関数を利用すると簡単に結合後のデータを取得できたりすることが可能。 GitHubActionを使用したCI/CDを採用。コンパイルエラーが発生するプログラムやテストが通らないプログラムをmainブランチにマージできないように管理されていた。またコマンド1つでAWSへデプロイができる Terraformというサービスを使用し、AWS環境の構築、破壊、変更が操作1つで行われていた クリーンアーキテクチャという設計手法を活用していた 学んだこと 一番の大きな学びとして日本の会社の雰囲気、会社で働くという意味です。会社で業務として開発を行うことにたいする実感がわきました。また、今回は仕様に沿ってプログラムを開発することしかできませんでしたが、僕は仕様に従ってプログラムを書くだけではなく、課題を発見し、課題を解決するために、仕様自体を設計できるなりたいなあと思いました。 もう一つは、やはり英語は必要であるということです。Golangなどの周辺のツールは新しく出てきたものが多く、詳しく説明されているのは英語のサイトが殆どでした。 以下は詳しく説明しませんが、学んだことを記しておきます。 Web系の業界の概要 初速の大切さ どうせ頑張るなら最初に頑張る MacBookは本当に充電が長持ちする! C言語をベースとして作られたGolangの文法(Cコンパイラ自作中なので興味深かった) おすすめのキーボードを教えてもらった(https://ergodox-ez.com/) 人は食べ物で幸せになれる 最後に 本をいただきました!ありがとうございます。 英語を勉強します。 本当にomeroid様ありがとうございました!

2023/09/15 · KashiuchiSotaro