楽してgitignoreを得る方法

何かのプロジェクトを始めるたびに、.gitignoreを作ったり、他のプロジェクト見つけてきて移植するのが毎回面倒でした。最近楽する方法を2種類ほど見つけたので紹介します。

github.com/github/gitignore

githubが提供しているgitignore集ですね。
自分に合った物をこれでみつけてはっければ特に考えなくてもいけます。
(ただし、perlだとcarton対応とかあるので若干カスタマイズする必要性があります)

github/gitignore · GitHub

gitignore.io

gitignore.ioというサイトですね。言語名いれて検索するだけで
自分の欲しいgitignoreを得ることができます。
(知らないだけで裏でgithubのやつがうごいててもおかしくないですが)



gitignore.io

エナジーチャージキャンディが販売終了していた

こちらのエナジーチャージキャンディという物が疲れたときに頼りになるので箱買いしてたのですがいつの間にか販売終了していました。(売れなかったんですね)


代替物で何か無いかなとおもって探したら似たようなものが出てきたのでこんどはコレを買ってみようかと思います。

英文から単語帳を作成するやつをつくってみた

デ辞蔵Webサービスというものをがありまして、こちらはAPI経由で辞書データが使えるサービスらしいです。



デ辞蔵 オンラインでもオフラインでも使える電子辞書


Google自動翻訳は便利だけどほしいものは英文からの単語帳なんだよなぁと思っていたのでちょうどいいから試しに作ってみました。本当に作ってみただけなのでとりあえず動作はしますという状態です。bin以下に放置しておいたんですがそのまま忘れ去りそうだったのであげてみました。macだとcarton で以下のように動作します。思い付きでパパッと作ったので直したいところてんこ盛りなんですがとりあえず放置の方向です。

cat data | carton exec perl -I lib scripts/cetfs.pl > index.html && open index.html


hiroyukim/p5-Cetfs · GitHub

ScalaMaturi2014に参加してきた

感想としては、Scala楽しそうですね。

良かった点

  • お値段がカンファレンスとしては高すぎず助かった。
  • 出てきたお弁当がそれなりにいい物で美味しかった
  • 長丁場なのでお菓子とか水が飲み放題なのは助かった。
  • 空調とか音声周りの対応が早かった。
  • 講演内容が技術寄りで初心者の自分としては為になった。

困ったなあと言う点

  • とにかく長帳場でお昼もガチのLTが流れるのでもうちょっと息つく暇が欲しかった。
  • ABの2会場あったのですがどちらも聞きたい感じのセッションが多くて辛かったです。

目立った単語

話しを聞いていてよく聞こえてきた単語がこのようになります。

話の内容を大別すると

使用しているライブラリ等

  • 並列分散ライブラリ:Akka
  • WebFramework: Play
  • ORM: Slick
  • Twirl: テンプレートエンジン

Akkaはとにかく技術系の話が出るたびにほぼ毎回でてきました。並列・分散のライブラリなのでその辺の需要が高かったんですね。PlayはメジャーなWebFrameworkなのでこちらも何回か見た気がします。ORMはSlickの話しもよくでましたが他にも何件かライブラリが例として上がっていました。

Scala導入理由

Scala導入理由も話しとして多かったのですが、静的型付け、保守性と並列性この当たりに集約されていました。あとは、Scalaおじさんが社内にいたという理由もみうけられました。

開発環境

開発環境はどうもEclipseScala開発環境があまり良くないらしく、IntelliJ IDEAのScala Pluginができが良いのでつかっているという話しをよくききました。ただ、環境を強制しているという話しはあんまり聞いてない気がします。

開発運用問題

これは、コンパイルが遅いと言う話とFullGCをどうやって防ぐかと言う話になっていました。コンパイル遅いは、速いマシンを買えば解決するという提案をしてサラッと流されるケースが多かったです。逆にFullGCに関しては一部の発表で詳しく発表されていました。

各種発表のメモ

「GitBucket: Perfect Github clone by Scala


ScalaとJGitで作られたオープンソースのプロジェクトGitBucketについての紹介でした。githubで開発されていて、現在3000越えのstarをもらっている。開発者もcontributorもそれなりにいるけどまだまだ理想の開発速度を出すには足りないから開発者が欲しい。依存しているテクノロジーとしては、Scalatra, Twirl, Slick, JGit, H2, Jetty, Apache MINAと言った物をしようしています。フロントエンド側は、JQuery, Bootstrap2, jsdifflib, google-code-pretty,AceEditor,DropZone,ZeroClipboardと言った物を使っているようです。
絶えずgithubの開発ブログやデザインなどをキャッチアップしているそうです。開発ではIntelliJ IDEAで開発していて,Gitter,ZenHubを利用しているそうです。最後に質問で、数百人レベルで使用されている事例はありますかという物がありまして、その規模になると現状の実装だと辛いという話しをされていました。

Xitrum Web Framework ライブコーディング

ハイパフォーマンスなScalaのWebFrameworkだそうです。採用事例は国外の方が多くてフランス・ロシア等でよく使われているみたいです。内部アーキテクチャでAnnnotation周りの説明があって、チャットアプリの作成デモをされていました。ScalaJavaアノテーションの違いとかAkkaとか初心者の自分には割とその辺が興味を引く話題でした。

ランチLT

ランチLTと書いてあったので、ライトな発表だろうと思って油断していたら
時間が短いだけでガチなLTが多かったのでびっくりしました。
スポンサー企業が発表していきました。全部では無いのですが、
技術的な話が多かった物をメモしていたので残しておきます。

LINE

LINE社はBackendの話しで「Asynchronous Tasks Monitoring Tool」、「Distributed Tracing System」それに絡んでFinagle, Slicck Saddle, Scrooge、Zipkinといったツール群の話しが聞けました。

