Dentoo.LT #15を開催しました

もう1週間経ちますがやりました。

atnd.org

最近のDentoo.LTではなかなか多い、58名の参加者と18名の登壇者が集まりました。

ディスプレイ接続のトラブルがたくさんあって、Xが固まる人・OSをリブートする人・Windowsに切り替える人と色々大変な感じがした。でも何故かディスプレイを持ってきてる人がいて、そこで事前に接続確認をしたりと不思議な空間が出来上っていた。

今回は参加者が多いだけじゃなくて、初参加の人が多かったことも良かった。何回か前のDentoo.LTで id:whywaita が言っていたのだけれど、見に来てくれる人が増えることが大切なのかなと僕も思う。

また今回では電通大以外の人でもWifiを使えるようにしたのでより良い環境になったのかなと思う。電通大以外の人でも参加しやすいように、もっと良い環境にしていきたい。

毎回慌だしい運営をしているので、そろそろ落ちついたスタートを切ってシャキっとしていきたい。

そんなこんなで次回は調布祭で開催します。まだ未定ではありますが、おそらく調布祭2日目(11/26(土))に開催します。

次回も楽しんでもらえるように頑張ります。よろしくお願いします。

atnd.org

Emacsの設定をぶっ壊してしまったので作り直してる (あとGitHubのProjectsの機能を試してる)

タイトル通り。Emacsの設定を変更したらぶっ壊れてしまったので難儀してます。

github.com

加えた変更は今まで一つの init.el に設定を書いていたのを、init-loaderというパッケージを使って細かくファイルを分割して読み込もうということをしたかった。

ファイルの分割は上手くいったんだけど、他のパッケージの読み込みがされなくてひどいことになってる。

当然gitで管理はしているからロールバックは出来るけど、これを機に溜まっていた不満を一気に解消したいので踏ん張ろうみたいな気持ちになってる。

それと同時にGitHubの新機能のProjectsを試してる。Issue管理すら不要だけど折角なので使ってみてる。

パッと触わってみた感じだとIssueとラベル管理で同等のことは表現できるだろうけど、カンバンを使えるという点ではいいのかなという印象。個人で使ってると全然威力が発揮されなさそうなのでまあそうだよねという感じ。

見方によってはものすごく些細なIssue未満やラベルが無限に増えていくのをProjectsでnoteとカテゴリ分けをすることで解消できそうだけどこれも個人で使ってるからこう感じたのかも。

個人でカンバンを活用する知見を教えてほしいです。

インターン中に使った金額を計算した

こちらの記事と合わせて読むと良いのかもしれません。 benevolent0505.hatenablog.com


インターン中に使った金額をやっとこさ計算した。インターン期間でもらったレシートをなんとなく残しておいたので、いつか終わったら計算してみようと思っていた。

どんな店にいくら使ったのかを雑にまとめてみる。レシートの残っているものしか計算していないので実際はもう少し使っているはず。

食品

コンビニ等 パン屋さん 餃子の王将 行き帰りの駅 お土産
5,423円 915円 1,165円 791円 3,672円

食品以外

ヨドバシカメラ アニメイト 大垣書店 映画 京都国際マンガミュージアム
712円 626円 2,208円 5,700円 800円
合計
22,012円

表が大きくなったので食品類とそれ以外に分けた。

計算してみると食品とそれ以外にかけた金額がだいたい同じでびっくりした。使った金額を見てみると思ったより使ってなくて安心という感じ。レシートが残ってないものも合わせると30,000円弱になりそうだけど、まあ普通に1ヶ月間の内に使う金額と同じくらいなので良さそう。

以下お金を使った場所での思い出を書いてく。

コンビニははてなの入っている御池ビルの1階にセブンイレブンがあるので、就業の後にホテル組のインターン生とよく寄ってホテルに帰ってた。他はホテルの朝ご飯を逃がした日にサンドウィッチを買ってオフィスでよく食べてた。

