Yの技術ブログ

Yちゃんの技術関連のブログ

2021年を振り返る

今年何してた?

今年は主に受験のために勉強した年でした....が、多分勉強よりも開発とかやってた時間の方がなんだかんだ長いです...多分...

1月、SecHack365 最終発表

確かそんなことしてました、いろんな強い方の功績を見て皆さんすげぇ、と圧巻されていました。 ちなみに私の成果物はAtomic Swap Network ~暗号通貨の二者間取引を支援するシステム~です。

2月、特に覚えてない...

なにしたかもはや覚えてません、多分大きなことはしてなくて、単純に次の月に行うこととかの準備をしてたと思います。

3月、SecHack365 成果発表会・中高生情報学研究コンテスト等...

成果発表会で外部に向けて自信の成果を発表したり、修了生の方々と交流したりしました。 とても楽しかった記憶です。 そして、中高生情報学研究コンテストでは、SecHack365での研究開発結果を持ち込み、それを評価してもらいました。うれしいことに、入選という結果を得られました。 その他にも、セキュリティ・キャンプ アワードに出るとかしていました。 開発関連は、Atomic Swap Networkの強化に向けて、ブロックチェーンP2Pをより深く知るといったことをしていました。

4月~8月ぐらい

特に大きな変化はないです。 勉強3、開発7みたいな感じのアホみたいな生活をしてた気がします。 この間にDiscord Botの開発とかに取り組んでいて、AquesTalkのライセンスを買ってDiscord即時読み上げBotみたいなのを作っていたり、音楽Botを製作したりしていました。 後は、まだ執筆完了してないですが、Bitcoinウォレットを作る本も執筆していました。 今は計画停滞中です(白目)

8月 VOICEVOXに関わり始める

ここに来てOSS開発に手を染め始めます。完全にアホですね。 まあでもここでVOICEVOXに関わり始めたのは、私にとって良い影響をもたらしてくれたと思います。

9月 大学出願とか

3大学ぐらい出願しました。

10月 総合型選抜

3大学中、本命を除く2大学の1次選考を通過し、2次選考(面接)を受けました。

11月 大学合格、音声合成の勉強

そして、10月に受けた2次選考の結果が分かり、2大学中1大学に合格しました。 それが電気通信大学です。

で、大学が決まって受験勉強の必要がなくなった(大学に向けての学力向上は必要だけど...)ので、音声合成と深層学習の勉強を始めることにしました。

数学がだめで死にそうです(白目)

12月 OSS版VOICEVOXのレビュワーになる

いろんな形で結構たくさんコントリビュートしてたので、レビュワーになりました。 PRのレビューをしたり、引き続きPRを作ったりしています。

ちなみに私の今までの貢献は以下の感じです。思ったよりも多い....

まあ、こんなところでしょうか。 これが出来上がったのはもう2022年なんですが、まあ2021年も2020年に引き続いて波乱万丈な年だったと思います。 2022年もいろんなことをしていきたいですね。

2020年の私をサクっと振り返ってみる

この記事は附属天王寺OBOG Advent Calendar 2020の記事です。

私、実は(?)附中70期生でした。附高に上がる選択肢は選ばず、高専に行きたいと思っていましたが、願いかなわず今は工業高校に通う見た目は平凡な高校生をやってます。

さて、COVID-19に見舞われたこの一年、私はいろんなことをしてきました。想像以上に得られたものが大きく、したことのレベルも大きい一年となり、非常に青春している感があります。 そんな私の一年を、せっかくなので振り返ってみようと思います。

COVID-19が流行りだす。1月・2月

1月や2月は、私は趣味としてプログラムを書き、適当に勉学をし、適当にTwitterをする、という非常に平凡な高校生生活を送っていました。 2月にはとあるLT(Lightning Talk)大会が予定されていましたが、COVID-19の影響から、中止になってしまいました...

学校が休校に。3月

