しげぽん日記

技術屋の魂は失わない

skkimeの後継について

これまでWindowsでの文字入力はskkimeでやっていたんだけど、ふと思い立ってWindows用のskkって他の選択肢がないものかと探してみた。正確に言うとPowerPointで編集している最中にPowerPointがブチ殺されるという事がそこそこ頻発していて、その理由がskkimeではないかと(直感的に)思っていたのがきっかけ。

どうやら最近でも開発が続いているのはSKK日本語入力FEPというのとCorvusSKKの2つらしいとネットで発見したのでとりあえず両方とも入れてみた。標準のWindowsのIMEは既に無効化してあるので私のWindowsPCは

という3種から選択する事になるという常人には非常に無意味な選択肢の並ぶマシンとなってしまった。まぁそれはいいとして。

で、実際に使ってみたところSKK日本語入力FEPって非常にキモい。慣れればどうっちゅう事もないんだろうけど、入力の方法はたしかにskkなんだけど見た目skkじゃない感じ。まぁおもしろそうではあったんだけどそこまでこだわる事もないなと思った。次にCorvusSKKを使ってみたら、まぁ普通に使えた。こっちの方が自分としては(というか従来からのskk使いはみんなこっちがいいって言うんじゃないかと思うんだけど)やっぱり使いやすいのでこれを使う事にした。

会社のメールもとうとうGNU Emacs on Windows + mewからOutlookに乗り換える事にしたし(こっちの話はまた別で書くか…)そういう意味でもEmacsの文字入力ではないWindowsのIMEとしてのskkのデキが自分の作業の効率性に大きく影響するようになってきたし、そういう意味でCorvusSKKが解になってくれればいいなぁと願っている。

ただし、これでPowerPoint問題が解決するかどうかは未確認。もうちょっと時間をかけて確認する事にする。

変数に格納された文字列の名称のクラスインスタンスを作成する

ネットで調べてこうしたらできるんじゃねーかってのを見つけた。

clazz = getattr(sys.modules[<モジュール名>], <クラス名>)
instance = clazz()

 でもこのスクリプト自身でクラス定義している場合はどう書くんだ?って思ったら以下の通りだった。まぁそうか。普段使わないので気付くのに時間かかった。

clazz = getattr(sys.modules['__main__'], <クラス名>)
instance = clazz()

howm

会社で使ってるノートPCがSSD128GBなので容量が少ないから、自分の机にデスクトップPCを置いてメールだのなんだの蓄積系のデータはそっちのデスクトップのHDDの中に置いている。

 

メーラーをEmacs+Mewにしてノートでもデスクトップでも同じように見えるようにしているのはそれはそれとして。howmでのメモ書きもノートとデスクトップで共有するようにしている。まぁファイル共有だけできれば共有できるので簡単にできるし。

 

で、最近howmについて再度見直してみたんだけど知らない機能がいっぱいあった。予定の管理もhowmでやりたくなるくらいに。前はmhcを使う事も考えていたんだけどmhcはスケジュールに特化しちゃうのと、スケジュールはグループのメンバーと共有しないといけないのでmhcを公開するのが面倒だったからmhcは使わなくなった。mhcが使いたかった理由は、スケジュールとメールのリンクを使いたかったから。メールで連絡を受ける事が多いのでスケジュールとメールがリンクすると本当に便利なんよね。例えば会議の資料の場所がメールで連絡されてきたり、資料がメール添付されてきたりするので、リンクだけ作っておけばそれでスケジュール管理が楽になる。それ以外にも議事メモなんかもEmacsで書くわけなので、howmで打合せ毎にページを作って、メールへのリンクを貼って、議事録書いておけばすごくまとまる。出張報告にできるくらいになる。

 

snap-recordっていうのがあるらしいと最近知った。これ要はmhcでやりたかった事のうちの半分がhowmでできるというもの。やりたかった事の半分はメールの文面から自動でスケジュールデータを作成するというものだけどまぁここはあきらめる。

 

という事でばりばりhowmを使いこなす気分になってきた。というか最近物忘れが激しくて書いておかないといけないんだけど、手帳に手書きで残すのがどうにも性にあわなくて…

Gerritが重い