パン屋も朝ご飯を逃がした日に散歩がてらに歩いて良さげなパンを買って食べてた。少し歩くけど進々堂というパン屋がおいしかったのでお勧め。


ヨドバシカメラでは雑なHDMIケーブルを買って、ホテルのテレビでdアニメストアのアニメを流してた。インターン中の意外な買い物の内の一つ。

アニメイトでは「アルテ」って漫画の5巻目を買ってた。その土地のアニメイトに寄って何かしらのものを買うと実績解除をした感じが自分の中ではある。

京都国際マンガミュージアムはホテルから徒歩5分で行けて僕の日曜日の時間を吸いつくしてくれたすごい場所だった。Kindle Unlimitedを具現化したらあんな感じになるんだろうなってところで、昼の1時から2時間くらい見物するつもりだったのが結局閉館時間の6時までいてしまい、完全に時間を溶かしてた。

大垣書店ではマンガミュージアムで気に入った「響〜小説家になる方法〜」って漫画の既刊全部を買った。この漫画は本当に面白くて、読むと絶対衝撃を受ける漫画なので是非読んでみることをお勧めする。

映画は「シン・ゴジラ」を2回*1、「君の名は。」を1回見に行った。MOVIX京都のある寺町通は、これが歴史ある京都にあるのかと思うくらい普通に栄えた商店街で、これも京都なんだなと意外に思った場所だった。*2


京都で1ヶ月弱生活してみた感想は普通に住める良さそうな街って感じ。それまでのイメージだと、有名な観光地であまり生活をする場所でないという思い込みだったけど、中心部はそんなことはない普通の都市で、しかも1箇所に集まってる感じなので徒歩や電車でのアクセスもしやすい良い街だった。

使った金額を見ると半分が自分の趣味や娯楽への出費で、たとえインターンに行ってホテル生活をしてもそういう性格は変わらないんだなというのを実感した。

最初は金額計算のつもりが思い出振りかえり会場となってて本題とずれてる感じがするけど、まあそういうことで。

*1:内1回はMX4D

*2:アニメイトメロンブックスとらのあなとかもこの商店街にあって、ここはすごい商店街だぞと思った記憶がある

幼稚園以来の充実した日々を過ごしたはてなインターンでの1ヶ月が終わった

はてなインターンで最高の夏を過ごしてきたid:miki_bene です。

インターン中でははてなブログのaboutページ編集機能「プロフィール」の下の部分に最終更新を表示する機能を作成しました。

とにかく最高だったはてなインターンに応募してから終わるまでの思い出を振り返ってみようと思います。

hatenacorp.jp

来るまで

僕がはてなインターンに応募してみようと思った理由は単純で、僕の2つ上の先輩のid:masawadaが2年前にはてなインターンに参加していて、やけに楽しそうな夏を過していたのが印象深かったからです。

そんなことを思いながら、応募するかとなったときです。いくつかの項目の他に自分のポートフォリオをまとめて提出する必要があったのですが、まとめるのが面倒で更に大学の課題やらサークルやらで忙しく、締切2,3日前になってあわててポートフォリオを書き始めた覚えがあります。

ポートフォリオ · GitHub

来年の応募のポートフォリオは、はてなブログaboutページに書いてもらえると嬉しいです。

前半過程

前半過程は講義パートでPerl, SQL・DB, WAF, JS, 機械学習, シスプラをやるカリキュラムで、シスプラ以外の各講義には課題が付いてきます。これらを1週間半で行うスケジュールで、割と過密なスケジュールになっています。僕は途中必須の課題が終わらなくて、間の日曜日や自由課題の空いた時間でなんとか終わらせました。

この期間で講師の人達に受けたコードレビューのお陰で、自分の「このくらい書けば良い(問題無いコード)だろう」と思う閾値が上った気がします。更に他の人が書いたコードも見れるので、同じ動作のコードを他の人が書くとどんな風に書くのかが見れてとても勉強になります。