さて、私の学校は期末テストが終わると休校になってしまいました。さらに、私はセキュリティ・キャンプ全国大会2019の修了生で、セキュリティ・キャンプフォーラム2020へスタッフとしての参加を予定していましたが、無くなってしまい、暇に。
そこで、3月4日にリリースされ、GitHubソースコードが公開されて話題となった「東京都公式新型コロナウイルス感染症対策サイト」の派生サイト(兵庫県版)を作ることを考え、行動に移ります。最初は一人で作り始めましたが、流石に限界があった上に他の方々が既に制作を開始していたため、そちらに合流して3月15日、「兵庫県新型コロナウイルスまとめサイト」をリリースしました。
そこから更に幅を広げ、「神戸市公式新型コロナウイルス感染症対策サイト」(※現在閉鎖済み)の開発にも参加することになっていきます。

波乱の休校期間。4月

まだまだ休校期間は続きます。ずっと兵庫県版サイトへ貢献し続けていました。また、本家東京都サイトへの貢献も始めていきます。

オンラインLTへの登壇、新聞取材。波乱の5月

Pre Civic Tech Forum 2020への登壇を誘われ、友人を誘って登壇しました(恥ずかしいですが、私の発表はこちらから見られます)。
また、新聞取材を受け、ネット版と紙面版と掲載していただくことができました(ネット版はこちらから見られます)。非常に良い記事を書いていただけたなぁと思っています。
あわただしい一か月でした。

学校再開。SecHack選考通過。6月

学校が本格再開しました。これにより毎日の登校が復活しました(朝早起きしなければならない生活が戻ってきて少し憂鬱でした)。
先ほど挙げた「神戸市公式新型コロナウイルス感染症対策サイト」が閉鎖するにあたって、何か仕事をしたいなあと思った私はCode for Japanにイベント運営インターンとして参画することを決めました。
同時に学業にも力を注ぎたいと考えるようになり、学校は毎日8時限まであってしんどいので、通信教育を始めたいと親にお願いしました。
6月ももう終わりそう、といったところでSecHack365の選考通過通知が来ました。去年からずっと合格したいと願っていたので、とてもうれしい気持ちでいっぱいでした。

SecHack365開始。7月

仕事を始めた上にSecHack365も並行して行われ、学業にも力を注がなければならないという、とてつもなく忙しい日々が始まりました。むしろとにかく忙しかったことしか覚えていません....
諸々の忙しさから、学業はおろそかになっていきました...

夏休み?8月

さて、例年より2週間ほど遅れて夏休みが始まりましたが、これがまた忙しいものでした... 毎日いろんな予定が入っているのです....
また、例年よりも夏休みが遅く始まって早く終わるという短さにより、自由な時間があまりとれなかったことを覚えています。

また忙しい日々。9月

コロナ禍で休校だしとやりたいことを詰め込みまくった結果、いろんなことが手いっぱいになり、その上休校も終わってしまうという状態により、まだまだ忙しい日々が続きます。
まあ、やりたいことがないよりかはマシなのかなと考えてみたり。 9月のシルバーウイークにはちょっと岡山まで友人に会いに行ったりするなど、楽しい日々もありました。

仕事がひと段落。10月

さて、私がCode for Japanインターンとしてやってきたことを説明していませんでした。その仕事の一つであり、仕事量の大半を占めていたのが「Civictech Challenge Cup U-22」というコンテスト企画です。それが、10月25日に終了し、いったんは仕事がひと段落、といった感じになりました。いろんな学生の方々が参加しており、いろんな作品が見られ、非常にやりがいのある仕事でしたが、大変な仕事でもありました。完走できたことはとてもよかったなあと今でも思っています。
しかし、さらなるタスクを私は自分で増やしてしまうことになります。
「セキュリティ・キャンプ全国大会2020オンライン」のチューター(講師・受講生の手助けをする役割の人)に応募し、受かってしまったのです... また、10月にはCode for Japan Summit 2020に登壇したり、応用情報技術者試験を受けたりととても忙しい日々ではありました....

またまた忙しい。11月

