GistBoxがCacherという新サービスになるらしい

Gistをメーラーのようなインターフェースで管理できるということで一時期話題になったGistBoxがCacherというサービスにリニューアルしたそうです。現在のGistBoxは年内で使えなくなってしまう模様。

www.cacher.io

GistBoxはその名の通り、Gistのフロントエンド的なサービスだったのですが、CacherはWebアプリに加えてWindowsMacLinux用のデスクトップアプリケーションが提供されており、有料のオプションも存在するなどかなり気合いを入れて作られている様子です。無料プランも存在するのですが、作成できるプライベートなスニペットの数が15個までなどの制限があります。

CacherはGistのフロントエンドというわけではないようですが(GistBoxからデータを移行しない限り、既存のGistはCacher上にはインポートされない)、Cacherで作成したスニペットはパブリックなものであればGistにも同期されます。プライベートなものはGistには反映されないようですが、パブリックなものを途中でプライベートに切り替えても以前のものはGistに残ってしまうので注意が必要です。

編集時は裏で定期的にGistへの同期が走っているようで、気づいたらGistの変更ログが大変なことになっていました。うっかり編集中の内容がコミットされていることもあり得るので、パブリックなスニペットについても注意が必要そうです。自分はMarkdownの使えるメモ置き場としてGistを使うことが多いのですが、そういう使い方にはあまり向いてないように見えます。

GitHub社はあまりGistをやる気はないようなのでこういう代替サービスが存在する余地はあるのかもしれませんが(実際自分も良いGistフロントエンドがあれば使いたい)、Cacherに関しては現状ちょっと取り扱いが難しい印象です。いっそのことGistへの連携などは行わない方が使いやすいのではという気がします。

Scala関西Summit 2017に参加しました

9月9日(土)大阪で開催されたScala関西Summit 2017に参加しました。GitBucketもブロンズスポンサーとしてサポートさせていただきました。

f:id:takezoe:20170910103720p:plain

また、個人でも朝一のセッションで「Non-Functional Programming in Scala」というお話しをさせていただきました。日帰り参加だったので朝一の新幹線で大阪に向かったのですがなんとか遅刻せずに到着できました。よかった…。*1

www.slideshare.net

もちろんScalaを使う上でこういったプログラミングスタイルを積極的に採用すべきと思っているわけではないのですが、個人的にもっとScalaを使う人が増えて欲しいということでこのようなお話しをさせていただきました。実際にPredictionIOのコードを見ていても、varやミュータブルなコレクションが使われている箇所で「このチームではこのコードのほうが皆が理解しやすいのだろう」と感じる場面があり、そういう部分は敢えて残したりすることもあります。

様々なスタイルを選択できるのもScalaの特徴の1つだと思います。Scalaを使うから関数型プログラミングをしなくてはならないとうのではなく、チームやプロジェクトの目的や状況、将来の見通しなどを踏まえて最適なプログラミングスタイルを採用できるとよいのではないかと思います。また、これからScalaを始めるという方も、必要以上に壁を感じず気軽にScalaに触れてみていただきたいです。

Scala関西Summitは昨年に続いての参加となりますが、今年はCFPの応募が非常に多かったそうで昨年は2トラックだったところ3トラックでの開催でした。スタッフをされている関西Scala勢の方々にも応募を促していたそうです。東京ではWeb企業を中心にScalaを採用する企業が増えてきましたが、関西でももっと事例が増えるといいなと思いますし、こういったイベントがそのきっかけになるといいなと思います。*2

ところでエフコードさんがブースで配布されていた「nullけし」はよかったですねw がくぞ先生のジョインとあわせて非常にキャッチーなアイテムでしたw *3

スタッフの皆様、参加された皆様、お疲れ様でした。来年も楽しみにしてます!!

*1:朝起きれるか不安だったので前日早く寝たところ深夜2:30に起きてしまい、そのまま朝まで起きていました…。

*2:今回はトピックとしてはAkka Streamsの話が多かったかなと思います。

*3:ツイッターで「欲しい」とつぶやいたところ、誠に恐縮ながらがくぞ先生直々にいただくことができましたw ありがとうございました。

クローリングハックという本を書きました

同僚5名でここ1年くらい作業していた「クローリングハック あらゆるWebサイトをクロールするための実践テクニック」という書籍が翔泳社さんから発売になります。

クローリングハック あらゆるWebサイトをクロールするための実践テクニック

クローリングハック あらゆるWebサイトをクロールするための実践テクニック

「ハック」と言っても別に怪しいことが書いてあるわけではありませんw

クローラーの運用を通して世の中には一体どうやったらそうなるのか謎な挙動を示すサイトを見てきたわけですが、この書籍はクローラーを作る側にしろ、Webサイトを製作する側にしろ、理解しておくべき基本的なWeb技術について解説したものです。

HTTPメソッドをちゃんと使い分けよう、ヘッダやステータスをちゃんと返そう、セマンティックなHTMLを書こう、そしてクローラーはそれらを正しくハンドリングしよう、そのような基本的なことから、前述のような謎な挙動を示すサイトに対してはどのような対処をすれば大体うまくいくかということなどが書かれています。

最近はビッグデータ機械学習といった技術の発達もあり、ショットで動かす簡易的なものからサービス提供に不可欠なデータ収集のために運用される大規模なものまで、様々なシーンでクローリング、スクレイピングが用いられるケースが増えてきているように感じますが、この本には皆がルールを守って平和なインターネッツになるといいなという思いが込められています。

なお、翔泳社さんの販促サイトから予約購入していただくとcurlのよく使うオプションを12ページかけて解説した「curlの極意」という誰得な特典PDFがついてきますw

www.shoeisha.co.jp