また今年から本格的に機械学習の講義を行ったようなのですが、この講義がとても良くて、普段は意識することのないWebサービスコンピュータサイエンスの関わりを学ぶことができて本当に良かったです。大学の講義で聞いた覚えのあるような内容なんだけど、実務で使うという視点での話もあってとても興味深かったです。

この期間はとにかくコードを毎日書きまくった期間で、過去にはてなインターン精神と時の部屋だと表現した人がいましたが、まさしくそんな感じで、これまででこんなにコードを書きまくった期間はないと思うほど濃密な日々でした。

f:id:miki_bene:20160916185444p:plain

インターンSlackでのペアの人とのあたたかみのあるやり取り

後半過程

後半過程は各チームに配属されて新機能の開発を行いました。はてなブログコースで開発した機能は、はてなブログaboutページ編集機能と最終更新を「プロフィール」の下に表示する機能です。aboutページの拡充はブログチームの悲願*1だったらしく、そこに手を加えることができて良かったです。

残念ながら最終発表での優勝はできませんでしたが、個人的には最高の機能だと思っているのでとても満足です。

はてなブログのコードを実際に見てみるといろいろがあーでこーであーで、「これが、実際に動いているサービスのコードか」という感想でした。

開発の大部分はペアのid:susisuさんとペアプロをして進めました。ペアプロは初めての経験で、最初の内はペアの人の動きを追ったりするのに集中してしまい、コードを書いてる感じがしなかったけれど、慣れてくると良い感じに作業の分担が出来て上手くやれた方かなと思います。*2

機能がリリースされた瞬間は、まず機能がちゃんと動いているかどうかが不安でした。動作確認を終えると、今度はユーザからの声がどんなものなのかが正直不安で恐かったです。

けれど機能紹介のブログが公開され、好感触の反応をしてくれているブコメも付いて、実際に使ってくれている人が出てくるという体験はとにかく最高で貴重な体験でした。

staff.hatenablog.com

staff.hatenablog.com

LGTM

インターン終了2日前に謎の高まりを見せた僕

インターンで学んだこと (思い出したら追記していきます)

インターンで学んだこととして、Perlのような言語*3でもしっかりとやっていくという気持ちがあればはてなブログのような大規模なサービスでも運用することができるし、Perlを書いているからといって特別苦痛に感じることもあまりない。大切なのはどんな言語使うかではなくて、しっかりとした設計や丁寧なコードを書いていくといったことであったり、開発のしやすい環境やチームの体制であるということがあります。

具体的にどう丁寧なのかはid:hitode909さんの発表多分これあたりを見てもらえればいいけれど、これからインターンを考えている人*4も「あそこは○○の言語を使ってるからちょっと……」といって敬遠する必要はなくて、上に書いたようなことの方が重要だということを頭の隅みおいてもらえると嬉しいです。

総評

はてなインターンでの日々はとにかく最高の毎日で、こんなに毎日楽しい日々を過ごしたのは、幼稚園以来だったのではないかと思うほど充実した期間でした。2週間でWebアプリケーションを書けるようになり、チームに配属されて機能をリリースする。これだけのことを1ヶ月弱で行うので実際濃密です。

加えて濃い面子の同期に出会えたり、インターネットやブログで見たことのある人達と一緒になってコードを書くという体験もできるので、本当に色々なものが凝縮されてつまった日々でした。

はてなのエンジニアは優秀で最高の人達がたくさん集まっていましたが、特にブログチームのみなさんは本当に最高の人達でした。メンターのid:amagitakayosiさんはメンターというよりは一緒に機能を開発していた仲間という感じで、本当にお世話になりました!!!!!!!!

そしてこのインターンを準備してくださった、インターン実行委員長のid:daiksyさんもありがとうございました!!!準備に半年もかけてるらしく本当に、用意周到という感じです。

