IntelliJでScalaパッケージをインポート時にブレースの囲みにスペースを入れる方法

Version 2017.2.3で確認.

IntelliJのデフォルト設定だと, Scalaで一つのパッケージから複数のクラスをインポートするとき, ブレースの囲みにスペースが入っていない.

つまりこうなっているのを

import akka.http.scaladsl.model.{HttpRequest, HttpResponse}

こうする方法.

import akka.http.scaladsl.model.{ HttpRequest, HttpResponse }

Scala Code Style的にはどっちでも良さそうだけど, 今書いてるプロジェクトはスペースが入っている方で, Auto Import機能でインポートすると勝手に既存のコードをスペース無しにフォーマットしてウザい. このままだとフォーマットに気づかずコミットしかねないので設定でなんとかする.

設定は簡単で, File -> Settings... -> Code Style -> Scala の Space タブで以下の設定をする.

  • Spaces after open and before close braces in imports にチェック

gyazo.com

これでコミットに不必要な差分が紛れ込むことがなくて快適になります.

Elpyを使ってPython用Emacsの設定を書いた

大学4年生になり研究でPythonを使う必要が出てきたので, EmacsPython用の設定を追加した. 普段なら他の人の設定をコピペするだけなのだが, 今回利用したパッケージを使った例が少なかったのでまとめることにした.

前提条件

Python2系が必要なときはvirtualenvを使うけど, 3系前提ならvenvだけで良さそう*1.

前提と同じPython3 + venvを入れるには以下の記事が参考になる.

pyenv + venvでPython3環境を構築する - $shibayu36->blog;

利用したパッケージ

elpyはEmacsPythonIDE化するパッケージ.

書いた設定