Gerritを使っているが大きなcommitをpushするとなかなか反応がなくていまいちだなぁと思っていた。仕方ないのでGerritのプロセスにstraceでアタッチしてみるとひたすらディスクI/Oを繰り返している模様。しかも8kB単位で。

こら遅いな…と思ったのでいろいろ調べていたらJGitとやらの設定を変える方法が存在する事がわかったのでこいつをいじってみたら改善した。せっかくなのでここに晒しておく。

[core]
        packedGitWindowSize = 4m
        packegGitLimit = 12g
        streamFileThreshold = 1g

packedGitWindowSizeはぶっちゃけ適当。RAMが48GBのマシンでjenkinsでGerritへのpushをまわしており、同時に3つのジョブを処理できるようにしているから1/3よりもちょっと少ない数字にpackedGitLimitを設定。streamFileThresholdは取り扱う最大サイズのファイルよりも大きくなるだろうなぁくらいの数字。

これでそこそこ快適になったのでとりあえず良しとする。

haskell

なんとなくhaskellに触れてみた。まだまだ全然理解できていないんだけどおもしろいと思う。組み込み屋としてはこういう言語に触れるのはなかなか大事なんじゃないかと思っている。もちろん組み込みに利用できるという意味ではなくて、こういう考え方そのものに触れる機会がそもそも少ないので視野を広げるという意味で。

とりあえず去年のGDDのスライドパズルでも解いてみようかと書き始めてみたものの…探索するアルゴリズムを全くノープランで全探索したら案の定時間だけくって全く動かない。そらそうだ。こういう時の組み込み屋のアプローチは「いかに高速に演算できるように最適化するか」だ。でも数学屋さんのアプローチはおそらく「いかにアルゴリズムを改良できるか」だと思う。

こうした組み込み屋的な考え方は、こうしたソフトウェア的な問題にぶつかった時に私がとるアプローチだけではなくて、実社会で私が問題にぶちあたった時にとるアプローチにも通じるものがあるんじゃないかと感じている。うまくやれば素早く目的に達する事ができるというものを、ひたすらカット&トライをできる限り素早く繰り返して目的に達する、というようなスタンスで物事に望んでいる気がする。

アルゴリズムを知る事で物事を解決できる人は本を読む。本の中に記されているアルゴリズムを自分が適用できるように行動する。

私は違う。本は読まない。なぜなら本を読んでも課題解決の方法が変わらないからだ。とにかくやってみる。ただこうした考え方も悪い事ばかりじゃない。なぜなら「やってみなくちゃわからない」とどんな場面でも臆する事がなくなるからだ。

ただ、最近はどんな場面でも臆する事なく、うまくいく時は他人のアルゴリズムを適用するっていうのがベストなんじゃないかと思っている。

なので、haskellでアルゴリズムを改良する考え方に触れる事で、普段の行動パターンが変えられるといいな、と思っている。

第4回SHARPハッカソン@東広島を開催しました

タイトルの通り3/10,11にもう第4回目となってしまったうちの工場でのハッカソンが開催されました。

参加いただいた方からは既にいくつものブログの投稿をいただいておりものすごく熱い思いが伝わってくるのですが、開催した側の視点でも1つエントリを書いてみよう(第3回目の分も書いたんだけど)と思います。

初日(3/10)

ハッカソンは土日に開催するので初日は土曜日だったのですが、全国各地から当日移動で集結いただくので開始時刻はおおよそお昼前くらいになります。ということで午前中は仕事でもしようかと普通の時間に出勤したのですが…

などというつぶやきがまさかの9:00に行われた。これはいかんという事であわてて会場である第4会議室へ向かう。仕事抜きにいきなりハッカソンモード突入。とはいえ忘れ物を取りに行ったり来たりでひたすら2Fと6Fをおろおろ往復していた…

そんな中以下のような悲痛な叫びが。

参加予定なのに参加者リストに名前がないとのこと。あわてて確認。事前の連絡では名簿にあったはずだけど…あった!

と言うていると…

などという連絡も。さすが八本松クエスト。中級コースも難易度が高い。

ちなみに初級コースにだってこんなトラップがある。八本松は広島市内じゃないんだぜ。