みなさん本当にありがとうございました!!!!!!!!

他のインターン

最後に他のインターン生を紹介します。

id:susisu : ブログチームでペアだった人, 半額シール susisu.hatenablog.com

id:upamune : ホテルで同室だった人, 芹澤優 http://blog.upamune.com/entry/2016/09/12/120000blog.upamune.com

id:polamjag : DJ, いろいろ凄い polamjag.hatenablog.jp

id:mr-sunege : 漫才プレゼン良かった mr-sunege.hatenablog.com

id:hantas : ISUCON, インターン終わった後すぐ台湾に行った人 blog.taniho.net

id:ak1t0 : CTF, 午前中がつらそうだった人 http://ak1t0.hatenablog.com/entry/2016/09/16/115333ak1t0.hatenablog.com

id:nakamura-takuya : お昼を良くおかわりしていた人

*1:id:uedayさん談

*2:特にsusisuさんはコードを書くのがとても早かったので、頭を追いつかせるのが大変でした。

*3:Perlをdisってるわけではないです

*4:はてなだけではなくて

JavaScriptでopenという名前の関数を作るとどうなるか

背景

今受けている大学の授業でJavaScriptを扱っている。

その授業で window.openという関数を用いて新しいウィンドウを開いたり閉じたりする関数を作るという課題が出ているのだが、この課題に取り組んでいる友人がプログラムが動かないと言っていたので、コードを見たところ下のようなコードを書いていた。

<script>
function open(a) {
    window.open(a);
}
<script>
<body>
    <input type="button" onclick="open('~~~~')">
</body>

このコードが動かない理由について下で書いていく。

何故動かないのか

JavaScriptは関数の外に作成した変数や関数、例えばscriptタグの中に直接書き込んだ変数や関数はグローバル変数やグローバル関数となる。

下のコードは変数messageと関数helloをグローバルな変数や関数として宣言した例だが、window.messagewindow.hello()とやってもmessage変数の参照やhello関数の実行が出来る。

<script>
var message = "Hello, world!";

function hello() {
    alert("hello");
}

alert(window.message); // "Hello, world!"とアラートが出る
window.hello(); // hello関数が実行され、helloとアラートが出る
<script>

何故これで実行出来るのかというと、実はJavaScriptではグローバル変数やグローバル関数を作るということは、グローバルオブジェクトのプロパティとして定義するということを意味する。グローバルオブジェクトとはその実行環境の一番トップにあるオブジェクトのことだが、ここではwindowオブジェクトのことだと思えばいい。

なので関数の外でvar message;function hello() {}windowオブジェクトのプロパティやメソッドを宣言していることと同じなのだ。その為、window.messagewindow.hello()で変数の参照や関数の実行が出来る。

このことを考えると先程のコードが動かない理由が説明できて

<script>
// window.openの再定義
function open(a) {
    // 再定義された window.openを呼び出す
    window.open(a);
}
<script>
<body>
    // クリックしたが最後無限ループ地獄へ
    <input type="button" onclick="open('~~~~')">
    // エラーが出る
</body>

function open(a) ~の記述で、既に存在しているwindow.open関数を再定義する形になる。その再定義したopen関数でwindow.openを呼んでいるのでいつまでも再帰呼び出しがされ、無限ループが発生する。

ちなみにChromeではUncaught RangeError: Maximum call stack size exceeded(…)というエラーが発生する。これはスタックオーバーフローのエラーで、JavaScript再帰処理を行ったときにを行いすぎたときに見かけるエラーである。 FirefoxInternalError: too much recursionとエラーが出た(まんまだな……)。

まとめ

JavaScriptを理解してないとこういうこともある。割と初級者がハマることで「JavaScript グローバル汚染」とかでググると似たようなことが書いてある記事が一杯ある。

一応授業的にはこれを回避する予防線を張ってるみたいで、

