このページは...

2019年度に自分用に作成したメモのリストです. これらのメモは,学部生が読むことを想定してかなり噛み砕いて書かれており, 研究室のSlackで適宜共有されています (興味のある方は直接ご連絡ください.知財が絡んでいて外に出せないものも 当然ありますが...).

プログラミング言語に関するメモ

プログラミング言語は人間がコンピュータに指示を与えるための道具ですが, アセンブリ言語以外の高水準言語には,「言語化を通して対象に対する理解を深める」という重要な機能があります. 自分の世界を広げるためにも, 比較的自由な時間の取れる学生のうちに,授業で習っている言語(おそらくC言語やJava)以外に 何か一つお気に入りの言語を見つけて欲しいと思います (業務で使う言語については,就職先で嫌でも勉強することになるわけですし...).

  1. Go言語で並列処理を記述しよう
  2. スマホアプリ開発用言語あれこれ(Java, Kotlin, Swift, C#)
  3. Rustについて(どこがどう安全なのか)
  4. Rubyのブロックを理解する
  5. いろんな言語でジェネレータを書いてみる
  6. JavaScriptのスコープに気をつけよう
  7. 仮想マシンとしてのErlang
  8. 増殖するドットネットフレームワーク
  9. LLVMとは何か
  10. 実はよく知らないC言語
  11. 非同期処理の記述方法(callbackからasync, awaitまで)
私がいま興味を持っているのはSmalltalkです. Rubyには昔から興味があってよく使っているのですが, 最近Swift関係の話でSmalltalkが出てきたので,いまが勉強を始める時期なのかもしれないと 考え始めています(大学院生の頃から,Smalltalkについてはその存在だけを知っていました. そう考えるとなんだか「運命の人」みたいでちょっと怖いかも...). Perl6の「どうしてこうなった感」も別の意味で興味深いです (積極的に使いたいとは思わないけれども).

研究関係のメモ

研究を具体的に始める前に行っている下調べのアウトプットです. 業績のページにあるように,いくつかは論文の形になりました(現在進行中のものについてはもちろん載せていません). このようにまとめておくことで,どこに時間をかけてはいけないかが見えてきますし, それぞれ互いにつながりがあるので,持ち札を増やすことにもつながります.

  1. Wi-Fi Directに関するサーベイ
  2. VANETに関するサーベイ
  3. P2Pシステムのインセンティブメカニズムに関するサーベイ
  4. IPFSとは何か(未完成)
  5. Etheriumの仕組み
  6. ビデオの品質評価手法に関するサーベイ
  7. ピア支援型CDNに関するサーベイ
  8. 複数記述符号化(MDC)について
  9. クラウドゲーム研究のサーベイ
  10. フォグコンピューティングについて
  11. モバイルクラウドコンピューティング(作業中)
  12. クラウドセンシングに関するサーベイ
  13. IoT向けCPUの動向について
  14. ニュース記事推薦手法のサーベイ
  15. PeerSimシミュレータの使い方NEW
  16. WebRTCの使い方NEW
サーベイが結構含まれていますが,これらのメモの中には研究に関する具体的なアイデアも書き込まれているので, 外部の方にはちょっとお見せできないかもしれません.

ちょっと理論的な話

  1. CRDTについて
  2. k-近傍検索アルゴリズム
  3. コンパクトルーティングアルゴリズム
理論がらみで興味のある問題はいくつもあって,目についた面白そうな論文を手に入れては読んでいるのですが, いまひとつ繋がりのある知識にならないところがあります. 上の三つについても,自分が抱えているネットワーク関連のテーマと密接に関係があったりするので, そういう動機付けが自分にとっては重要なのかもしれません.

いろんなプログラミング言語のチュートリアルNEW

新しいプログラミング言語をマスターするには,オンラインのチュートリアルを使うのが効果的です. 言語のバージョンアップに伴って内容が適宜更新されるのは書籍にはない大きな利点です. (もちろん書籍には書籍の良さがあるのですが, 書籍を購入するのは一通り学び終わってからでも遅くないでしょう. いわゆる「誰でもわかる」系の入門書は,少なくとも情報系の学生には必要ないと思います).

  1. Ruby on Rails
  2. Python
  3. Go
  4. Swift
  5. JavaScript
  6. Rust
  7. Kubernetes
また言語を勉強する際には,何をアウトプットするかをあらかじめ設定しておいた方が飽きがこなくて良いです (英語の勉強もそうですよね.海外ドラマを字幕なしで楽しむというのも立派なアウトプットです). 例えばSwiftだとiOSアプリ(SwiftUIはそれだけでも勉強してみる価値があると思う...), Ruby on Railsだとウェブアプリとかです. JavaScriptはWebRTCやWebAudioなどのいわゆるブラウザ系のプログラムで非常によく使われます. ただしこの言語はシングルスレッドなので,JavaScriptを勉強する際は,必ず非同期処理の書き方までマスターしましょう.