(el-get-bundle! python-mode)
(setq auto-mode-alist (cons '("\\.py\\'" . python-mode) auto-mode-alist))

(el-get-bundle! elpy
  (elpy-enable)
  (setq elpy-rpc-backend "jedi")
  (add-hook 'elpy-mode-hook
    '(lambda ()
       (auto-complete-mode -1)
       (define-key company-active-map (kbd "C-n") 'company-select-next)
       (define-key company-active-map (kbd "C-p") 'company-select-previous)
       (define-key company-active-map (kbd "<tab>") 'company-complete))))

使い方

  • プロジェクト環境に依存パッケージをインストール.
$ source bin/activate
$ pip install jedi もしくは rope
$ pip install flake8 importmagic autopep8 yapf
  • Emacsでプロジェクトディレクトリを開いて M-x pyvenv-activate をする. どの仮想環境を利用するか選択するので, プロジェクトディレクトリを指定して選択.
    • プロジェクトの環境が有効になり補完やLintが効くようになる.
  • 完了
    • 何かおかしかったら M-x elpy-config で設定を確認できるのでそれを見ながら修正する.

補完のバックエンドをjediropeで選択できる. どっちを選べばいいかはelpyの公式のWikiに書いてある.

雑感

よくあるブログエントリだとjediを入れて補完が出来るようにするのが多いけど, Python仮想環境のことを考えていなかったりvirtualenvを使っていたりで千差万別なので, 今回自分用でまとめてみた.

Pythonは書き始めたばかりなので, IDEの機能や周辺のLint・リファクタリングツールを全然使いこなせていない. 手持ち無沙汰感は否めないけどよしとする.

設定に関してだと el-get-bundle! の辺りは各自の使っているパッケージ管理ツールに適宜読み換えればいいと思う.

elpy-mode-hook にくっついている設定はAuto-Completeを無効にし, Company-Modeのキーバインドを最低限設定するもの. 普段からCompany-Modeを使っている人必要なさそうだけど, 自分は普段Auto-Completeを使っているのでPythonを書くときだけCompany-Mode を有効にするという形を取った.

Auto-Completeを使う方法もあるのかもしれないけどそこまで調べていないのでひとまずは現状でいいかという気持ち.

より詳しく, 正確にEmacsPythonの設定をするならEmacsWikiを見ると良さそう.

EmacsWiki: Python Programming In Emacs

参考記事

*1:むしろvenvのみの方が余計なものを考えなくて良いと思う. 止むに止まれぬ事情があるときはvirtualenvを入れよう

【未完】PHPで普通のWebサイトの作り方

これはUEC Advent Calendar 201622日目の記事です。 www.adventar.org

21日はid:etheldreda-33rさんで「勤労学生と言う選択肢[UEC 2016]」でした。 etheldreda-33r.hatenablog.com

大遅刻をかましてしまいすみませんでした。まだ完成していなくてどうしようという気持ちですが、流石にそろそろ公開しないと良くない気がしてきたのでひとまずこのエントリに関連した発表のスライドをのせておきます。いずれ追記をするので、その時に気づいた方は見ていただけると幸いです。

今回書くのは電通大総合情報学科3年前期に行われた、メディアネットワークという授業で僕が作ったものについてです。

はじめに

今回のタイトルには多分に語弊が含まれます。わーるどわいどうぇぶに公開できるレベルのサイトの作り方は書きません。それを期待した人はごめんなさい………

メディアネットワークという授業は僕の所属する電気通信大学総合情報学科の3年生向けに開講される授業です。内容を簡単に言うと、PHPを使って動的にコンテンツを生成するホームページを作るという授業です。PHPを使ったアプリケーションを作ることでWebの基本的な事項を学習するわけです*1。当然ネットワークに関する知識やHTTP、PHP自体の知識やWebアプリケーションを作る上での簡単なセキュリティの話が出てきます。授業の評価は、各個人で好きなサイトを作り、共用サーバ上で公開された作品で決まります。

さて、僕が作ったものはSlideShareSpeaker Deckのようなスライドを投稿して、サイト上で見れるようにするアプリケーションでした。せっかくの機会だったので、色々と実験をしようとしたのですが、時間が足りず中途半端な形になってしまいました*2

このアプリケーションを作る上で一番の工夫点はRESTfulなURIの実現です。以下ではRESTなURIを実現するために行ったことについて書いていきます。

今はこのスライドを見てください

speakerdeck.com github.com

おわりに

重ねて大遅刻をかましたことをお詫びします。id:knium君にはとても迷惑をかけました…… 2014年からUEC Advent Calendarを書いていて、これで3度目になりました。今年はギリギリまでAdventarに作られなかったのでどうしようかと思っていたのですが、後輩の手で作成されたのでもう何年かは続きそうですね。

話は変わって、12月22日は僕の所属する総合情報学科の卒研配属の1次配属者発表の日でした。幸いにも僕の配属先は決定し、何の因果か仮配属先はこのメディアネットワークを担当していた先生でした。授業を受けている時にはこの先生の研究室を志望するとは全く考えていませんでしたが、ある程度まともなものを作っておいて良かったかなと思います。授業の結果が直接、配属の理由になったというわけではないですが、自分が本当にやる気を出そうと思ったところで出せるといい事があるのかもしれません。

良い報告ができたところで、この辺りで締めようと思います。 UEC Advent Calendar2016, 24日目はアムザさんで[UECAC2016]電通大のプロデューサーとD@NPENを作った話です。

alevam.me

参考

*1:資料を見返してみると、コミュニケーションツールとしてのWebだとか他にも色々書いてありました

*2:実はインターン期間中も完成しておらず、提出日までインターンの課題と平行して作り続けていました

聖夜の夜にDentoo.LT

これはMMA Advent Calendar 201623日目の記事です。

今朝ユーリ!!! on ICEの最終話をみて ガチ泣きしてしまったid:miki_beneです。

昨日はid:mizdra君でMMAに入って1年でやったことでした。今の2年生も積極的ですが今年の1年生もかなり積極的で、前回のDentoo.LTでは飛入り枠で登壇してくれました。 優秀で活動的な後輩が多いと自分もやってやらないとなという気持ちになり刺激的です。

実は僕は22日の分のUEC Advent Calendar 2016を書いていないのでこれから書かないといけないのですが、こっちの方がシュっと書けそうなのでこちらを先に書こうと思います。id:Knium君ごめん。

さて聖夜の夜にDentoo.LTというタイトルですが、特別クリスマスとからめるようなネタも思いつかないので、Dentoo.LTについて僕の思っていることをつらつらつらと書いていきます。正直このエントリ*1であらかた書いてしまった感がありますが頑張って書こうと思います。

※追記

書いていると自分のDentoo.LTに対する勝手な思いを列挙するものになりました。独り善がりなことばかり書いてありますが、読んでもらえれば幸いです。

見てほしい

Dentoo.LTでは毎回YouTube Liveを使った生配信を行っています。配信を見ている人は割といて、僕自身も初回Dentoo.LTのUst配信を見ていた人間です。しかし割といるとはいえ、その内訳はMMAやその周囲の人が多い印象を受けます。もちろんゼロというわけではなく、#detooltハッシュタグを追っていると、ちらほら電通大以外と思われる方のツイートも見かけます。そう言った方々は本当にありがたいです。

最近は自分達の周囲の範囲だけではなく、学内の他の層にも知ってほしいと思っていたりします*2。Dentoo.LTは学内の人だけではく、他大や社会人の方も参加し、登壇しているイベントです。そういった方々の話を聞いたりする機会はせまい大学の中ではなかなかあるものだとは思いません。是非配信を見てほしいと思います。

来てほしい

生配信をしているとはいえ、もっと会場に来る参加者が増えてほしいです。これについては登壇者、運営側両方の思いがあります。

登壇者としては聴衆が多い方が緊張もしますが張り合いも出ます。配信では多くの方が見てくれているのかもしれないけれど、やっぱり顔が見れた方が反応もあってやりやすいです。

そして運営側としては、人が多い方が盛り上がります。拍手やガヤの音も大きいですし、人が多い方がそれだけ質問をしてくれる人も多くなるかもしれません*3

こういう言い方をすると押し付けがましいですが、やっぱり会場で発表を聞いている方が楽しいと思います。その場の空気感は会場でないと感じることはできないし、そしてこの空気感にあてられてあわよくば飛び入り登壇をしてほしいとも思っています。

登壇してほしい

これはかなり切実な思いです。周りの人に「登壇してよ」「何か話してみない?」と誘ってみると、返ってくる言葉はたいてい「話すネタが無い」です。確かにいきなり登壇をしてくれというのはハードルが高く感じてしまい難しいかもしれません。しかし、話すネタが無いということはないはずです。これは僕の思い込みなのかもしれませんが、どんな人でも自分が話したい、語りたい、みんなに伝えたいと考えてることがあるはずです。Dentoo.LTのテーマは特別決まっていません。技術的な内容でなければいけないという決まりもありません。話したいこと話せば、それで十分なんです。

YAPC::Asiaという大きいイベントを開催していた人のツイートを貼っておきます。

Dentoo.LTの登壇希望は早い者順なので選考はしていませんが、登壇希望を出そうか迷っている人は思い出してみてください。

「自分は人の前で話すのが苦手」

そうかもしれません。でもそれを人に話したいと思ったのなら話してみるべきです。失敗が恐いかもしれませんが、それは僕も同じです。ここだけの話、僕は毎回の発表で中途半端な準備で中途半端なネタを仕込んでいるのですが、毎回狙った部分はすべってます。 上手く話せないことが心配なのかもしれません。大丈夫です。所詮10分間なので、たとえ上手くしゃべることができなくても10分後には自分の席に戻っています。

LTを考案した人の文書をのせておきます。

Shibuya Perl Mongers : What are Lightning Talks?

あとこれは僕の思い過ごしだと思いますが、下を向いている人がいるときは誰も自分の話を聞いていないのではと考えてしまいます。でもこれはきっと余計な心配です。下を向いている人はみんなTwitterで実況をしているか自分のスライドを作っています。

最後に運営側としての思いですが、毎回登壇者の募集に死苦八苦しているので、是非登壇をしましょう。

これから

次回のDentoo.LTは年明け2月末を予定しております。Dentoo.LTでは皆様の参加をお待ちしております。

www.youtube.com

atnd.org

Dentoo.LT

おわりに

僕のDentoo.LTについて思っていることをいろいろ書きつらねていきました。ここまでお付き合いいただきありがとうございます。

明日はid:hyr3kの記事です。彼が始めたMMA Advent Calendar。絶対に何も考えず勢いで作っただろうけどなんとかここまでつながって来ました。どう落し前をつけるのか最終日にどんな素晴しいエントリを書いてくれるだろかと楽しみです。期待しましょう。

*1:http://benevolent0505.hatenablog.com/entry/2016/12/05/140755

*2:と言う割にこれといった広報はしていませんが

*3:これも登壇者目線ですが、質問をしてくれた方が発表の時に言い忘れたことを補足できるきっかけになったり、なにより反応を直接もらえることが嬉しいです。

テキストエディタの話

これはMMA Advent Calendar 20167日目の記事です。昨日はsu_zu君で、PowerShellでぐいぐいでした。

www.adventar.org

僕はブルーレイプレイヤーを使う時くらいしかWindowsは使わないのですが、PowerShellから.NETが使えたり、最近だとWSLとかあったりして面白そうですよね *1。 他にもsu_zu君はffmpegOpenGL, OpenCV, 3Dモデリングだったりのグラフィックや画像処理系について明るくて、MMAの中でもめずらしいタイプの人で面白いです。


今回はテキストエディタについて書こうと思います。内容は先月部内でEmacsについて発表したときの内容を元にしたものになります。そのときは準備不足で発表がグダグダになってしまったのですが、今回はふわっとした事をつらつらと書こうと思います。

テキストエディタは何を使っていますか?

僕はEmacsを使っています。使い始めた理由はRubyのmatzとかの有名な人はみんなEmacsを使っていた印象があったからです。他にもLispを書くことに謎の憧れを持っていたとかそんな動機だった気がします。あと高校頃の部活の友達がvimを使っていました。

そんなたわいもない理由ですが僕はEmacsを使い始めましたし、使い続けています。皆さんはどんな理由があって、今使っているエディタを使っているでしょうか。

何がいいんですか?

大学に入り、MMAに入部し、気づけば3年生になっていました。その過程で、「テキストエディタ何使えばいいの?」と聞かれたことが何度かあります*2

ここで面白いグラフを見てみましょう。下のグラフはGoogleトレンドでみた過去5年分のEmacs, Vim, Sublime Text, Atom, Visual Studio Codeの各エディタの検索回数の推移です。

最新のデータを見ているのでもしかしたら異なるかもしれませんが、vimSublime Textの人気が圧倒的ですね。AtomVisual Studio Codeは最近ユーザが増えてきた為かまだ少ないですが、それでも確実にのびてきています。一方Emacsは下がりつづけていて下火ですね………かなしい。

また、2004年からの推移を見るとEmacsの検索件数の減少が目に見えてわかります。

単純に検索数 = 人気/利用率と捉えることは難しいでしょうが、自分がエディタ選びに迷ったときに参考になると思います。エディタもプログラミングをするときの道具の一つでしかないので、コミュニティがどれくらいしっかりしているか、ユーザは多いのか、新しいエディタに関しては、この先も開発が続いていくのかなどが気になるポイントかと思います。

僕がEmacsを始めたときにはこのようなことは考えていませんでしたが、昔から人気のあるエディタはユーザも多く、知見や便利にする拡張もそろっており、今もなお開発が継続されているというお墨付きで、外れのない選択だったのかなと思います。

エディタを選ぶときの基準は当然人に依りますが、一般的にコミュニティの規模やユーザ数、パッケージの多さや検索したときすぐにtipsが出てくるか。あとは周りに使っている人がいるかどうかが大事だと思います。このあたりはプログラミング言語の選び方と似たところがあります。

結局何がいいんですか?

Emacsがいいと思います!!!!

最新版の25.1だとXWidgetといって、Emacsのバッファにネイティブウィジェットを埋め込める機能も追加されています!*3 www.softantenna.com 他にも便利なパッケージが色々そろっているだとか、有名なあの人もEmacsユーザだとかEmacs上でだいたい全てが完結させることができるとか色々いい事があります!!!

半分冗談はさておき、本当にEmacsはいいと思いますが、今年入ってきた1年生にはAtomを勧めました。理由としては、始めのリリースから2年弱経っていてある程度利用の実績が出て来たこと、拡張がそろってきたこと、僕自身が触ったことがあることなどが理由になります。VS Codeが良いという話も聞きますが、やはり自分が触ったことのないものは勧めにくいです。

Emacsを勧めなかった理由はキーバインドなど多少の慣れが必要だったり、Windowsで使う知見が無かったりなど色々あげられますが、一番の理由はプログラムを書く前にエディタの慣れが必要になるのは本質的ではないからです。

布教は1年生の方から質問が来たとき、喜んで布教をしようと思います。


つらつらとテキストエディタについて書いてきましたが、この辺りで終わろうと思います。皆さんも自分に合ったテキストエディタを選んで、最高のプログラミングライフを過ごしてください。

明日はid:suwagi6さんで、MMA会則です。

46m44s.hatenablog.jp

*1:他の部員の話ですが、WSLを使ってGentoo on Windows10をやった人もいます

*2:「なんでEmacs使ってるの?キーバインドわかんなくない??」も

*3:だから何だと言われるとつらい

Dentoo.LTが続いている話

この記事はLT Advent Calendar 20164日目の記事です。

www.adventar.org

昨日は@whywaitaさんで、「Dentoo.LTを引き継いでバトンを渡した話 #dentoolt」でした。アドベントカレンダー荒らしのような真似をしておきながら、遅刻してしまいすみません…………

一昨日、昨日に引き続きDentoo.LTの話をしようと思います。 この3日間Dentoo.LTを始めた人、引き継いでバトンを渡した人、今続けている人で書いていますが、その中で僕はDentoo.LTとの出会いと今の気持ちについて書いていこうかなと思います。


僕とDentoo.LTとの出会いは高校3年生の時になります。当時TwitterでDentoo.LTなるイベントがUstreamで配信されているのを偶然知り、配信を見ていたのが最初でした。当時から電通大の噂は耳にしていて、Twitterでたまによく見るアイコンの人は何故か電通大生であることが多いなという印象でした。今から考えると、この頃から情報系のLTをやる界隈に憧れのようなものを持っていたのだと思います。

それから電通大を受験し、落ちて浪人生になり、また電通大を受験しようやく電気通信大学に入学した時、MMAというサークルに出会いました。このとき初めて、あのときDentoo.LTを開催していた人がこのサークルにいて、今もやっているということを知りました。サークルに入り、Dentoo.LT次回開催のお手伝い募集の案内を聞いたとき、僕は2つ返事でOKをした覚えがあります。

そしてDentoo.LTで登壇したり、気がついたらid:masawadaさんからwhywaitaさんへの主催交代があったり、また気がついたら今度は僕自身が主催になっていたりといろいろありました。何で僕が主催をやっているのかは正直わかりません。気がついたらやっていました。


主催をやることに対し特別に意識していることはそこまでないのですが、作業的な気持ちにはならないようにしようと心がけています。イベントの雰囲気は主催や運営をしている人の性格や色が表れると思っているので、参加者に楽しんでもらおうと思ったら主催自身がつまらない感じでやったり、しんどそうな感じでやるのはやめた方がいいなと思っています。*1

とはいえ僕が主催になってからを振り返ると、毎回開始があたふたしていて、楽しむ余裕を持ったスタートが切れていない回が続いている気がして反省しています。

また、前回から電通大の方以外でもWifiを使えるようにしています。せっかく来てもらったので、良いイベントに来たと思ってもらうには快適な環境を提供することが大切なのかなと思います。


そうこうしている内に僕も後輩にバトンを渡す立場になろうとしています。嬉しいことにDentoo.LTは今も続いていますし、この先も(少なくともあと2年くらいは)続いていくでしょう。 けれども引き継ぐということは、最初に始めたid:masawadaさんや引き継いだwhywaitaさんや僕のことを直接知らない世代が行うということになります。そういう世代が困らないように、明文化してこなかったことを文章にして、誰でもDentoo.LTを運営できるようにすることも大切です。始めた辺りの時期の人がやってくれると僕としては楽で助かるのですが、Dentoo.LTは回を重ねて形にしていったものなので、僕の代でやるのはいいタイミングなのかなと思います。

長くなりましたが、この辺りで締めようと思います。これからもDentoo.LTをよろしくお願いします。

Dentoo.LTの主催が3日間、LT Advent Calendarにお邪魔させていただきました。LTに限りませんが、他人と交流のあるイベントはとても楽しいものです。皆さんもLTに参加するのもよし、登壇するのもよし、企画して開催するのもよしです。楽しいLTライフをお過ごしください。

明日(今日)はid:yomoyamareijiさんの記事です。

reiji1020.hatenablog.com

*1:まあ当たり前のことですね