ウィンドウを生成する関数createNewWindow ("URL")を作ること.また,引数として表のURLの何番目(n)かを受け取り,対応するウィンドウを閉じる関数closeWindow (n)を作ること.

と書いてあった。でも説明の仕方を考えればグローバルオブジェクトのことを説明できたと思うしフォローのやり方はもっとあるんじゃないかなあと思う。*1

参考

developer.mozilla.org

JavaScriptについて本格的に勉強したいと思ったらここだけを読むといいと思う。他のサイトが全く信用できないわけないないけどMDNは割と信用できる。

パーフェクトJavaScript (PERFECT SERIES 4)

パーフェクトJavaScript (PERFECT SERIES 4)

JavaScriptの本はサイ本とこの本しかよく知らない。だいぶ古い本になっちゃったけど言語仕様をわかりやすく書いてあるのでオススメではある。

*1:授業自体は様々な言語に触れて、色々なパラダイムを学ぼうというもの。JavaScriptはイベント駆動型プログラミングのテーマで扱われている。全4回しかなく、限られた時間で説明するために詳しくやらないのはわかる。わかるけど………

つっこむぞ つかまれッ!

はじめに

これは UEC Advent Calendar 2015 11日目の記事です。

こんばんは、benevolent0505です。UEC Advent Calendar 2015への投稿は2回目となります。2日目に急遽今回書くつもりだった記事を載せてしまい内容に困ってしまったので、僕の最近のお気に入りの漫画「ポプテピピック」のことでも書いてお茶を濁そうと思います。

読んだことがない人はとりあえず見てみましょう。僕は一切の責任を負いませんが。 mangalifewin.takeshobo.co.jp

このまとめを見るだけでもぶっちゃけ十分です。 togetter.com

であい

初めてポプテピピックのことを知ったのは、僕の所属しているサークルの先輩 @twismiko さんが確か「みきおくんこれすごいよ、訳がわからない」的なことを僕に言いながら部室で見てたのを横でのぞいていたのが始まりでした。(多分、きっと、、そんな感じで…)

僕もはじめの感想はわけわかんねえなこれと言った感じでしたが、更新が来るたびに見て、笑い、次第にのめり込んでいってしまいました。 特に時事ネタという名のパクリを恥ずかしげもなくぶっこんでくる態度と、コピペをこれでもかというくらいに使って描く量を減らす姿勢は最高です。どこからこんな発想が生まれてくるんだと感心するしかありません。

便利な画像たち

そんなポプテピピックの中で僕が注目するのは便利な画像たちです。

例えばこれ

間違えたこっち

頭おかしいけど便利でしょう? Twitterの画像リプも捗るわけです。

こうなってくるともっと他の場所にも使いたくなりますよね? 例えばGithubやGitlabのコメントの画像の画像に使いたくなってきませんか? いわゆるLGTM画像と同じノリです。

電通大生ならGitくらい普段から使うでしょうしPull Requestをバンバン送っている人もいると思います。使ってみたくなりましたよね? 使いましょう。

そんなことを言われてもどれを使えばいいのか迷ってしまうと思います。そこで僕が「これは使える」と思った画像をいくつか紹介していきましょう。

普通のLGTM

https://pbs.twimg.com/media/BzvWk7cCUAATBCN.jpg

理解した時

コピペばっかなコードを見た時

浮かれたコードをレビューした時

各種レビューコメント用

議論がまとまらない時

よく確認しないでマージするとき

ひとまずとりあえずこんなところでしょうか。

おわりに

いかがでしたでしょう、皆さんポプテピピック画像を使いたくなってきたでしょうか? こんな煽り合いを行うチームのプロジェクトが成功するとは思えませんが、皆さんも是非Issueやプルリクのコメントにポプテピピック画像を使いまくりましょう。

さて、こんなポプテピピックですがアンチの罠により現在は連載が終了してしまいました。 しかし奇跡的にポプテピピックは単行本化がされています。今は品薄の状況らしいですが、作者も知らない内に出ていたKindle版やその他電子書籍ならすぐに読めるでしょう。