今回の書籍は300ページほどですし5人で分担したので分量的にはそうでもない(はず)なのですが、いろいろ悩ましい事柄が多く、完成までだいぶ時間がかかってしまいました。なんとか形にすることができたのでひとまず肩の荷が降りたというところですが、歳のせいか書籍の作業が年々辛くなってきている実感があります。しばらくはのんびり休みたいです…。

ソフトウェアデザイン 2017年 09 月号

同僚のタナカジノ先生Software Design 2017年09月号でtmux特集を執筆していました。私にも見本誌を送っていただいたのですが、最近ちょうど業務でも開発に復帰してターミナルでの作業も増えてきたのでこの特集を読んでリハビリしようと思います。

ちなみにギークロイドさんでのタナカジノ先生のターミナル部連載を見て執筆をご依頼いただいたとのこと。世の中何がきっかけになるかわからないものですね…。

mynavi-agent.jp

Scala関西Summit 2017で「Non-Functional Programming in Scala」という話をします

f:id:takezoe:20170625015539p:plain

今週土曜日に大阪で開催されるScala関西Summit 2017、GitBucketがスポンサーをさせていただいているのですが、スピーカーとしても「Non-Functional Programming in Scala」というタイトルでお話しさせていただきます。

前職から足かけ8年ほどScalaに取り組んできましたが、業務でもScalaを使える環境がそれなりに整ってきた反面「やはりScalaは難しい」という声を聞いたり、チーム内で「どこまで関数型プログラミングに寄せるべきか?」ということを考えるケースが増えてきました。また、OSS開発においても同様の課題を感じるケースがあり、今後のScalaのさらなる普及を考えた時、避けて通れない問題ではないかと考えています。

そんなわけで、今回は実際に私の感じた課題感を共有させていただいた上で、とある状況でScalaをどう使っていくべきか、関数型プログラミングを意識しなくてもScalaの良さを活かせるプログラミングスタイルの一例について自分なりにまとめてみました。今後のScalaの普及のために(コンパイル速度の改善以外に)何が必要なのか、是非一緒に考えてみていただければと思います。

まだ参加登録は可能なようなので、都合のつく方は是非ご参加いただければと思います!

summit.scala-kansai.org

日帰りで参加することにしたのですが、朝一のセッションなのでだいぶ早起きしないといけないのですが、果たして新幹線に間に合うよう起きられるだろうか…。

GitBucket 4.16.0をリリースしました

Scalaで実装されたオープンソースのGitサーバ、GitBucket 4.16.0をリリースしました。

https://github.com/takezoe/gitbucket/releases/tag/4.16.0

AdminLTEのカラースキンを選択可能に

GitBucketがUIテーマとして使用している使用しているAdminLTEはカラースキンで色を変えることができるのですが、GitBucket 4.16.0ではこのカラースキンを管理画面で選択できるようになりました。

f:id:takezoe:20170901114815p:plain

以下はgreenのスキンを選択した場合の表示例です。

f:id:takezoe:20170901114822p:plain

予期しないエラーの処理を改善

予期しないエラーはエラーログとして記録するようにし、管理者の場合はブラウザ上でもスタックトレースが表示されるようになりました。

f:id:takezoe:20170901114843p:plain

f:id:takezoe:20170901114859p:plain

コミット一覧にコミットのステータスを表示

Jenkinsなどと連携している場合、コミットの一覧画面に各コミットのステータスが表示されるようになりました。

f:id:takezoe:20170901114910p:plain

今回のバージョンではこの他にも様々な改善やバグフィックスを行っています。詳細についてはIssueの一覧をご覧ください。

最強のGitフロントエンドはForkかもしれない

f:id:takezoe:20170831094824p:plain

昨日Macで使えるGitフロントエンドの紹介を書いたところ、友人のPishenさんからForkというツールもあることを教えていただきました。

Webサイトはこちら。現時点ではMac版(動作にはMacOS X 10.11以降が必要)のみですが、Windows版も提供予定のようです。

git-fork.com

リリースノートを見ると昨年から開発されていたようですが、完全にノーマークだったので早速試してみました。

  • 1ウィンドウで複数リポジトリをタブ切り替えで操作できる
  • ブランチの状況も把握しやすい履歴ビュー(見た目的にはSourceTreeに近い)
  • コミット時点のファイルツリーを確認できる
  • 動作は軽快(ただし安定度についてはまだ不明)
  • ターミナルから起動するためのコマンドが用意されている
  • ブランチを複数選択してまとめて削除できる
  • (行単位ではなく)文字単位の差分表示、画像の差分表示も可能
  • 対話型のリベース機能が実装されている

などなど、様々なGitフロントエンドの良いとこ取りをしている感じです。これは探し求めていたものかもしれない…。

対話型のリベースはこんな感じ。このダイアログでコミットを編集してRebaseを押すと反映されます。

f:id:takezoe:20170831095352p:plain

差分はサイドバイサイドの表示も可能です。文字単位で差分表示されていることがわかります。

f:id:takezoe:20170831095407p:plain

試していませんが、GitHubの通知を表示してくれる機能などもあるようです。

安定度や細かい部分はしばらく使ってみないとわかりませんが、他のツールと比べて機能的に不足を感じるのはGitKrakenのGitHub連携機能(プルリクエスト元のリポジトリをリモートリポジトリに追加したり、ブランチを一発でチェックアウトしたりできる)くらいでしょうか。

ForkはOSSではありませんが、GitHubのIssuesを使用してバグレポートやフィーチャーリクエストを受け付けているようなので、気になる点や要望などが出てきたらこちらに投げていこうと思います。

github.com

将来的には有料化するのかもしれませんが、いまのところはベータ版ということで無料で利用できますので、Macで良いGitフロントエンドをお探しの方は是非一度試してみてください!