ちなみに、今回は上級コースの参加者はいなかった模様。と、大人の修学旅行っぷりをみなさん体感しつつハッカソン開始。私はプレゼンも自己紹介もないのに(名前の漢字間違えて紹介されたけど)前に座っていた。初めて見る人にはなんでこいつ前に座ってるんだと違和感があったんじゃないか。

座席のレイアウトの話。今回は1テーブルに3人で座るというけっこう窮屈な状態だった。恒例のハッカソン開始直後の弁当が狭い机の上でPCと同じ場所に並べられてやっぱり窮屈だった。食事の話があるので1テーブルに2人がけの方がいい気がする。また1テーブル3人になった影響か今回は1チームの人数が多くなってしまった。チーム数は4チーム。各チーム1人は一般女性枠を含めるというルール+一般女性枠の人数が5人という事、ホワイトボードを5枚用意していた事から、主催者側の意図としては5チームという狙いだったという事をあえてここに記しておく。ただし、そのうち1枚のホワイトボードにはデカデカとWiFiアクセスポイントの情報が書かれたままになっていたので、4チームで良かったのかもしれない。

参加者の皆様がハッカソンの方に没頭していく中で私はあいつにくいついた。その名もBIG PAD。ハッカソンに集まるようなメンバーだけあって全員最初からBIG PADに興味津々。これは発表をする際にBIG PADを活用した方が盛り上がるだろうと思った。私はあの巨大な画面を自分の方に向けてひたすらBIG PADthonしていた。まずはAndroid SDKのインストールを試みる。管理者権限をもたない一般人の私はJDKのインストールでひっかかる。BIG PADでライブコーディングとか絶対盛り上がったはずなのに。ただ今回@adakodaさんも来られているのでせめてBIG PADにAndroid Screen Monitorでもと考えてはいた。JREはインストール済、ADBはSDK Managerのexe実行でダウンロードできた。だが…USBドライバのインストールで拒まれた。またしても管理者権限の壁に。うむ、2日目のプレゼンに良いネタが見つかったと一人ほくそ笑んでいた。

さてアイデア出しが終わった時点で私もアプリを作る事になっていた。しかもなぜかイケメンハンターとかいうシューティングゲームらしい。イケメンを打ち落として捕獲するらしい。なかなか高いハードルを設定したものだ@AutoAIMerさん。作ってみる気はあるにはあったが日頃の仕事の癖からかパフォーマンスに妥協したくない!などと高いプライドを発揮してしまった。結果、どういうやり方で作るのがパフォーマンス的に良いのか考えこむ始末。挙句、手を動かせずに過ぎる時間。決めた。我々は裏方だ。2日目のプレゼンでは場を温かくするための前座をつとめるのだ。だからネタに走ろう。イケメンはつかまえた事にする。つかまえた後どう料理するのか。いちおうテーマは女子力向上。イケメンにほめてもらって自信をつける事が女子力向上ではないかと考えたのだ。ネタの割には発想が普通。ほめてもらうのに一番良い利用シーンは…一番手軽に見られる画面…ロックスクリーンか。前回のハッカソンとネタがかぶるがここはあえて前回と同じロックスクリーンで攻めよう。イケメンの写真収集とイケメンが何と言うかは@AutoAIMerさんにそろえてもらう事になった。私はその間何をしていたのかというと…車輪の再発明をしていた…前回作ったロックスクリーンのアプリがどうにも見当たらない。おそらく削除してしまったようだ。という事で初日はネタのためにロックスクリーンをもう一度開発するという屈辱を味わっていた。

そんなこんなで初日終了。懇親会には我々も混ぜてもらう事になった。17時過ぎに参加者の方が移動を開始するのだが懇親会が18時から。ちょっと待て。私は今日はクルマで出社しており、自宅までクルマで15分、自宅からお店まで徒歩で25分はかかるぞ。急がなければ懇親会に間に合わない…と全力で会場に向かっていると後ろからクルマに見覚えのある顔が。@hiero_adgjmptwだ。彼のクルマに拾ってもらったので見事に時間前に会場に到着してしまった。