チューターをしながら、SecHack365での作品デモ(どのように動くのかを見せる)をしなければならなくなり、日々開発をする日常を送っていました。
今年度のSecHack365は基本的にオンラインで行われており、他の人と会うことがないのですが、それではさみしいということで何人かのトレーニー(SecHack365における参加者)で京都に集まりワイワイガヤガヤしたり、開発したりするものに参加するなどもして、ちょっとした非日常もあり楽しかったです。
学校側では課題に追われる毎日をしており、珍しく何度か徹夜しました...

現在。12月

割と長いようで短い一年。残りの1か月弱で何をしようとかは特に考えていませんが、出来ればのんびりしたいかなぁと思っていたり。
受験の前にやりたいことをやりつくしたなぁと思える1年ではあったと思います。
ほとんどがオンラインであったものの、数年分ぐらいの出会いがあったり、数年分ぐらいのやることをやった気分になっていたり....
来年何したいとかは特に考えていなくて、とにかく勉学に励むべきかなと考えています。 どんな一年になるんだろう....

GUIアプリケーションを作っているというお話

セキュリティキャンプを終えて

私、セキュリティキャンプ全国大会2019のOS開発ゼミを修了していて、低レイヤーなお話をしたいと思っていたのですが、残念ながら私は低レイヤー興味あるけどほとんどわからんのまま修了していまして、あまり低レイヤーなお話が出来ないのです... 今回の話はどちらかというと技術的なお話はあまり無いです。

今何してるの

最近はPython3とPyQt5を用いてGUIアプリケーションを開発しています。というわけでこちらの近況報告をしたいと思います。

atomicswap-qt

これはGoで書かれたatomicswapというCLIアプリケーションをPythonで書き直し、GUIを付け加えたものです。ベースとなる機能は全て標準ライブラリのみを用いて書き直し、可読性をできる限り重視してコードを書いています。これがどういうアプリケーションなのかはこちらを読んでいただければと思います。

低レイヤーを諦めたわけでは無い

低レイヤーに手をつけることを諦めたわけではありません。実のところ、私は今まで自分でコードを書いてものを作り上げるだとか、そういった類のことをほとんどしたことがなく、コーディング経験が浅い上に知識も浅いのです。よくまぁこんなんでセキュリティキャンプに参加できたなぁと今でもすごく思います。じゃあ何をしていたのかと言いますと、既存のGitHub上にあるOSSを自分なりにいじって遊んでいただけで、パラメータいじったりだとか、ちょっとソースコード書き換えたりだとかそういうことばかりやってきたわけなのです。ただの遊びです。というわけで、コーディング経験を積んで、人のコードを読んで理解できるようになろうということで、他言語で書かれたソースコードを読んで自分の書き慣れたPythonで再実装し、完全な互換性を保ったアプリケーションを作った上で、それを更に人が使いやすいようにGUIで使えるようにしようというのが現状です。もちろん、いろんなアルゴリズムを知るだとか、そういった類のことも必要なので、これから取り組んでいこうと思っています。

既存のものと自分のもの

今回、新しくものを作るには既存のものを理解して自分のものにする必要があると思い、既存OSSのコードを一つ一つ読んで再実装し、そこに自分のつけたい機能、今回であればPyQt5によるGUIを実装するという形を取りました。一見とてもめんどくさいですし、実際とてもめんどくさいです。ですが、これは確実に自分の力になっていると思っていますし、実際に力になっています。私はとてもめんどくさがりで、今までコーディング経験が浅かったわけなので、少しぐらい自分に難しい課題を課して取り組んでやる方が力になるのかもしれませんね。これがいい方法なのかは正直自分にもわかりませんが、自分の力になっているのならそれでいいか、ってなってます(笑)。
更に、今回は可読性と理解のしやすさを重視してコーディングを行なっています。他人から見て理解しやすいかはわかりませんが、自分なりに意味を理解しやすいコードを書くことで自分が読んだ他言語のコードを理解出来ていること、他言語のコードと自分の書くPythonのコードが同じ挙動をすることを示せるからです。

私が目指すもの