www.amazon.co.jp

気がついたら12日になってしまいました。 もっともっと画像を紹介したいですが収集がつかないのでこのあたりで止めておきます。 駄文かつめちゃくちゃロードが重たい記事になってしまい申し訳ありませんでした。

次回は @alstamber さんの記事です。

総合情報科教育用計算機室(IED)でのJava8とIntelliJ IDEAの導入について

これは UEC Advent Calendar 2015 2日目の記事です。

記事を書いている途中にMBAのReturnキーに何かものが挟まってったことに気がつき、Returnキーがほぼ押せなくなっているbenevolent0505です。

時間がないのでネタが雑です。ごめんなさい… 総合情報科教育用計算機室(IED)でのJava8とIntelliJを入れる話について書きます。

はじめに

電気通信大学の総合情報学科(以下J科)では2年後期に「プログラミング演習」という授業があります。 前半はJavaを使ってオブジェクト指向GUIプログラミングを行い、後半で3人1組になってチームで一つGUIのプログラムを作成するといった授業です。

前期まではC言語しか触ったことがない学生がほとんどの中2ヶ月でJavaとSwingを網羅(?)して、後半でグループプログラミングに放り込む、正直よくやるなと思う授業ですが、後半は自由にやれるので楽しいです。

しかし不満に思う点もあり、例えば

  • エディタは素のEmacsで書かせる
  • EclipseなどのIDEの説明をほとんどしない*1
  • Java8が使えない(Java7まで)

など色々あります。

そのため不満を解消するべく、授業で使っている計算機室(通称IED)の計算機に、最新のJava8と僕が勧めている統合開発環境IntelliJ IDEAの導入方法について書いておきます。

以下に今回導入したJava8とIntelliJ IDEAについて簡単に書いておきます。

Java8について

Javaの最新のバージョン。関数型プログラミングができるようになってていい感じ。自分もまだまだ勉強中なので詳しこと書けない。

IntelliJ IDEAについて

Java統合開発環境(IDE)の一つ。IDEなので基本的に便利(自動import, overrideメソッドを自動でoverride、getter, setterなどを自動生成...etcとかができる機能がある) イケてる。

導入

それではJDK1.8とIntelliJ IDEAをIEDで使えるようにする方法を書きます。*2 WindowsやらOS Xやらはググればわかると思うので省略。

JDKのインストール

JDKのダウンロード

OracleのダウンロードページからJDKを選んで次のページを開く。

f:id:miki_bene:20151202170347p:plain:w300

Linux x64(ピンクの下線を引いたもの)をダウンロードする。

tarの展開

.tar.gzファイルは圧縮形式の一つ(zipとかと一緒)です。なのでファイルを展開して任意のディレクトリに設置する必要があります。展開はGUIでやってもCUIでやってもどちらでもいいです。ここではCUIで展開してホームディレクトリ直下の~/javaのディレクトリに設置する方法を記述しておきます。

$ cd ~/ダウンロード
$ tar zxvf jdk-8u60-linux-x64.tar.gz
$ ls 
> jdk-8u60-linux-x64.tar.gz  jdk1.8.0_60
$ mkdir ~/java
$ mv jdk1.8.0_60 ~/java
$ ls ~/java
> jdk1.8.0_60

JAVA_HOMEの設定とパスを通す

これでjdkの設置が終わったのでパスを通します。 (パスについてわからなければこことかで調べてくれ) IEDのデフォルトシェルはtcshなので .cshrcというファイルをホームディレクトリに作成し、以下の内容書いて保存します。

setenv JAVA_HOME ~/java/jdk1.8.0_60
set path=($JAVA_HOME/bin $path)

最後に

$ source ~/.cshrc

を実行してjdkの導入は完了です。以下のコマンドを打ってjava version "1.8.0_60"と表示が出れば成功です。