懇親会。左に@vvakameさんその向こうに@gabuさん。対面が@tomorrowkeyさんでその横が@adakodaさん。すげーデベロッパ色の濃い席。店に着くなり実は美酒鍋のにんにくの香りで実はメンバーテンション上がりまくり。ビールは乾杯で終了し早々に日本酒に着手。まずは蔵出し原酒。@vvakameさんありえないスピードでがぶ飲み。まだお通しなのに既に完成。続いてあらばしり。完全に@vvakameさんと@gabuさんいっちゃった。

ここでとっておきの仏蘭西屋に着手。"日本酒を白ワインの樽へ入れ熟成させた、香りや風味引き立つお酒です。"という説明の通りに洋酒のような香りの日本酒なのです。ここに来たからにはこれを飲まねば。

完璧に高まっちゃいました。まだたしかこの時点でお通しと八寸くらいしか出てきていなかったはず。@adakodaさんはそんな中も非常に冷静で…

 と実況中継。続いてゴールド賀茂鶴。有名なお酒なので説明不要。

この時点で実はまだ19時。アプリ開発のスピード感だけではなく宴会のスピード感も半端ない。続いて厳島

 5本目ですね。この時点でもう壊れちゃいました。

 大丈夫ではなかったようです。最後に私が流れ解散、もとい、一本締めでこの日は終了。時刻は20:30。みなさんホテルに戻ってまたもくもくされていましたが…私は帰宅してホットカーペットの上で寝てしまいました。

2日目(3/11)

 この日は私もBIG PADにイラスト描いてみた。

 中央下の怪しい顔つきのドロイド君は私の作品。

2日目は@AutoAIMerさんの探してくれた写真とメッセージをアプリに組み込んで早々に終了。彼は自身の写真もネタアプリに提供してくれた。その後はプレゼン資料作り。BIG PAD→IKEMEN HUNTER→IKEMEN HUNTER2という流れて女子力と助詞力などというオヤジギャグの資料。

ハッカソンは初日夜のみなさまの頑張りのおかげであちらこちらで歓声が上がる。きっちり時間通りにしあげるあたりさすが。みなさん開発に集中しすぎて弁当が届いても手をつけないくらい。

私は人生初SubVersionに挑戦。ほぼCVSと同じだろうという安易な憶測のもと。コマンドラインでたたこうとするとどうもcheckoutで失敗する。そんな時に神はやってきた。

 なるほど。困った時の亀頼み。という事で早速インストール。checkout→add→commitでとりあえずできた模様。でもsvnは使わねーな、たぶん。gitに慣れ過ぎた。

そして発表のお時間。今回はトリをつとめる自信がなかったのでチューター一番、社員二番となった。イケメン2名、社員1名がランダムでくさいセリフをしゃべるアプリだったのだが、社員1名の登場率が異常に高かった。まぁとりあえず場は温めたので裏方は果たせたと思う。

隣でせっせこ作っていた@itukina氏は実は帰宅後もちゃんとアプリ開発して2本アプリ完成させていた。デモの時には残念ながらカメラアプリの方は動かなくなってしまっていたようなのだけど。私のように寝てしまった奴とは大違い。反省。

そこから順に各チームの発表。まずはパンツチーム。BTでAndroid端末をデイジーチェイン接続し複数人でプリクラの画像編集ができちゃうというもの。すげぇ。この発表を聞いた時はこのアプリが優勝じゃないかと思った。

次にライブデコチーム。デコった写真でライブウォールペーパーを作り、サーバで共有できるというもの。既にマネタイズまで考えてあり、こんな世界初のアプリがいきなり今日リリースとか言ってる。ちゃんと動いているしたしかにすごい。昨日あんだけ日本酒に負けた男たちが。

さらにまつげチーム。写真を撮影したらその写真に適当なコピーを自動的でデコってくれて雑誌のように仕上げてくれ、しかもそれをtwitter経由で共有するというもの。これもすぐに公開してしまうらしい。たしかにそれっぽいがアニキというフレーズが女子なのか私にはピンとこなかった。女子雑誌を貸してもらって読んだにもかかわらず。

最後にビーチーム。手書きイラストをカメラで撮影するとデコメ素材ができあがるというもの。デコメ素材はサーバでやっぱりシェアできる。この人数であればサーバまでメンテできるのかと思ったよ。いやまぁたしかに私が見てもかわいかった。