今特に興味を持つ分野は暗号通貨やブロックチェーンといった分野で、低レイヤーとは言い難い分野です。いずれ低レイヤーなOS自作をもっと深めていきたいと考えていますが、今は好きなことをやって、経験を積みたいと考えています。今はまだ、小さなプロジェクトの再実装に過ぎません。でも、今後はもう少し大きなプロジェクトの再実装をしたいと考えていたり、私自身のオリジナルなプロジェクトの作成をしたりしたいと考えています。まだまだ未熟な私ですが、伸ばせる部分はたくさんありそうなので、頑張って取り組んでいきたいと思います。

セキュリティキャンプ全国大会を終えて

はい、セキュリティキャンプ全国大会が無事終了しました。
といいつつ4日前に終わっている件はさておいて。

というわけでY-I OS自作ゼミに参加した私の状況を軽くまとめていきます

@Day1
まずは最寄り駅を出るところからですかね(長い
まあそんなこんなで初の東京の地に足を踏み入れまして、あぁここが日本の中心なのかぁとしみじみ思っていたのが懐かしいです。


いろいろありつつも無事にクロスウェーブ府中に到着。
この後は受付して、Tシャツとジャージをもらい荷物を置いて昼食へ。
食事で同じテーブルに座った方や隣のテーブルに座った方などと名刺交換をしたりおしゃべりをしたり....最初からいい思い出になりました。
高1でYトラックのOS開発ゼミということに衝撃を受けている人がそこそこいたのですが、そのあと実際の講義中(開発中)はマジで死にかけてる(一時期死んでた)ので何もすごくないです。
さまざまな講師の講義を聞き、途中でちょっと眠たくなりつつも面白い話が聞けてとてもいい機会だなぁと思いました。
その後、前に明石高専(自分は受けて落ちました)でお会いしたことのある人に声をかけてもらうなど、いい経験がたくさんありました。
夕食もマジでおいしかったです。
夕飯後は名刺交換会兼デザートパーティ的なのがあり、いろいろお話をして楽しかったです。
夕食後LT大会ということでいろんな方のお話を聞いてきました。面白い話や、すごい話など、LTってこういうものなのかぁと知るきっかけになりました。TwitterでFFの人がLT大会開催してたりするんですが、なかなか行くことができなかったので、ちょっとこれからはできる限り参加してみると面白いかなぁと思いました。
さて、Day1最後のイベントとしてグループワークでセキュキャン始まったばかりなのに終わった後の話をされて、まあグループ組んでセキュキャン終わってからなにかしようみたいなことを考えたわけなんですが、まあなかなか思いつかない。結局OS関連で自分が一応リーダーとなってチームを結成しました。
さて、すべての内容が終わったので自室に帰ったわけなんですが、家では敷布団で寝ている勢なのでベットの寝心地が良すぎてやばい(語彙力)
人権あるなぁと思いつつ、学校の課題を少しやって1時ごろに就寝しました。

@Day2
はい、朝はいつも母に起こしてもらってるので起きれるか心配ながら、スマホを4台アラームセットして寝、アラームでなんとか6時ごろに"一度"起床しました。はい、"一度"です。次に目を覚ましたのは看護師さんが部屋にやってきて8:40頃に鳴らされた部屋のベルでした。初日からやらかしました、はい。(部屋のベルがファミマの音だとかいう話は置いておいて。)
そしてまあ9時ごろからゼミに参加。そしてまあ、事前課題の進みが悪い自分が1歩か2歩....いや多分もっと遅れてスタートという形になりました...。OSの仕組みやプログラムの動作原理とハードウェアとどのように連携させるか(レジスタアドレス指定の話など)、それとSoCのマニュアルの読み方がわからない私はもっと遅れていき...。地獄を見ました...。
チューターさんや講師の説明のおかげである程度の理解はあったものの、他の方との理解度や進み具合の差はかなり激しいものでした。
まぁ、周りの方がつよつよでどんどん進んでいく中、自分だけ進歩がないことにかなり焦りと不安を覚えました...。自分が悪いんですがね。

@Day3
この日以降は普通に起床し普通に朝飯を食べ、普通にゼミに参加しました。
Day2はRasPiを使って作業していたのですが、知識不足が著しい問題となっていたので、講師の許可を得て、自分で持ってきていた部活の先生からの借りものであるH8マイコンを使っての作業に移行していきました。12ステップ組み込みOS自作本が非常にわかりやすい基礎的な説明から書かれているので作業の進みがDay2よりは感じられました。なお、書籍を読むにつれてだんだんと眠たくなる症状に襲われ....まあこの話はいいでしょう....。
自分は進歩がそれほどないものの、休憩時に立ち歩いたときに別テーマの方のバグを直す助言ができたことが個人的にうれしいです。ただそれだけですが。
夜には企業のお仕事紹介があるなど大変楽しめました。

@Day4
集中開発コースではDay4でどのようなものを作ったかを発表しました。自分はそれほど優れた発表はできなかったのですが。まあその前にある程度作業をし、最後にせめてオリジナル要素としてH8マイコンでGPIOを用いてLチカをしようということを挑んだのですが、ひかりはしたもののチカチカはせず、ここで終了、となってしまいました...。これ以降は事後学習ということで一旦お預けに...。
最後の夕飯はなんと焼肉ということでマジで美味かったです。
夜にはお仕事紹介+ラストナイトイベントがあり、結構悲しいことが一つ....。ラストナイトイベントでは講師陣やスポンサーなどから書籍などがプレゼントされるのですが、去年までは年齢順だったらしいのですが、今年はチーム名をハッシュ化したものを順番として使用することになりました...。なんと、ハッシュ値は"fff...."で、最後ということに...。実はチーム名が「0から始める自作PC」という何とも言えない名前なのですがこれを命名したのはリーダーである私自身でして、かなりショックを受けました()
せめて"Re:"をつけておけば...(殴

@Day5
最終日です、ここまで本当にあっという間でもう終わっちゃうのか....という寂しさがこみ上げてきました...。
最終日はグループワークから始まり、朝から早々にGitHubのOrganizationを取得したり、ドメイン(https://os-cpu.org)を取得したり...結構本格的で面白いグループワークが最後にできたなと思っています。なお、これはセキュキャンが終わっても続く活動として予定されているので今後の活動に期待....(私自身も頑張らなければ....)
その後は各ゼミ(トラック)ごとに成果発表があり、個人的には「root取っ太郎」が一番思い出に残っています(この方が初日に声をかけてもらった明石高専生だったり....)。多分皆さんも覚えている方は多いと思います。
そして閉会式が終わり、あぁ、終わってしまったなと強い後悔と寂しさと楽しさと...いろんな気持ちが複雑に絡み合いながら出てきました...。
さて、終わってしまったものはしょうがない、得られたものがゼロではないのだから今後その知識を使っていけばいいじゃないかとまあ開き直り(いいのか悪いのかわからない)、府中市内のビジネスホテルで一泊過ごしました。

@Day6???
初の東京、遊んで帰らないわけにはいかない。というわけでTwitterで仲の良い方と秋葉に出向き、いろんなものを見たり買ったり。東京を満喫しました。午後には自分がいろいろお世話になっている人が社長さんの、某仮想通貨()の運用会社ということになっている株式会社VIPSTARに出向きました。いろいろお世話になっている分のお礼とか、今作ってるアプリケーションのデモンストレーションとかしてきました。

さて、東京(秋葉)を満喫し、目的も果たし、とても楽しい一週間でした。こんな濃い一週間は今まで多分初めてです。セキュキャンの後悔はかなりあるものの、得られたものもかなり大きいのでそれを使って今後いろいろできるようになっていきたいと思います。

最終的には来年チューターになったり、別イベントとしてSecHack'365に応募してみたりなどができればいいなぁと思っています。

以上、セキュキャンの一週間でした。

セキュリティキャンプ全国大会2019の選考(OS開発ゼミ)を通過した話

えっとまあ、高校入学から1ヶ月、部活に入部したての私のどんな力を見抜いたのかはわかりませんが、(おそらく、自己紹介の時に仮想通貨関連の開発の話をしたあたりでコイツやべーなって思われてたんでしょう)、担任であり部活の顧問でもある先生がセキュリティキャンプを勧めてくれまして、ちょっと興味があったので今の自分がある理由の原点に最も近い「OS開発ゼミ」に応募したところ、一発で受かってしまうというかなり驚く状況になりました...。(勧めてくれた先生自身もかなり驚いていました。)
なんか、応募課題の回答を晒すのがお決まり(?)らしいので晒してみようかなと。自分の回答は全然優れてないですが...。

  • 共通問題A
    我々講師は、普段いくつかのOSを使っていますが、使い込むうちに色々な発見をします。
    皆さんもきっとそういう体験があると思います。
    あなたが普段使っているOSで、好きな機能と改善してほしい部分について、思いのたけを聞かせてください。
    この問では、皆さんが普段どの程度興味を持って既存OSを観察しているかを評価します。

  • 私の回答
    私は、主にPCでWindowsUbuntuを、スマートフォンAndroidをよく使います。
    Windowsはおそらく一番長い期間使っていると思います。
    私が小学三年生のころ、Windows XPを使い始めて以来、Vista、7、8.1を経て、現在は最新の機能を使いたいがためにWindows 10 Insider Previewを使うまでになりました。
    その一例がWSL2(Windows Subsystem for Linux 2)です。
    普段、Windowsしか使わない私は、Ubuntuを使おうと思うとデュアルブート環境を構築するか、仮想マシンを構築します。
    しかし、デュアルブートだとWindowsでしたい作業をしながらUbuntuでプログラムのコンパイルを行う等の同時作業が出来ません。
    仮想マシンであれば、ホストコンピュータのハードウェアを用いるためにPCの動作が重たくなることがあります。
    このような事態は私にとってあまり都合がよくありません。効率が悪いからです。
    そんなとき、現行のWSLという機能が登場しました。
    これは私にとってとても画期的であり、すごくありがたいものでした。
    現在ではWindows側でGUI Gitクライアントを用いて開発し、WSL内のUbuntuでプログラムのコンパイルを即時に行う等の効率の良い作業が出来ています。
    しかし、WSLには様々な欠点があり、自分の欲を満たせない部分がありました。
    Linuxのsystemdが使えなかったり、dockerを実行できなかったり、そもそも実行速度があまり早くなかったりと、様々な問題を抱えています。
    WSL2はこれらの問題を解決しているというのです。
    自分の今までの不満が無くなれば、もっと色んなことが出来ます。
    Windowsで出来ることが広まれば自分の出来ることも増えると思っているのでとても楽しみな機能の一つです。
    私は新たな機能を知るとすぐに試してみるタイプなのでWindows Insider Previewに登録していますが、一方で古いままの方がいいと言う部分もあります。
    その一例がUbuntuです。私は今まで様々なバージョンのUbuntuを触ってきました。
    新しいバージョンであるほど優秀な機能が使えるのはWindowsと同じく一目瞭然でしょう。
    しかし、Ubuntuに関しては16.04 LTSにこだわっていていますが、理由はいたってシンプル、使いやすいからです。
    バージョンによって標準でインストールされるパッケージが違うUbuntuは、16.04が様々なソフトウェアなどをコンパイルする上で最も適していると考えます。
    これはただ単にネット上で情報量が多いというのが大きいです。何らかのエラーが出た時などに対処しやすいのが16.04です。
    さて、Ubuntuを触る経緯となったのはAndroid OSのビルドです。
    Androidは今まで未公開分や現在のDeveloper Preview(Android Q)も合わせて、大きくわけて17ものバージョンが存在します。
    特に日常的に使うスマホは、OS機能の進化のスピードがとても早く、その上一つの機能がとても優れています。
    これらの優れた機能をいち早く使おうと、Androidのビルドを始めたのがプログラミングを始めることとなった一つのきっかけです。
    そんなAndroidの中で好きな機能があります、Android 7で解禁されたマルチウィンドウです。 複数のウィンドウを開いて同時に見ることなど、PCでは容易です。しかし、今までのAndroidではそうは行きませんでした。
    動画を見ながらSNSをする、というようなことが可能になったという点ですごく魅力的な機能でした。
    PCでは当たり前のように出来ていたことがスマートフォンで出来るようになったというだけなのにとても感動的でした。
    最後に、OSだけで自分自身が体験できることは大きく変わってくると思います。
    もっと様々なOSに触れ合うことで私の人生は大きく揺らぐかもしれません。

  • 共通問題B
    皆さんが仮にOSを作るとしたら、「どんなOS(やOSの機能)を作ってみたい」でしょうか?
    (既にOSを作った事がある人は、その特徴を書いてくれても構いません。)
    そして、なぜそれを作ってみたいと思ったのでしょうか?
    皆さんが心の中で夢描いているであろう、ワクワクするようなOS像を教えてください。
    ※「Linux開発者を目指そう!」テーマを受講したいと思っている方は「どんなLinuxカーネルの機能を作ってみたいか」を答えてください。
    ※「Raspberry Pi向け組み込みOSを作ろう!」テーマを受講したいと思っている方は「どんな組み込みシステムを作ってみたいか」を答えてください。

  • 私の回答 (どんなLinuxカーネルの機能を作ってみたいかについて回答しました)
    私がLinuxカーネルにつけてみたい機能は2つあります。
    1つ目はユーザーごとにアクセスできる機能を制限する機能です。
    管理者権限を与えなかったり、ファイル操作権限等を弄ったりすれば、出来ることはかなり制限されます。
    それ以上に管理者権限が無くてもできることを細かく制限できれば、誤って何かをやらかしてしまうリスクは格段に低くなると思います。
    もう1つはカーネルで実装できることかはわからないですが、手軽なシステムの復元機能です。
    Windowsでは、システムの復元等において膨大なデータをバックアップし、それを修復する際などに上書きして修復しています。
    以前、PCのHDD容量のバーが赤くなってるから直してくれと言われたことがあり、見てみるとWindowsが自動的にバックアップを行っているものが蓄積されていました。
    バックアップを定期的にとることは非常に重要であり、ユーザーデータやシステムの保護につながります。
    しかし、定期的に行っているとどうしてもディスク空き容量がどんどん少なくなっていきます。
    これを防ぐために、システムの復元を行うために必要な、変更が加えられたシステムファイル一覧を定期的に作成し、万が一システムが破損した場合などはLiveCD等を用いて復元する機能を実装してみたいと思いました。

  • 共通問題C
    OSを実装する上で基礎となるC言語の力を見る問題です。

  • 1, C言語で双方向リンクリストとそれを操作する関数を作り、ソースコードを提出してください。
    リンクリストを生成する関数、要素を任意の場所に挿入する関数、全ての要素を順に標準出力に印字する関数、の3つがあれば十分です。
    やる気があればもっとたくさんの機能を実装しても構いません!

  • 私の回答(見やすいようにgistに置きました)

  • 2, 設計・実装で工夫した点を述べてください。

  • 私の回答
    最初、このプログラムは構造体を知るためにサンプルコードを見ながら書いた片方向線リストでした。
    自分の手で双方向リンクリストに修正しました。
    まず、どうすればいいのかを探るために、ネットで調べた双方向リンクリストの仕組みを調べながらとりあえず組み立てていきました。
    デバッグのために一覧表示の部分にprintf関数でアドレスを表示させ、何かミスがあればすぐにわかる形にしていきました。
    デバッグ機能を使いながらも、とりあえず形にした結果、300行を超すコードとなり、とても見にくい状態でした。
    なんとかもう少しでいいから見やすい形にできないかと思い、同じ処理をしている部分を一つの関数にまとめ、違う部分はそれぞれの関数ごとに処理させました。
    最後、選んだデータの前にデータを挿入する関数で、選んだデータの前の前に挿入される不具合を見つけたので、before = 0に戻し、対策を講じました。

  • 選択問題S3 テーマ「Linux開発者を目指そう!」(武内講師) Linuxカーネルについて知りたいこと、それについてこれまで調べたこと、
    つまづいたことを教えてください。最終的に解決しなかったとしてもOKです。 技術力が優れているかではなく、どれだけ試行錯誤したかという観点で採点をします。 「この機能のこのコードの意味がわからなかった」という高度なものでもいいですし、 「そもそも何から手を付けていいのかもわからなかった」というものでも構いません。

  • 私の回答
    私がLinuxを開発する、と言える機会はほんの一部しかなく、Android端末向けにAndroid Open Source Projectや、その派生で様々な便利な機能を追加しているLineage OSやAndroid Ice Cold Projectなどのビルドを行うぐらいでしかありません。
    私がこれを始めた時は中二だったのですが、何をやってるかすら理解しておらず、ネットの情報にただただ従ってやっているだけのことでした。
    最初のうちはビルドに失敗したことの何が原因なのかすらわかっておらず、これは途中で手順を間違えたんだと、そう思ってやめてしまっていました。
    今の私があるのはLinux系OSをビルドするということがあって、理解できないことを理解したいと思い始めたということがあったからです。
    今でこそ、ある程度の知識が身についてきたのでGitHubでメインやサブで使っている端末向けのカーネルソースコードのコミットを眺めて何がどう変わっているのかだとかはある程度わかるようになってきましたが、すべてを独学で理解するのは難しいと判断したので、このゼミを希望しました。

  • 共通問題D
    その他、書ききれなかったことを好きなだけ書いてください。

  • 私の回答
    私は今、ブロックチェーン技術に惹かれて、仮想通貨や、その周辺ソフトウェアの開発をしています。
    自分が仮想通貨に出会ったのは1年半ほど前、Androidのビルド用に組み立てたPCの使ってない間のリソースがもったいないからと、マイニングというブロックチェーンを支えて報酬を得るということに興味を持ち始めたことがきっかけでした。
    当時大した技術もなく、Androidのビルドに失敗し続けて飽きたところ、たまたまネットの中のいいひとがマイニングをしているということを知り、自分も興味を持ってとりあえずやってみました。
    仮想通貨といえば私の中には悪い印象しかなかったのですが、これを期にどんどん印象が変わっていき、仮想通貨って面白い、ブロックチェーンって面白い、と思うようになりました。
    そこで、更に仮想通貨やその周辺ソフトウェアの開発に携わっている人との出会いがあり、今度は開発に興味を持ち始めました。
    自分も開発をやってみたい、と思い始めて技術を手に入れたいと思うようになりました。
    ここまで来たのは、すべてAndroidをビルドしようとしたところが原点です。
    セキュリティキャンプを知って、今やってることもいいけども、私が技術や開発に興味を持ち始めたきっかけであるAndroidLinuxの開発を、真剣にもう一度やってみたいと思うようになりました。
    今の私がある理由の原点に帰って、もう一度手を付けてみたい、それが今回のセキュリティキャンプに応募した最大の理由です。

いかがだったでしょうか、内容がいかにも初心者感満載だったり、同じ内容が繰り返されていたり、課題ごとに文章量の差が大きすぎたりと自分の中ではあまり満足してないのですが、とりあえず受かってよかったと思っています。
因みに、Cの双方向リンクリストの参考にした、片方向線リストのソースコードこちらです。

このブログについて

TwitterやDiscordで見かける人はこんにちは。初めましての人は初めまして。Yと申します。某通貨を空中分解させたり、プール作ったり、仮想通貨周辺ライブラリやら、ソフトやらを作っているとりあえず馬鹿な奴です。

なんか、最近いろんなものを作るにあたって、情報が少ないなぁと感じることが多くなりました。調べると情報はあるんですけども、見つかりにくかったり、わかりにくかったり。備忘録のついでに自分なりにまとめて、残すことが出来ればいいかなぁと思い、ブログを立ち上げました。自分自身、何かしらのプログラミング言語を完全に理解している訳でもなく、わりとノリで色々やってるので、かなりプログラミング初心者です、はい。

とりあえずリポジトリ詰め込みまくってるgithubアカウントはこちら

そしてtwitter

どうぞよろしくお願いします。