tag:blogger.com,1999:blog-89577996843300697592024-03-13T12:31:32.866+09:00ukai's blognotes by <a href="http://ukai.jp/">Fumitoshi Ukai</a> - <small>Hacking free software/open source software and
<a href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food">Dogfooding</a>
</small>Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.comBlogger201125tag:blogger.com,1999:blog-8957799684330069759.post-37919493622679501672017-07-20T12:55:00.000+09:002017-07-20T12:55:10.154+09:00KMC 40th Anniversary Conference<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaYuEue1H1M1GVh5Mq5QTr1Z9d_OwYSVzCUQXzrxYaRhLICy5JwD8eV8DrWkjgCDeOCdyYd7sd3VErmUMyoImfi8HsfYmrksEgz7a4W_TxCnpFhsWnvnM9eUYCEBefAchGfpnL-ptgcE/s1600/IMG_cl1bok.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1066" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaYuEue1H1M1GVh5Mq5QTr1Z9d_OwYSVzCUQXzrxYaRhLICy5JwD8eV8DrWkjgCDeOCdyYd7sd3VErmUMyoImfi8HsfYmrksEgz7a4W_TxCnpFhsWnvnM9eUYCEBefAchGfpnL-ptgcE/s320/IMG_cl1bok.jpg" width="320" /></a></div>
開催からだいぶたちますが、6月17日に京都にいって<a href="http://conf.kmc.gr.jp/">KMC 40th Anniversary Conference</a>に参加してきました。
<br />
1977年に設立されて今年でちょうど40周年ということで、conferenceを開いて盛大にお祝いです。
私は昭和最後の部員で13代目になります。x68kとかCGAが流行っていた頃になります。
(cf: <a href="https://www.kmc.gr.jp/guidance/history.html">KMCの歴史</a>)
KMCでは大学院時代に386BSDとかLinuxをpc98に移植したりしたのが大プロジェクトでした。
<br />
40周年記念イベントでは、Linux/98のこととか、オープンソース活動のこととかキャリア歴とかを話してほしいということだったので、
386BSD(98), Linux/98から、Debianの活動とかhpからGoogleへの転職とかをざっと話しました。
<br />
KMC40周年を振り返って、当時の話とかいろいろおもしろかったです。いろんなプロジェクトの興亡や文化の継承があったんですねえ。
最近もますます活発に活躍しているみたいでなによりです。
<br />
懇親会では、貴重な若木民喜先生の部内誌マンガとかも見ることができました。
<br />
<ul>
<li><a href="http://kmc.hatenablog.jp/entry/2017/06/29/131656">KMCブログ: KMC 40th Anniversary Conferenceを開催しました</a>
</li>
<li><a href="https://togetter.com/li/1121328">KMC 40th Anniversary Conference 関連Tweetまとめ #KMC40th</a>
</li>
</ul>
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0Japan, 〒606-8342 Kyoto Prefecture, Kyoto, Sakyo Ward, Okazaki Saishojicho, 1335.0143818 135.7806700999999535.0078793 135.77058509999995 35.020884300000006 135.79075509999996tag:blogger.com,1999:blog-8957799684330069759.post-65164811921293356802016-07-11T17:34:00.000+09:002017-07-20T11:45:20.019+09:00『プログラミング言語Go』刊行記念イベント「Goの設計思想を読み解く~実際の開発に活かすために」7月6日にジュンク堂にて行われた<a href="http://pub.maruzen.co.jp/book_magazine/news_event/2016/130025event.html">『プログラミング言語Go』刊行記念イベント「Goの設計思想を読み解く~実際の開発に活かすために」</a>で
<a href="https://www.amazon.co.jp/dp/4621300253">プログラミング言語Go</a>の訳者である<a href="http://yshibata.blog.so-net.ne.jp/">柴田さん</a>と対談してきました。<p>
<a href="https://twitter.com/maruzenpub/status/750886584443023361"><img width=580 src="https://pbs.twimg.com/media/Cmuuh8-VUAA2lOW.jpg:small"></a>
トークセッションということで特にプレゼン資料的なものはないのですが、sliceの比較や、goroutine IDをあえて提供しないあたりにGoの設計思想であるSimplicity(簡潔性)が色濃くでているとかいう話をしました。
実際の開発に活かすには、Goでは具象型(concrete type)でAPIをきちんと考えて設計して、必要なところでinterface型を提供するようにしたほうがいいということを説明しました。特にJavaとかを書いている人とかは
まずinterfaceを定義しようとすることが多いのでそれはやめたほうがいいと思います。interface型を先に定義するのはpremature abstraction(早すぎる抽象化)に陥りやすいです。<p>
Goでは言語がシンプルな分、プログラマがしっかり設計し、きちんとコードを書くことが求められます。例えばGoプログラマは複雑な型であってもゼロ値が有効な値になるように設計する努力する必要があります。
また、エラー処理に関しても、Goではしっかり設計することが求められます。<p>
できるだけシンプルな具象型をinterfaceを介してうまく組み上げていくことで、複雑な処理をするプログラムを開発していくかんじになります。
最初はどう組み合わせばいいかわかりにくいですが、うまく組み合わせることができるようになってくると、読みやすいGoのコードになっていくと思います。<p>
<a href="https://twitter.com/maruzenpub/status/750887110236790784"><img width=580 src="https://pbs.twimg.com/media/CmuvZVaUsAEosFp.jpg:small"></a>
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com02 Chome-15 Minamiikebukuro, Toshima-ku, Tōkyō-to 171-0022, Japan35.726874142135117 139.7122925519943235.726672642135114 139.71197755199432 35.727075642135119 139.71260755199432tag:blogger.com,1999:blog-8957799684330069759.post-72853176943615291242016-03-17T23:06:00.001+09:002016-03-17T23:06:38.576+09:00Go 1.6 Release Party @ Tokyoこれももう一ヶ月前になりますが、2月17日にはてな東京オフィスで<a href="http://gocon.connpass.com/event/26572/">Go 1.6 Release Party</a>があったので
参加してきました。<a href="https://github.com/golang/go/wiki/Go-1.6-release-party">Go 1.6 release party</a>の東京イベント(by GoCon Tokyo)でした。<br />
<a href="http://gocon.connpass.com/event/26572/"><img src="https://connpass-tokyo.s3.amazonaws.com/thumbs/f3/c7/f3c7288c8d9eec9486f57b204f456745.png" /></a><br />
<a href="https://www.oreilly.co.jp/books/9784873117522/">Go言語によるWebアプリケーション開発</a>が発売されたあとくらいに「Goらしいコードの書き方とかでなにか発表を」と
依頼されたので<a href="https://ukai-go-talks.appspot.com/2016/go1.6.slide#1">Goらしいコードの書き方(ミニ)</a>をしゃべりました。時間は15分くらいだったので内容を
interfaceとchanの使い方にしぼりました。このあたりはGo言語がわかりはじめたころに使いすぎてしまう人が多い気がします。
<a href="http://talks.golang.org/2012/concurrency.slide#54">Rob Pike氏がいっている</a>ように
「Always use the right tool for the job」するよう気をつけましょう。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0はてな東京オフィス35.661961477624239 139.7166598042297235.661154977624236 139.71539930422972 35.662767977624242 139.71792030422972tag:blogger.com,1999:blog-8957799684330069759.post-37835520978037078452016-03-17T22:51:00.000+09:002016-03-17T22:51:07.886+09:00Go言語によるWebアプリケーション開発既に発売されてもう2ヶ月近くたってしまいましたが、<a href="https://www.oreilly.co.jp/books/9784873117522/">「Go言語によるWebアプリケーション開発」</a>の監訳をしました。
<a href="https://www.packtpub.com/application-development/go-programming-blueprints">`Go Programming Blueprints`</a>の日本語訳です。<br />
<a href="https://www.oreilly.co.jp/books/9784873117522/"><img src="https://www.oreilly.co.jp/books/images/picture978-4-87311-752-2.gif" /></a> <br />
タイトルに「Webアプリケーション開発」とありますが、Webアプリケーションだけではなくてコマンドラインツールの開発とかも紹介しています。<br />
Go言語仕様とかの説明はあまりなくて、Goを使ってアプリケーションを書くのはこのようにするという例を紹介した本なので、
<a href="http://tour.golang.org/">tour.golang.org</a>をしたり、<a href="https://golang.org/doc/code.html">How to write go code</a>あたりを
読んだりしたあとに、手にとってみるといいかと思います。<br />
最初見た時は題材の選択とかがよさそうに思ったのですが、監訳でちゃんと読んでみると原書の時点からコードとか説明で気になるところがたくさんあったので、注をいれたりだいぶ手直ししたりしました。
付録もなにか書いてくださいということだったので何を書こうか最初迷ったのですが、Goらしいコード(idiomatic go)を説明したほうがよさそうな気がしたので
本文中のコードをreadability reviewとしてみて書き直したらこういうふうにするなぁという感じで書きました。<br />
ちなみに元のコードは<a href="https://github.com/matryer/goblueprints">github.com/matryer/goblueprints</a>、
日本語訳版は<a href="https://github.com/oreilly-japan/go-programming-blueprints">github.com/oreillly-japan/go-programming-blueprints</a>にあります。<br />
最初は紙の本だけでしたが、Ebookもでているので電子版が欲しい人もどうぞ。<br />
そういえばamazonでは発売当初在庫がすぐなくなって中古が高値で売られてましたが、在庫はもうあるのに<a href="http://www.amazon.co.jp/gp/offer-listing/4873117526/ref=tmm_other_meta_binding_used_olp_sr?ie=UTF8&condition=used&qid=&sr=">中古がまだ高いとかいう不思議な状況(2016-03-17の時点で中古ほぼ新品6912円とかのがある)</a>になってますね。
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-84789666129497144332014-12-02T20:48:00.000+09:002014-12-02T21:58:51.366+09:00Go Conference 2014 autumn11月30日は<a href="https://github.com/GoCon/GoCon/blob/master/2014autumn.rst">Go Conference 2014 autumn</a>に参加してきました。<br>
<a href="https://twitter.com/ymotongpoo">@yamotongpoo</a>さんに11月はじめくらいに、「今度はRob Pike氏をよびますよ」と聞いて
すごいと思っていたら、すぐあとくらいに<a href="https://twitter.com/tenntenn">@tenntenn</a>さんから、「キーノートを2本立てにして、片方を日本の方にということで
キーノートおねがいします」という依頼がきて、Rob Pike氏と並んでキーノートなんかできるかなとややたじろぎましたが、こういうのは断るよりやっておいたほうがいい経験に
なるだろうと思って具体的な内容を考えるのは後回しにして引き受けました。<a href="#gocon-footnote-1">*1</a><br>
「日本にフォーカスした話や日本のユーザがこれからGoをやっていこう!となるような内容がよいかなと思います」とのことだったので、どんな内容にするかしばらく考えていたのですが、
ふと<a href="http://blogger.ukai.org/">blog</a>を見直すとちょうど一年位前に<a href="http://blogger.ukai.org/2013/12/code-readability.html">Go Readability Approverになっていた</a>ので
GoのReadabilityについて話すことにしました。Rob Pike氏はタイミング的にGo 1.4の話あたりをするんじゃないかと思っていたんです。<br>
1年の間にレビューしたCLを見なおして、どういうコードにどういうコメントつけたのかを集めて整理しなおすだけで結構大変でした。実際多かったのは「need package comment (or doc comment)」
「error string should not be capitalized」あたりです。<br>
CL見直して集めるのもかなり時間がかかりましたが、プレゼンで紹介しやすい短めのコードでポイントを説明できそうなやつを選ぶのもまたかなり大変でした。その後、見なおしてみたら多すぎたので講演時間におさまるようにだいぶ削りました。
実際のCLそのままはオープンソースでもないのでさすがによくなさそうだろうと思ったので、プレゼンで紹介したコードは実際のコードを元にした改変バージョンにしてあります。<br>
タイトルは「Go Readability」にしていたのですが、当日朝会場に向かう途中にふと「郷に入っては郷に従え」がうかんできたのでした。クロージングのメッセージにしようかなと最初思いましたが、結局タイトルにすることにしました。<br>
Rob Pike氏は予想とちがって「Simplicity is Complicated」でReadabilityとかが超大事みたいな話になっていたので、Go Readabilityの話ができたのはよかったと思います。<br>
<a href="http://ukai-go-talks.appspot.com/2014/gocon.slide#1"><img src="http://ukai-go-talks.appspot.com/2014/gocon/gopher-ok-no.png" width=90% /><br>Goに入ってはGoに従え</a><br>
-- <i>Gopher</i> by <a href="http://www.reneefrench.com">Renée French</a>, and <a href="https://github.com/tenntenn/gopher-stickers/">tenntenn</a><br>
<br>
Goでは<a href="https://code.google.com/p/go-wiki/wiki/CodeReviewComments#Variable_Names">変数名が短くてすむ場合は短いほうがいい</a>とされていて、これが他の言語から来た人の反発を招きやすいようですね。
でも数学で数式とか変数名はほとんど一文字なわけで、コンテキストがちゃんとわかっているのなら短くてもわかりやすいです。むしろ長いと読みにくくなりそう。
<blockquote><code>-coefficentOfLinearTeam ± sqrt(coefficientOfLinearTerm*coefficientOfLinearTerm - 4*coefficientOfSquareTerm*constantTerm) / (2*coefficientOfSquareTerm)</code></blockquote> とか。<br>
<br>
今回のGoConの発表はGoをproductionに使ってみた系の話が多くてだいぶ普及してきたなぁと感じました。<br>
<br>
懇親会では<a href="https://twitter.com/jxck_">@jxck_</a>さんのコードをレビューしてたんですが、<a href="https://twitter.com/Jxck_/status/539019400435601408">Rob Pike先生から、よりエレガントなコードの手ほどきをしてもらっていました</a>。いいコードを書くにはまだまだ修行が必要です。<br>
<br>
後日、officeでRob Pike氏に「よいプレゼンだったから英語にも訳してよ」とリクエストされたので<a href="http://ukai-go-talks.appspot.com/2014/gocon-en.slide#1">英語版: When in Go, do as Gophers do</a>も作りました。
Rob Pike氏に英語のreviewもしてもらってあります。
<blockquote>We talk about readability all the time, but this is the first public talk I've seen explicitly on the topic and it explains things well. The examples are really good.</blockquote>
とのお言葉をいただきました!<br>
<br>
<br>
<a name="gocon-footnote-1">*1</a><a href="http://www.amazon.co.jp/dp/4274067939">情熱プログラマ</a>にも「39: 業界で名前を売ろう Let Your Voice Be Heard」に
”名前を売り出すときに一番大事なことは、時期尚早かなと思うくらいでスタートすることだ。たいていの人は自分を売り込むときに消極的になる。君は教えるべきものを<em>持っている</em>。もう準備万端だと感じることは
決してない。この瞬間に始めてもいいくらいだ。"と書かれていたのを実践してみました。<br>
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-91824990220108786852014-11-25T23:04:00.000+09:002014-12-02T20:48:02.923+09:00角川インターネット講座 (2) ネットを支えるオープンソース ソフトウェアの進化 <a href="http://www.amazon.co.jp/dp/4046538821">角川インターネット講座 (2) ネットを支えるオープンソース ソフトウェアの進化</a>に「企業とオープンソース」を寄稿しました。<br>
企業(Hewlett-Packard Labs, Google)の研究者/Software Engineerでありつつ、free software/open source software関係でいろいろやっていた経験からみた"オープンソース ソフトウエア"の進化について解説してみました。
開発者じゃない人や経営者から見た"オープンソース"とは違うところも多いかと思います。<br>
寄稿して振り返ってみると、最近は<a href="http://github.com/">github</a>などでカジュアルにソースコードをやりとりするようになり、
<a href="http://www.fsj.org/">Free Software Foundation</a>の提唱するfree softwareも
一時期にくらべるとだいぶ下火になってきてるような気がします。
ことさらに"free"を主張しなくても自由にプログラミングできるようになってきているのならいいのですが、プログラマじゃない層を守るという観点で
自由を許さない環境もなくならならないようです。
新しいことを試してみたい人の自由を確保するのと、リテラシーが十分じゃない人の安全を確保するのとのせめぎあいが続いていくのでしょうか。<br>
"自由を守らないといけない”を主張する人の影響力が減ってきてないかなぁと気になっています。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-48879830257496040322013-12-04T22:57:00.000+09:002013-12-04T22:57:43.041+09:00Code Readability<a href="http://blog.golang.org/go12">Go 1.2が12月1日にリリース</a>されました。
そして、同時くらいに社内のGo readability approverの一員になったので、ちょっとCode Readabilityについて書いてみようと思います。<p>
Google社内では、主要なプログラミング言語について Readability というのが存在します。
「C++のReadabilityを持っている」とは、C++のコードを<a href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml">スタイルガイド</a>に従ったコードを読み書きできる能力があることを意味しています。社内のコードベースと一貫したコードで開発できるということです。Readabilityをもっていない人は、Readabilityを持っている人にcode reviewしてLGTM/Approvalを貰わないとコードをrepositoryにcommit/submitすることができません。<p>
readability approverは、ある開発者がその言語のReadabilityを持っているかどうかを判定する/ある開発者がその言語のReadabilityを持つよう教育する役です。<p>
スタイルガイドは言語ごとに、それぞれの言語の特性にあうように決められています。これらのスタイルは、言語のベストプラクティスや、誤りがちなコーディングを避ける方法を示しています。最初は「ルールがたくさんあって、そんなのいちいち気にしてコードなんか書けない」と思うかもしれませんが、慣れてくるとスタイルガイドにしたがっていないコードに違和感を感じるようになってきます。そしてそういうところにバグが潜んでいることが多いような気がします。<p>
個人的な印象としては…<p>
<a href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml">C++の場合</a>は、かなりGoogle独特のルールがあります。が、code reviewする時に、このスタイルガイドに沿ったコードになっていれば、reviewする範囲をchangeで変更した周辺を見ればすむことがすむ場合がけっこうあるようなかんじです。とはいっても言語の罠が結構あるので、ちゃんとreviewするのはなかなかしんどいです。ツールとしては
<a href="http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py">cpplint</a>がありますし、最近は
<a href="http://clang.llvm.org/docs/ClangFormat.html">clang-format</a>なども使われだしてきているようですね。
C++は言語として自由度が高すぎるというか、これといったスタイル標準がないせいで、例えば<a href="http://www.chromium.org/developers/coding-style">Chromium</a>と<a href="http://www.webkit.org/coding/coding-style.html">WebKit</a>ではだいぶ印象が違って、別の言語というかんじもします。<p>
<a href="http://google-styleguide.googlecode.com/svn/trunk/pyguide.html">Pythonの場合</a>は、基本的には<a href="http://www.python.org/dev/peps/pep-0008/">Python標準</a>と似たかんじだったと思います。ツールとしては<a href="http://www.pylint.org/">pylint</a>があります。
Pythonとかはdocstringをきちんと書いておかないとコードが増えてきたときに厳しいですね。しかもそれはしょせんコメントなので、実際のコードと一致してなかったりするとバグの温床になってしまいます。
code reviewする時も、コードの断片からコードが正しいかどうか見分けるのは困難です。文字列にしてもstrかunicodeなのか気をつけてないと、"<code>Failure: 'ascii' codec can't encode character u'\xNN' in position N: ordinal not in range(128).</code>"みたいなエラーがカジュアルにでてしまうし。Pythonはコードを書きやすいのかもしれないけど、正しくないコードも簡単に書けてしまう/コードが正しいか間違っているか判断するのが難しいという印象です。ちゃんとやるにはテストも大量に書いておかないとだんだん不安になる言語です。<p>
Go言語の場合、基本的なスタイルは<a href="http://golang.org/cmd/gofmt/">gofmt</a>でそろえてくれます。コンパイラも<a href="http://golang.org/doc/faq#unused_variables_and_imports">warningはださず、なおすべき点があればコンパイラがエラー</a>をはきます。
他にも<a href="http://godoc.org/code.google.com/p/go.tools/cmd/vet">govet</a>や<a href="https://github.com/golang/lint">golint</a>とかもあってよくある問題はコンピュータがみつけてくれます。
Go言語のReadabilityは<a href="http://golang.org/doc/effective_go.html">idiom</a>をちゃんと使っているかどうかという点になってきます。Go言語にも言語の罠はないとはいいませんが、<a href="http://golang.org/ref/spec">言語仕様</a>もシンプルなので、コードはだいたい見たとおりになっているのもcode reviewしやすいです。<p>
というかんじで、最近は「非常に短いほぼ使い捨てなスクリプト」ならshellとかPythonで書くこともありますが、main以外の関数とかclassが欲しくなってきたら、もうGo言語で書いたほうがいいと思いますね。簡単なものなら<a href="http://golang.org/cmd/go/#hdr-Compile_and_run_Go_program">go run hoge.goでそのまま実行</a>できますし。また既にある程度書かれているperformance criticalなC++プログラムとかは、そのままC++で変更・追加していっていますが、一から開発するんならGo言語で書くほうが楽しいですよ。
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-5527453412410424202013-07-15T16:58:00.001+09:002013-07-15T16:58:38.557+09:00FSIJ月例会: GnuPG<a href="http://www.fsij.org/">FSIJ</a>理事会、総会の後、<a href="http://www.fsij.org/monthly-meetings/2013/July">FSIJ月例会</a>に参加してきました。
<a href="http://www.gniibe.org/">gniibeさん</a>によるGnuPGの"信頼"についての話でした。
<p>そもそもは、<a href="http://gum.debian.or.jp/2013/key_signing_party.html">大統一Debian勉強会: PGP/GPGキーサインパーティ</a>の説明が話を盛りすぎではないかということでした。
そこではこのように書かれています
<blockquote>
フリーソフトウェアの世界では、ネット上で自分の存在を保証してもらうために、PGP/GPG を使ったWeb of Trust を構築しています。フリーソフトウェアの開発に参加している方、参加を考えている方はこれを機会に参加してみてはいかがでしょうか。<br />
また、開発者以外の方にとっても、ソフトウェアの配布アーカイブに PGP/GPG 署名やハッシュが添付されていることもあり、 ソフトウェアの入手時の正当性確認の意味でも重要です。<br />
Debian、Ubuntu、CentOSなどでは、パッケージリポジトリの正当性を確認するために、 PGP/GPG を使ったシステムが採用されています。
この信頼性は Web of Trust に基づいているため、Web of Trust の中で各ディストリビューションのリポジトリ管理者とつながることが重要です。
</blockquote>
これを読むと「PGP/GPGのWeb of Trustに基づいてパッケージリポジトリの正当性を確認している」ように読めますよね。
そしてその「Web of Trustを強くするためにキーサインしましょう」という呼びかけになっています。<br />
<p>しかし、実際のところPGP/GPGのWeb of Trustに基づいておこなわれる操作はほとんどないのではないかという話です。
<p>Debianの場合は次のようになっているはずです。
<p>まず、apt-getでパッケージを取得する時にGPGの署名の確認をおこなっています。これは/etc/apt/trusted.gpgの鍵でReleaseファイルが署名されているかどうかを確認しています。基本的に/etc/apt/trusted.gpgの鍵が信頼できるものとしています。この鍵への署名はあまり重要ではありません。かなり気にしている人ならばこの鍵が自分の知っている人が署名しているか、もしくはディストリビューションの開発者が署名しているかというのを気にするかもしれません。その場合は/etc/apt/trusted.gpgから鍵をはずすなどの作業をする必要があるでしょう(自分のkeyringからのチェーンをaptがみてくれたりはしない)
<p>その前にリポジトリにいれる時に、開発者は*.changes,*.dscに署名してアップロードします。アップロードされたほうがそれらのファイルがdebian-keyringの中にある鍵で署名されているかどうかを確認しています。debian-keyringにはDebianの開発者の鍵しか入っていません。
ここでもその鍵に署名があるかどうかは関係ありません。
<p>鍵への署名が重要なのは、debian-keyringにいれてもらう時(Debian開発者になる時)です。この時、Debian開発者候補者は、既存のDebian開発者から署名してもらったGPG鍵をもっている必要があります。そのGPG鍵が確かにその人の使っている鍵であるということを保証するためです。
この署名をもらうためにキーサインパーティは、多数の開発者と出会えるよい機会であるといえます。
なお、debian-keyringにいれてもらうには、<a href="http://www.debian.org/devel/join/newmaint">ほかにもいろいろと条件</a>があります(キーサインは身分証明のステップです)。
<p>そのほかにキーサインが重要なのは、その人と直接のやりとりがある場合でしょう。
gitではcommitやtagに署名する機能があるので、gitでpush/pullする時に相手を検証するのに使ったりもします。
<p>いいかたをかえると、リポジトリの信頼性という意味ではキーサインパーティはあまり意味がありません。/etc/apt/trusted.gpgを信頼するか、debian-keyringを信頼するかにかかっています。この場合信頼するかどうかは署名するかどうかはあまり関係ありません。署名しなくても/etc/apt/trusted.gpgは信頼することになっているからです。
<p>GPGでWeb of trustをやるには、キーサインだけじゃなくてtrust dbをちゃんとやらないといけないんですが、ちゃんとやるのはたいへんですね。
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0日本, 東京都文京区目白台2丁目12 体育館35.7182262 139.720539135.7178232 139.7199086 35.718629199999995 139.7211696tag:blogger.com,1999:blog-8957799684330069759.post-39782972137859344092013-04-19T22:13:00.001+09:002013-04-19T22:13:50.553+09:00BloggerでGoogle+のコメント<a href="http://googlejapan.blogspot.jp/2013/04/blogger-google.html">Blogger で Google+ のコメントが見られるようになりました</a>ということなので、さっそく有効にしてみた。
Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-47621495004470081182013-04-13T23:17:00.000+09:002013-04-16T07:48:08.824+09:00Go Conference 2013 Spring<a href="https://github.com/GoCon/GoCon/blob/master/2013spring.rst">Go Conference 2013 Spring</a>に参加してきました。<p>
ハンズオンの時間は、放置していた<a href="https://code.google.com/p/go/source/browse/?repo=net#hg%2Fwebsocket">code.google.com/p/go.net/websocket</a>をいじってました。<p>
プレゼンは「<a href="https://plus.google.com/u/0/114892104481751903211/posts/AutcCQcr1pW">「なぜGoなのか」というところを話してほしい</a>」ということだったので、言語機能の説明よりもどのあたりがいいかを説明してみることにしました。<p>
「最初はキモッって思うかもしれないけど、そのうちかわいく見えてきますよ」というかんじが伝えられたでしょうか。
なんでGoをつかうとうれしいかは、大規模なチームの中で大規模なコードをいじらないとなかなかピンとこないかもしれません。<p>
印象としてはこんなかんじかなー
<dl>
<dt>C
<dd>知っている技術者は多い。OOをやるにはめんどい(glibみたいになっていく?)。大規模になってくるとclassとかnamespaceとかないとつらいかんじ
<dt>C++
<dd>知っている技術者はそこそこ多い。大規模なプロダクトができる(googleのサーバーとかChromeとか)がビルド時間がとてつもなく長くなっていって開発するのがつらい。C++11以前だと(autoとかないと)書くのもめんどいときが多い。
<dt>Java
<dd>知っている技術者はそこそこ多い。(IDEとかの助けがないと)書くのがめんどい。大規模になってくるとIDEではつらい。JavaにかぎらずJVMベースの言語はJVMのチューニングとかがたいへんぽい。
<dt>Python
<dd>知っている技術者はそこそこ多い。ちょっとしたプログラムだと簡単。規模がおおきくなってくると詳細をつかむのがむずかしくなってくる(この変数はどういう値(どのclassのobject)になりうるのか? 別のclassのobjectをわたしてもいいのか? とか)。そのうち滅多に通らないコードパスでruntimeエラーで死んで悲しくなる。(つまらないtypoとかだとさらに悲しい)
<dt>Ruby
<dd>Pythonと似たかんじ。Domain Specific Languageにされてしまったりもするが、そうなるとその方言もしらないと読むのもつらい
<dt>JavaScript
<dd>表層をしっている技術者は多いが、ディープなところになるとむずかしすぎし、そういうところで問題がおきると調べるのがむずかしい。大規模になると<a href="https://developers.google.com/closure/compiler/">Closure Compiler</a>とかの
<a href="https://developers.google.com/closure/compiler/docs/js-for-compiler?hl=en">annotation</a>しておかないとつらくなってくる。
<dt>ErlangとかHaskellとか
<dd>Cプログラマにとっては学習コストがたかそう。
</dl>
Goだとimplicitなことが少ないのでコードを読む負担がすくないのがいいと思います。型が省略されてるのもその式の型を把握するのは難しくないですし(深い推論とかしてないので)。
より詳しくはRob Pike先生の<a href="http://talks.golang.org/2012/splash.article">Go at Google: Language Design in the Service of Software Engineering</a> (<a href="http://talks.golang.org/2012/splash.slide#1">slides</a>)を読むとよいかと思います。
<a href="http://talks.golang.org/">talks.golang.org</a>には他にもgo teamのプレゼンがいろいろ置いてあるので見てみることをおすすめします。<p>
発表の資料は<a href="http://ukai-go-talks.appspot.com/2013/gocon.slide#1">http://ukai-go-talks.appspot.com/2013/gocon.slide#1</a>に置いてみました。せっかくなので<a href="https://code.google.com/p/go/source/browse/?repo=talks">https://code.google.com/p/go.talks</a>をつかってみました。これsyntaxが<a href="https://code.google.com/p/go/source/browse/pkg/present/doc.go?repo=talks">こんなかんじ</a>で、昔の<a href="http://member.wide.ad.jp/wg/mgp/">MagicPoint</a>を思いだしたりしました…。表現力とかはたいしたことないですが、local版だと<a href="http://play.golang.org/">play.golang.org</a>みたいにcodeの実行ができるので、Go言語のプレゼンをするのには便利です。<p>Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0オラクル青山センター35.6712377 139.71865179.7402081999999979 98.41005770000001 61.6022672 -178.97275430000002tag:blogger.com,1999:blog-8957799684330069759.post-68168758338057729732011-11-19T16:02:00.000+09:002011-12-19T16:04:18.591+09:00マイナビセミナー今日は秋葉原UDXのマイナビのイベントで、「ソフトウェアエンジニアに求められること」という題で講演してきました。<br>
変化の速いこの業界、リスクをとらずに現状を維持しようとするのが一番のリスクになっている とかそういう話をしました。
参考文献にした<a href="http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06793-8">情熱プログラマ</a>があまっていたので質問してくれた人達にあげました。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0Japan, 〒101-0021 Tokyo, Chiyoda, Sotokanda, 4丁目14−1 秋葉原UDX35.700442 139.77280335.6875475 139.753062 35.713336500000004 139.79254400000002tag:blogger.com,1999:blog-8957799684330069759.post-1963693311485217672011-11-10T23:00:00.000+09:002011-12-19T15:56:26.890+09:00マイナビインタビュー11月19日の講演にむけて、1時間ほどインタビューをうけた記事がでました。<br>
<a href="http://news.mynavi.jp/articles/2011/11/10/ukai/index.html">Chrome開発者が語る、幸せなエンジニアになるための条件</a>Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-1715064329793993742011-11-01T23:00:00.000+09:002011-12-19T15:55:17.122+09:00Google Developer Day 2011 Japan今日は<a href="http://www.google.com/intl/ja/events/developerday/2011/tokyo/">Google Developer Day 2011 Japan</a>。
今年は横浜パシフィコ。<br />
Google Developer Dayも今年で5年目。なんだかんだとフル出場できています。
今年ははじめて自分のメインのプロジェクトの話。1年ちょっと前からやっているクラウドコンパイラの話です。
社外のDeveloperの皆さんにつかってもらえるようにはまだなっていないのですが、東京発のプロジェクト紹介のひとつとして紹介してみました。<br />
<table style="width: 194px;"><tbody>
<tr><td align="center" style="background: url(https://picasaweb.google.com/s/c/transparent_album_background.gif) no-repeat left; height: 194px;"><a href="https://picasaweb.google.com/fumitoshi.ukai/201111GoogleDeveloperDay?authuser=0&feat=embedwebsite"><img height="160" src="https://lh4.googleusercontent.com/-UzpQjQ8-u8A/TrKXnaYxiQE/AAAAAAAAzAQ/6kTpyNDxA80/s160-c/201111GoogleDeveloperDay.jpg" style="margin: 1px 0 0 4px;" width="160" /></a></td></tr>
<tr><td style="font-family: arial,sans-serif; font-size: 11px; text-align: center;"><a href="https://picasaweb.google.com/fumitoshi.ukai/201111GoogleDeveloperDay?authuser=0&feat=embedwebsite" style="color: #4d4d4d; font-weight: bold; text-decoration: none;">2011-11-GoogleDeveloperDay</a></td></tr>
</tbody></table>
<br />
当日の<a href="http://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxnZGQxMWphcGFufGd4OjNlMTJiYTNlOTlmZWVjZWU">プレゼン資料</a>と
<a href="http://www.youtube.com/watch?feature=player_embedded&v=KSYmRacdcwQ">ビデオ</a>も公開されています。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0Japan, Kanagawa Prefecture, Yokohama, Nishi Ward, Minatomirai, 1丁目1−135.4596912014454 139.6365737915039135.4532242014454 139.6267032915039 35.4661582014454 139.64644429150391tag:blogger.com,1999:blog-8957799684330069759.post-59171209225108078652011-10-04T16:12:00.000+09:002011-12-19T16:12:43.656+09:00G-Cloud Magazine 2011 Autumn<a href="http://gihyo.jp/book/2011/978-4-7741-4832-8">G-Cloud Magazine 2011 Autumn</a>に、7月頃インタビューされた記事がのっています。<br>
内容はGoogle App EngineのGo言語について。Go言語のどのへんがいいのかとか、なぜGAEでGo言語なのかとか の話になっています。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-8965914478216011382011-06-13T22:47:00.005+09:002011-07-09T20:55:44.024+09:00Chromium/WebKitの開発・内部アーキテクチャについて今日は東京大学にて、「Chromium/WebKitの開発・内部アーキテクチャについて」というタイトルでTech Talkをしてきました。<br />
<br />
<a href="http://dev.chromium.org/developers/design-documents">Chromium Design Docs</a>や<a href="http://dev.chromium.org/developers/tech-talk-videos">Tech Talks</a>などを中心に<a href="http://dev.chromium.org/developers">開発者むけ情報</a>からどういう風に開発がすすめれているのかということを説明しました。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0場所不明35.713869388907611 139.7619724273681635.700976888907611 139.74223142736815 35.72676188890761 139.78171342736817tag:blogger.com,1999:blog-8957799684330069759.post-41100871144730353912011-06-09T22:40:00.004+09:002011-07-09T20:57:45.299+09:00創造情報学連携講義VII - 大規模分散処理システム東京大学の工藤客員准教授の<a href="https://sites.google.com/site/kudoutokyoislecture/">創造情報学連携講義VII</a>の第3回の講義をしてきました。<br />
内容は、大規模な分散処理の特徴およびGFS, Chubby, MapReduce, BigTableなどの具体的なシステムでのやり方などについて説明しました。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0場所不明35.714043612622383 139.7618865966796935.714043612622383 139.76188659667969 35.714043612622383 139.76188659667969tag:blogger.com,1999:blog-8957799684330069759.post-51571578918913538192011-05-25T22:37:00.001+09:002011-07-09T20:37:40.901+09:00Go言語 mini tech talk in API Expert meetingAPI Expertミーティングで Go言語のmini tech talkをしました。<br />
内容は Google I/OでGo言語について紹介されていた内容の簡単なまとめになっています。<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/hHOr_9u1_Zo/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/hHOr_9u1_Zo&fs=1&source=uds" /><param name="bgcolor" value="#FFFFFF" /><embed width="320" height="266" src="http://www.youtube.com/v/hHOr_9u1_Zo&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><br />
<div class="separator" style="clear: both; text-align: center;"><iframe frameborder="0" height="342" src="https://docs.google.com/a/google.com/present/embed?id=dgddvhpp_52qmd2zjf4" width="410"></iframe><br />
</div>Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-29183758844543378572011-02-26T00:37:00.002+09:002011-03-05T02:17:17.351+09:00文字列操作の比較表: RubyとGo言語ふとtwitterをみていたら
<blockquote>
<a href="http://twitter.com/#!/ymotongpoo">@ymotongpoo</a>
pythonjapan.comとかいうサイトがすごく下品なことをしてる。 「文字列操作の比較表」 <a href="http://bit.ly/ggAJ0k">http://bit.ly/ggAJ0k</a> これは高林さんの記事の丸コピペな上に引用元書いてない。恥を知れ。 <a href="http://bit.ly/g9U5M">http://bit.ly/g9U5M</a><br />
<a href="http://twitter.com/ymotongpoo/status/40615506608128000">http://twitter.com/ymotongpoo/status/40615506608128000</a>
</blockquote>
というのが目にはいった時に社内buzzに流したらpythonjapanうんぬんよりも言語比較の話がまた再燃。s.to_fはperlでは0+$sだとか、s.to_sは”$s"とか。<br />
そういえば<a href="http://golang.org">Go言語</a>も比較したらどうなるかせっかくなのでまとめてみた。
<iframe width='500' height='440' frameborder='0' src='https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AtzQPnmK0dy8dDJxUTNyUXFMX0NHTWlOblppRzRNb2c&single=true&gid=0&output=html&widget=true'></iframe>
<br />
問題のpythonjapanはあっという間に消えたようですね。
<a href="http://togetter.com/li/104968">謎のpythonjapan</a>Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com1tag:blogger.com,1999:blog-8957799684330069759.post-23505362680529851452011-02-25T01:07:00.001+09:002011-02-25T23:48:17.874+09:00blog デザインをかえた妻が <a href="http://www.google.com/analytics/">Google Analytics</a>の勉強をはじめるためにここに埋め込んでみたので、ついでにデザインも新しくしてみた。broken linkになってたのとかもなおしたつもり。<br />
ぼちぼちと去年の分も補完していこうと思う。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-44989694377815078002011-01-07T23:55:00.012+09:002011-03-05T00:10:06.599+09:00Nexus S<a href="http://www.google.com/phone/detail/nexus-s">Nexus S</a>をもらった。<br />
Xperia にくらべるとやや小さめ。Android OSが最新で、テザリングとかができるのがすばらしい。<br />
DoCoMoだと<a href="http://www.nttdocomo.co.jp/charge/bill_plan/plan/value/index.html">タイプSSバリュー</a>に<a href="http://www.nttdocomo.co.jp/charge/discount/pake_hodai_w/index.html">パケホーダイダブル</a>かな。Nexus Sだと<a href="http://www.nttdocomo.co.jp/charge/discount/pake_hodai_w/about/smart_phone.html#p01_01">スマートフォン定額</a>にはできなくて上限10,395円(税抜9,900円)のやつになるっぽい。<br />
社内buzzで、<a href="https://market.android.com/details?id=com.rovio.angrybirds&feature=search_result">Angry Birds</a>がお薦めされていたのでいれてみた。これははまる。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-79231745116868345412010-11-29T23:31:00.003+09:002011-03-02T01:07:06.252+09:00Go言語 Tech TalkSydneyオフィスからGo言語のDeveloper Advocate Andrew Gerrandが来日して、
<a href="https://groups.google.com/group/codesitejp/browse_thread/thread/e5e87e88b9f03a06?pli=1">Go言語 Tech Talk</a>をしてくれた。<br />
内容はURL shortenerを作るというもので、簡単なサーバから、複数レプリカして動かすバージョンを作るところまでで、なかなか興味深い内容だった。<a href="http://wh3rd.net/practical-go/#(1)">スライド</a>が公開されています。<br />
通訳がつかなかったので、区切りで簡単なまとめを日本語で説明するのと、質疑応答の翻訳の手助けなどをしました。<br />
<a href="http://togetter.com/li/74066">togetterされた</a>ようですね。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-72918667331272963302010-10-27T23:19:00.002+09:002011-03-02T01:07:24.049+09:00大規模データ処理特論: Google Goの概要 今日は東工大の<a href="https://sites.google.com/site/suzuldp2010/">大規模データ処理特論</a>の講義のひとつとして「Google Goの概要」というタイトルでしゃべってきた。<br />
基本的には<a href="http://blogger.ukai.org/2010/09/ppl2010.html">PPLサマースクール2010</a>の時と同じような内容。なんかあんまり大規模データ処理とは関係が薄いような気が…<br />
Go言語は大規模なプログラミングを書く時にあまり困らないようにするというのが設計のポイントのひとつとなっているそうだけど、そういうところを中心にしたほうがよかったのかもなー。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-91308849712134488992010-09-28T23:51:00.001+09:002011-03-02T01:07:43.949+09:00Google Developer Day 2010 Japan今日は<a href="http://www.google.co.jp/events/developerday/2010/tokyo/">Google Developer Day 2010 Japan</a>。今年は有楽町の東京国際フォーラム。<br />
今年は、DevFestに続いて「プログラミング言語 Go」。内容は今度は<a href="http://code.google.com/p/godentaku/source/browse/#hg">簡単な電卓プログラムをGoで</a>作ってみながらパッケージの仕方などまでの説明をする感じで。しかし電卓は題材としてはそれほどよいわけではなかったのかも。<br />
<br />
<embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Ffumitoshi.ukai%2Falbumid%2F5524579605481077121%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed><br />
当日の <a href="http://www.google.co.jp/events/developerday/2010/tokyo/pdf/tt2-ukai.pdf">プレゼン資料</a>と<a href="http://www.youtube.com/watch?v=8Em8Z9FOk4w">ビデオ</a>も公開されています。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-38872297961516541652010-09-12T11:52:00.005+09:002011-03-02T01:08:00.767+09:00PPLサマースクール2010: マルチコア時代の新言語今日は 津田塾大学 小平キャンパス にいって<a href="http://ppl.jssst.or.jp/index.php?ss2010">PPLサマースクール2010 : マルチコア時代の新言語</a>でしゃべってきた。<br />
自分のセッションの時に来ていればいいという話だったので昼頃に到着して午前のFortressの話は聞かず‥<br />
話は「プログラミング言語Go」で、<a href="http://golang.org/">Go</a>の設計思想や文法、メモリレイアウトやgoroutine,channelの話など。マルチコア時代の新言語といいつつ、マルチコアなあたりはGoではgoroutineとchannelによる<a href="http://www.usingcsp.com/">Communicating Sequential Processes</a>なプログラムが書きやすくなっているので、並行処理のわかりやすい構造のプログラムが書きやすくなっているので、マルチコアを有効に使うことができるというあたりかと。<br />
その後、<a href="http://www.trl.ibm.com/people/kawatiya/X10seminar.htm">x10</a>の話を聞いた。聞きながら思ったのは、x10と比べるとGoは言語としてサポートする範囲はだいぶコンパクトなので言語仕様も非常に簡単になっているんだなあということ。x10とかでサポートしている分散処理環境なんかは、Goでは(Googleという環境では) <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a>とかそういうのでやることであって、Go言語自体ではそこまではやらない(そういうフレームワークが書きやすい/使いやすい言語にしようとしている)ように思った。むしろ、そういう話をいれたほうがよかったのかな。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0tag:blogger.com,1999:blog-8957799684330069759.post-75261402064657905822010-08-31T11:48:00.001+09:002011-03-02T01:08:21.051+09:00WebSocket BOF<a href="http://tweetvite.com/event/WSBoF">WebSocket BOF</a>がGoogleオフィスで開催されていたので参加してきた。<br />
みなさんWebSocketをつかっていろいろおもしろいことをしているみたい。早く多くのブラウザで使えるようになるといいのになあ。<br />
しかし、ちょうどwhatwgからhybiに議論がうつりはじめてprotocol仕様の変更がはじまっている頃。その時はすぐに新しいのに落ちつくだろうと思っていたが…<br />
BOFではtipsとして、WebSocketのデバッグする時は chrome://net-internals/ あたりを見ると便利ですよという話をした。ちょっと前に、WebSocket trafficも chrome://net-internals/#events などで見られるようにしたのでした。WebSocket messageの中身は見えないけど handshakeとかは確認できるようになっています。Anonymoushttp://www.blogger.com/profile/13409024565190727173noreply@blogger.com0