そして投票タイム。こんなハイレベルな戦いで点数つけるの正直厳しかったのだけど、でも考えてみればかわいいアプリっていう意味で言うと一番はビーチームなのかなと。取り上げたテーマというよりもできばえがかわいいと思ったのでこのチームだけ2点投票して残りは1点とさせていただいた。結果ビーチームの優勝だった。点数は接戦で37, 32, 31, 31という点数。投票する人が悩んだんだろうなぁと思うような結果。

一般女性枠が5人で4チーム。つまり1チームだけ一般女性が2人いたのだ。そのチームがビーチーム。これは私は偶然ではなく必然だったんじゃなかろうかと。一般女性、デザイナー、開発者のバランスがうまくとれていたために、カワイイを一番うまく表現できたんじゃないかと思っている。

最後にみなさんで記念撮影して終了。

吹雪の中、みなさま帰って行かれました。

3日目(3/12)

 どうやらみなさまA3に応募されるようで翌日も開発は延長している模様。懇親会の後もハッカソン自体が終了しても続く開発。そして同じ目標に向かってやり遂げようとする意思。誰かのためではなく自分のために協力できる開発。やはりそこには開発の理想形があるのだと思う。

最後に私の感想を。

トヨタカップは日本で開催、ハッカソンは東広島で開催。サッカーはチームでプレーするもの。スイーパーでもいいのでグランドに立ちたい。そのためには日頃の鍛練を怠らない。

みなさまのお声

ブログ

3月10日-11日に第4回SHARPハッカソン@東広島が開催されました

シャープハッカソン in 広島

第4回シャープハッカソン@東広島がドリームチームだった

第4回 SHARPハッカソン@東広島に参加しました!

第4回 SHARPハッカソン@東広島

第4回SHARPハッカソンに参加してきました。

シャープハッカソン2012春に行ってきた&アプリの技術的なお話

第4回シャープハッカソンに参加してきました!!

第4回シャープハッカソン@東広島に参加してきました!

第4回シャープハッカソン@東広島に参加してきました

PhotoshoperにAndroidアプリのデザインをお願いする際の失敗例

「第4回シャープハッカソン」に参加してきました

第4回 SHARPハッカソン@東広島に参加してます

みんなでアプリ作成中@第4回 SHARPハッカソン東広島

第4回 SHARPハッカソン東広島 二日目

第4回SHARPハッカソンで作ったアプリ「スタ☆ミ」が公開されました

「第4回シャープハッカソン」に参加したなど

SHARPハッカソン東広島、ドリームチームに参加 #shthon2012s

大人の遠足

アニキぃ

参加者リスト

shthon2012s

社員は→shthon2012ss

twitterまとめ

第4回SHARPハッカソン@東広島ツイートまとめ

sphinx

twitterのTLでsphinxというのを見かけたのでお試しでチームのビルドPCに入れてみた。

pdfの作成にえらく手間がかかってしまったが…結局のところどうもUbuntu LTS版を使っているので何かのパッケージが不足していたみたい。追いかけるの面倒なのでやめた。手元の自席のUbuntu 11.10に入れたら入れられた。こちらのサイトにお世話になりました → http://blog.livedoor.jp/vine_user/archives/51918624.html

ということでうちのチームのビルドPCにsphinx環境を作成した。

  • gitサーバもあるけどとりあえず今のところssh経由のgitリポジトリでrstを管理
  • gitリポジトリをjenkinsで監視して更新があればhtml化
  • 上記のhtmlはredmineとかから直接リンク張っておくようにしてjenkinsでhtmlの更新がかかればすぐに閲覧可能
  • 一方で自席のUbuntu 11.10を泣く泣くjenkinsのノードとして登録
  • latexpdfだけは自席のUbuntu 11.10でないとできないのでgitリポジトリの更新がかかればlatexpdfをビルドする
  • 成果物のpdfはjenkinsのマスタで管理する

こんな感じ。さてグループのメンバーがドキュメント書くのに使ってくれるかな。

っていうか .. module:: って書いたら「pythonモジュール」ってなるの何とかなんないのかな。reST勉強しないと。