http://slick.typesafe.com/
https://github.com/saddle/saddle
https://github.com/twitter/scrooge
https://github.com/twitter/zipkin

サイバーエージェント

サイバーエージェント社はDynalystというサービスでScalaをつかっている会社で配信システムのところで使っているとのことでした。
週一でFunctional Programming in Scalaという本で読書会をしているそうです。技術的にはakka,spray,redshiftなどが出てきました。

http://manning.com/bjarnason/
http://akka.io/
http://spray.io/
http://aws.amazon.com/jp/redshift/

DWANGO

DWANGO社はAndroid API Server, New niconico live、その他4つぐらいのサービスでScalaを投入されているそうです。基本的なArchitechtureはScala 2.1、Play, specs, Scala Test, Squerl, ScalalikeJDBC, Twirl, Scalate+ Mustache, Akkaを採用しているようです。

https://www.playframework.com/
https://code.google.com/p/specs/
http://www.scalatest.org/
http://squeryl.org/
http://slick.typesafe.com/
http://scalikejdbc.org/
https://github.com/playframework/twirl
http://scalate.fusesource.org/
http://akka.io/

CyberZ

CyberZ社はIntelliJで以下に効率的にScalaをコーディングするかという話しをされました
登場した目新しい話しとしては、「IntelliJ Live Template」の話しが聞けました。

http://www.jetbrains.com/idea/webhelp/live-templates.html

グリー初のScalaプロダクト!チャットサービス公開までの苦労と工夫

GreeChatのバックエンドをScalaでどう構築したのかという発表でした。ユーザー数が多く、リアルタイム性を要求され、少ないサーバー台数で動作させたい、5年以上はメンテしたいという要件を満たすものを探したときにScalaが浮上してきたそうです。採用の理由としては、平行プログラミングに強い、一プロセスで複数のコネクションを張れる、静的型付けでの保守性、チームにScalaおじさんがいた等があげられていました。ただ、全体数のなかでScalaおじさんの占める割合が低かったので自主学習とチーム学習を使いこなして乗り切ったそうです。実装としてはfinagleを使用したリクエストを受け付けるのに専念するAPIServer,DB等絡む処理でakkaを使用したEventBusServer,ストリーム関連を担当するStreamServerの
紹介していました。実際に開発する際に出てきた問題は、FullCG,Sharding, UIDとInnoDBとの相性の悪さという問題とその対処が語られました。
ID生成機を作成するという話しをされていたのですが、その成果であるコーンフレークという名前だった気がするのですがググっても見つけられませんでした。あとは、ドメイン駆動設計で作成しているという話しをされていました。

https://twitter.github.io/scala_school/finagle.html
http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88

国技とScala

ドワンゴにおけるScala開発事例で、相撲協会公式アプリのバックエンド開発の話でした。Scala選択の理由として、Type-Safeであること、OOP,Immutable, map/fold,traint,monadといったSkillを強制的に学べることなどを上げられていました。ライブラリの所管としては、ScalalikeJDBC,Twirl,Scaladi,ScalaTestなどを良い面、悪い面をあげてそれぞれ紹介されていました。あとは、得られた知見として ExceptionHandlinでTryを使う、Static Code AnalysisでSCoverageがいいらしい、デプロイ面の話し、Tuningの話しなどをされていました。

http://tlync.hateblo.jp/entry/2014/09/07/185817

macで使ってるmarkdown viewer

メモ書きをmarkdownで作成したり残したりすることが多いのだけど書いてる最中に綺麗に表示してくれると脳味噌的に助かるのでviewer欲しいなぁと思って探してたらharoopadというものを見つけて割といいです。

  1. 方言とか選べない
  2. いま自分が編集してる部分に集中できない

など細々気になるところはあるのですがテンポラリの記録を書き留める物としては十分に有効なので割と重宝してます。

何してるのか?

最近プライベートだと仕事とは別の言語使っていることが多い。それはまあ別のことがやりたかったり、読みたいプロダクトが別の言語だったり色んな理由があるんだけど、とてもしんどい。自分の好きな言語で好きなことしてるのになんでこんなにしんどいのか、おそらくは目的に到達するためにもっと早い自分を知っていてその比較から多分いらついていてそれで苦しんでいる。どうにかならないかなぁと考えていたら、そもそも僕は言語を通して何をしていたのかということふと思い至ってそれですごく楽になった。

わかりやすい発表とはどんなものなのか?

つい先日カンファレンスにいって何件か発表を見てきました。どもれ素晴らしい発表でしたが、私の不勉強と認識の問題が大きいかと思いますが、分かりやすいプレゼンとわかりづらいプレゼンがあってなんでだろうな?と考えてしまったのでちょっとメモしておきます。 分かりやすいプレゼンに絞って言うと、これから何を話すかという目的、概念、抽象化されたものが先に来ます。そこからトップダウンで下がっていって具象、詳細に至ります。これは日常の現象に対する認識と逆で、通常の場合現実に起きている具体的な現象を認識してそこから「何が起きているのか?」ということを考えたり、相談したりして結論を得ます。つまり、具象から入ると言うことは見ている人にワンテンポ考えさせてしまうということです。これはこれで使いようによってはいい発表になるときもありますが、難しいことを喋っている、発表している、若しくは分野が広域に広がっているときには逆に混乱してしまいます。なので、何を話すんだよというのを大きく先に提示した上で、つまり結論を先に言った上で詳細を解説するという流れが分かりやすいのではないのかなぁとぼんやり考えてたりしました。あとは、具体例にたいしてしつこく何が起きているのかを述べているのも分かりやすかった気がします。「具体例」-> 「突然のエラー」-> 「つらい」みたい感じかな。見てる人に旨い感じに脳味噌を使わせると言うことが重要じゃないかとも考えました。