$ java -version
> java version "1.8.0_60"
> Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
> Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

IntelliJ IDEAのインストール

次にIntelIiJ IDEAのインストールです。

ダウンロードと展開・配置

IntelliJ IDEAのダウンロードページ を開いて Download Communityのリンクを開きます。

IntelliJもtar.gzで降ってくるので解凍して任意のディレクトリに設置してください。ここでは~/appsディレクトリに設置します。

$ cd ~/ダウンロード
$ tar zxvf ideaIC-15.0.1.tar.gz
$ ls
> idea-IC-143.382.35  ideaIC-15.0.1.tar.gz  jdk-8u60-linux-x64.tar.gz
$ mkdir ~/apps
$ mv idea-IC-143.382.35 ~/apps
ls ~/apps
> idea-IC-143.382.35

IntelliJ IDEAの実行

では実際にIntelliJを実行してみます。 以下のコマンドを実行するとIntelliJが起動します。

$ cd ~/apps/idea-IC-143.382.35/bin
$ ./idea.sh

f:id:miki_bene:20151202222423p:plain:w500

初回実行時にカラーテーマとかデスクトップエントリーを作るなどの設定が出来ますが、基本的にはNextと表示されるボタンを押し続ければ大丈夫です。 この辺りは公式のドキュメントに任せようと思います。

www.jetbrains.com

www.jetbrains.com

最終的にこのウィンドウが表示されれば完了です。

f:id:miki_bene:20151202222709p:plain:w500

設定関連

必須の設定

IntelliJは利用するJDKの指定が必要です。その方法について記述します。

最初に表示されるウィンドウの右下にあるConfigureをクリックし、Project Defaultsをクリック→Project Structureをクリックすると次のウィンドウが出ます。

f:id:miki_bene:20151202224148p:plain:w500

<No SDK>と表示されている隣りにある、Editのボタンをクリックし、JDKを選択します。

f:id:miki_bene:20151202224254p:plain

すると上の画像にあるようなウィンドウが表示されるので、先ほど設置したJDKの場所を選択してOKを押します。

f:id:miki_bene:20151202224440p:plain:w500

すると<No SDK>だった部分が上の画像のように表示されますので、これで設定完了です。

オススメ設定

以下には、やっておいた方が良いIntelliJ IDEAの設定を紹介します。

Configureをクリックし、Preferencesをクリックすると設定を変更するウィンドウが表示される。

  • Appearance & Behavior > System Settings を選択

    • Startup/Shotdown
      • Reopen last project on startup のチェックを外す
      • Confirm application exit のチェックを外す
    • Project Opening
      • Open project in new windows にチェックを入れる
  • Editor > General > Appearance を選択

    • Show line numbers にチェックを入れる
    • Show method separators にチェックを入れる
    • Show whitespaces にチェックを入れる

これらを全て行って、OKをクリックする。

Hello World

これに関しても公式のHello Worldのページが一番参考になると思うので、そちらに任せます。*3

IntelliJ IDEA 15.0 Help :: Creating and Running Your First Java Application

終わりに

ここまでお疲れ様でした。

これでかなり良いJavaを書く環境が出来上がりました。 IntelliJについてはこの記事ではほとんど触れていませんが、色々調べれば日本語の記事は出てくるはずです。

皆さんも快適なIEDの環境を目指しましょう!



おまけ

正直Javaをやり始めた人にJava8だIntelliJだと色々言う必要は無いのかもしれません。 でも、授業で教わる内容だけが全てではなく、もっと色々なやり方があり、便利な方法があるんだということ。授業で習っている内容は今では一昔前のことで、最先端の状況はもっと違ったものなんだということは知って欲しいです。

*1:一応Eclipseについての説明のページは用意されているが、ほとんどの学生は見てないと思う

*2:2015年12月2日現在のバージョンです。注意してください

*3:書ききる体力がなくなっただけです…