アーカイブ

2010 年 3 月 のアーカイブ

博士後期課程を退学し、4月から社会人になります

2010 年 3 月 31 日 kadoppe コメントはありません

Left or down?

2010年3月を持って博士後期課程をD1で退学し、4月から社会人になることになりました。

「どうして退学したの?」と、これから何度も聞かれることになるかと思います。うまくまとめられるかどうかはわかりませんが、とりあえず今自分の頭の中にあることをここに書いてみようと思います。

退学しようと決心した理由は大きく分けて以下の2点です。

  • 将来の目標が少し変化してきたこと
  • 博士後期課程の学生としてあと2~3年間学生を続けるよりも、今就職した方が結果的に目標達成への近道になると判断したこと

将来の目標の変化

まずは、一点目について書いてみます。以前、自分の将来の目標(夢)について、抽象的ですが以下のような事を書きました。

一つ目の夢は「ネットワーク技術を使って世の中を良くするための活動を支えるような仕事をする」という事です。いろいな団体・組織が世の中を良くするための様々な活動に取り組んでいますが、それらの活動をコンピュータネットワークの側面から支援するような仕事がしたいんです。
僕の夢その1「ネットワーク技術を使って世の中を良くするための活動を支えるような仕事をする」
(世の中を良くするための活動=社会貢献活動)

この記事を書いてから今までに、将来の目標に対する考え方が変わりました。少しだけ具体的に言うと、社会貢献活動をコンピュータネットワークの側面から支援するのではなく、コンピュータやインターネットを有効活用して”直接的に”社会貢献していきたい、と強く思うようになりました。

「直接的に」という表現は少しわかりにくいかもしれません。コンピュータがあった方が活動に便利だね、というのではなく、コンピュータやインターネットがなければできない社会貢献、コンピュータやインターネットがあるからこそできる社会貢献というイメージです。

また、何かをするからにはモノづくりの立ち上げからサービスのローンチまで全てに携わりたい、という気持ちも強くなりました。つまりは「起業したい」ということなのかな?これは大学3・4回生の頃に心に秘めていたことなのですが、今になって気持ちが再燃してきました。

以上がここ数カ月に僕の中で怒った目標の(心境の?)変化です。次は、二点目。

目標達成への近道

僕が所属していた専攻・研究室は、情報系の中でも比較的社会と直接的に関わりあうような研究を行っているところです。それでもやっぱり、大学の外の世界と比べると社会に対して間接的にしか作用していないんじゃないか、という気がしました。

直接的に社会に関わる・社会を変えていけるようなソフトウェア・サービスを作りたい、やるからには最初から最後までそれに携わりたい。けれどもそのために必要なスキルは今自分には足りていない。なのに大学に在籍している間はそれらのスキルが身につけられないんじゃないか、目標達成に向かって遠回りしているんじゃないかと感じました。大学の外にもっと近道があるはずだと思いました。それが退学しようと思い立ったきっかけです。

別に今やめる必要はない、博士後期課程の残り2、3年辛抱して頑張ればいいんだよ、という意見も頂きましたし、自分自身でもふとそう思うことがありました。ですが、自分の気持ちの変化が時間と共に加速度的に大きく強くなっていくばかりでしたので、退学するという決心にいたりました。

これから

4月からは(というか明日から)大阪のとあるベンチャー企業に就職し、プログラマーとして働きます。まずはボトムアップにモノづくりのスキル、技術力を身につけたいと思っています。

とある先生がベンチャー企業に関して学生にこんなことを言っていたそうです。

ベンチャーに行っても,いきなり取締役やるくらいの意気込みがなければ意味ありません.
http://twitter.com/daaaaaai/status/11286424235

大学と違って企業は学ぶところではないかもしれません。ですが、先生の言葉ぐらいの意気込みでやっていくことができれば、自ずと何か得るものがあるんじゃないかと信じています。そしてゆくゆくは、自分の将来の目標達成のために必要なスキルを、徐々に上のレイヤーに登っていくような形で身につけていきたいと思っています。もちろん、コンピュータやインターネットによる直接的な社会貢献とは具体的には何なのか、についても今は答えを持ち合わせていないので考えていくつもりです。

今僕の頭の中にあることは大体こんな感じです。もしかしたら間違った考え方をしているかもしれません。それでも退学したこと自体には後悔はしていません。博士後期課程のこの1年間で、修士課程の間の何倍もの経験・学びを得ることができました。負け惜しみ(?)に聞こえるかもしれませんが言いますね。

「博士後期課程に進学してよかった!」

ちなみにとある先生(上とは別の先生)は、僕が進学する前から、いつかは退学するんじゃないかということを何となく予想していたそうです。僕はこれからいったいどうなってしまうんでしょうか?それは僕自身にも予想はできませんが、今までどおりフラフラしながらも、少しずつ目標達成に近づくことができるよう、日々精進していきます。

みなさま、どうかこれからも、どうぞヨロシクおねがいします。

カテゴリー: 人生 タグ: , ,

[Java] StringBuilderとStringBufferの速度差

Riflessi

Javaには、変更可能な文字列を表すクラスとして、StringBuilderとSringBufferの2種類のクラスが存在しています。

StringBuilderは非スレッドセーフ、StringBufferはスレッドセーフ、その分StringBuilderの方がStringBufferより動作速度が速い、という点が二つのクラス間の大きな違いのようです。

いったいどれくらい速いのか、ということについて気になったので、以下のコードを実行して調べてみました。StringBuilderとStringBufferを用いて”Hello, world!”という文字列を100万回結合し、その所要時間を計測しています。

ちなみに、環境はMac OS X 10.6 + JDK5です。

StringBuilder実験用コード

public class StringBuilderTest {
     public static void main(String[] args) {
          StringBuilder sb = new StringBuilder();
          long start = System.currentTimeMillis();
          for (int i = 0; i < 1000000; i++) {
               sb.append("Hello, world!");
          }
          long end = System.currentTimeMillis();

          System.out.println("required time: " + (end - start));
     }
}

StringBuffer実験用コード

public class StringBufferTest {
     public static void main(String[] args) {
          StringBuffer sb = new StringBuffer();
          long start = System.currentTimeMillis();
          for (int i = 0; i < 1000000; i++) {
               sb.append("Hello, world!");
          }
          long end = System.currentTimeMillis();

          System.out.println("required time: " + (end - start));
     }
}

結果

上記のプログラムを10回ずつ実行し、所要時間の平均値を計算したところ、結果は以下のようになりました。

  • StringBuilder:平均132.6 msec
  • StringBuffer:平均170.7 msec

StringBuilderはStringBufferの約78%の時間で処理を完了出来ていることがわかります。

Javaプログラマからすれば常識のようなのですが、上記の結果からもマルチスレッドからの文字列操作を行わない場合は、基本的にStringBuilderを使うのがよい、ということが言えそうです。一つ勉強になりました。

カテゴリー: プログラミング タグ: ,