タグ

ブックマーク / higayasuo.hatenablog.com (60)

  • Seasar2から卒業しよう - ひがやすを技術ブログ

    人は、新たな環境で経験を積んでいくと、少しずついろんなことが出来るようになり、そのうち、その環境では、何でも自分の思った通りに出来るようになります。 「おら、強ぇ」状態。 これは、素晴らしいことなのですが、一つ問題があります。成長が止まってしまうことです。 人は、知らないことを経験したり、つまずきを乗り越えたときに、成長します。知らないことがほとんどなくなったり、つまずくことがなくなったりすると、成長が止まってしまうのです。 Seasar2.4、S2JDBC、SAStrutsと開発してきて、通常のサーバーサイドJavaは、十分にやりきった感がありました。このままこの場所にいるのは、心地いいんだけど、成長が止まってしまうのが不安でした。 人って不思議なもので、一定の能力でとどまるってことが出来ないんだよね。成長が止まると、能力は落ちていく。 自分はどこか、ドラゴンボールの悟空に似ているところ

    Seasar2から卒業しよう - ひがやすを技術ブログ
    terazzo
    terazzo 2015/09/28
  • SIは本当に終わったのか? - ひがやすを技術ブログ

    SmartNewsやBacklogの華やかな成功をみていると、SIになんて明るい未来はないんだから、これからはスタートアップをやるべきだと思う方も少なくはないでしょう。 だけど、世の中そんなに甘くない。 私は、2011年から5年間、スタートアップのようなことをずっとやっていますが、未だに何一つ成功していません。 問題は、技術にあった訳ではありません。やりたいことで実現できなかったことなんてなかった。 問題が、アイディアにあった訳でもありません。もちろん、アイディアが今一で、失敗したプロジェクトもありますが。電通の人たちと一緒に仕事をやっているので、アイディアは面白そうなものがほとんどです。でも、実際に実装してみると、それほど面白いものにならない。 これ、実はしょうがないんです。アイディアは実装するまで、その当の面白さを確認できないから。 だから、スタートアップでは、アイディアの面白さが確

    SIは本当に終わったのか? - ひがやすを技術ブログ
    terazzo
    terazzo 2015/09/15
  • SmartNewsとBacklogの作り方 - ひがやすを技術ブログ

    「人々が強烈なあこがれを持つような、ダンスを作るハード作ってよ」と会社にいわれたら、あなたならどうする? 自信も経験もないから断る? 僕は、自身も経験もなかったけど、これは面白そうだと直感的に思った。 そして、DJ&トラックメイカーに転身。この仕事をやり切ることを決意した。 これからは、DJ HIGACHANとして生きていきます。よろしくお願いします。 さて、DJ HIGACHANとしての最初のエントリは、「SmartNewsとBacklogの作り方」。 Seasar Conferenceの目玉セッションの一つです。浜階生さんと橋正徳さんに登壇してもらい、私がモデレータをつとめます。 SmartNewsといえば、全世界で1300万ダウンロードを突破し、アメリカでもMAUが100万を超えるなど、世界レベルで快進撃中のアプリで、その代表取締役の浜さんは、世界レベルでモテモテです。 セッシ

    SmartNewsとBacklogの作り方 - ひがやすを技術ブログ
  • StrutsのClassLoader脆弱性はSAStrutsに影響しません - ひがやすを技術ブログ

    Struts2に見つかった脆弱性と同様の脆弱性がStruts1系にも見つかりました。 Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響 HTTP(S)のリクエストでJavaのClassLoaderのメソッドが呼び出せてしまうという脆弱性です。 もう少し噛み砕いて言えば、リクエストのパラメータをJavaBeansにセットする時に、リフレクションを使い、パラメータ名にaaa.bbb.cccのようなネストした名前をサポートしているフレームワークは同様の問題が起こる可能性があります。 パラメータ名をclass.classLoader.xxxのような感じにして、ClassLoaderのメソッドを呼び出す訳です。 このような問題を起こすリフレクションフレームワークで最も有名なのは、Apache Commons BeanUtilsです。リクエストのパラメータ

    StrutsのClassLoader脆弱性はSAStrutsに影響しません - ひがやすを技術ブログ
    terazzo
    terazzo 2014/04/25
    朗報だ!!/getClass()が阻止されてるだけだから余計なもの(requestとかservletContextとか)をpublicにしてるとそこからclassLoaderに到達されるのかな。
  • ムービープロトタイピング - ひがやすを技術ブログ

    pixtuneというアプリをリリースしました。 pixtuneをひとことで説明すると、「Play the moment」。 自分の撮った写真と、写真を撮った当時にはやっていた曲を一緒に楽しむアプリです。どういうアプリなのかは、動画を見た方が早いと思うので、まずはこちらをどうぞ。 無料なので、興味がある方は、ぜひダウンロードしてください。 https://itunes.apple.com/jp/app/pixtune/id722162353?mt=8 今回は、このアプリの開発に使ったムービープロトタイピングという開発手法を紹介したいと思います。 ムービープロトタイピングは、私が勝手につけた名前(大目に見てください)で、アプリのプロトタイプをムービーで高速に行う手法です。プロトタイピングの手法としては、ペーパープロトタイピングが、手軽かつ効果的で、このプロジェクトでも、最初、ペーパープロトタイ

    ムービープロトタイピング - ひがやすを技術ブログ
    terazzo
    terazzo 2014/02/13
  • 残業を悪とするチームを作ろう - ひがやすを技術ブログ

    長時間労働やサービス残業は、基的には会社の問題であり、上司の問題です。 例えば、大手SIerで長時間労働やサービス残業が発生するよくあるケースを見てみましょう。 会社は、ワークライフバランスを向上させるために、年間360時間以上の残業をしてはいけないというルールを決めたとします。この段階で、会社は残業は社員のために良くないと認識しています。 現場は、社員の稼働率を上げるためにオーバーワーク気味に仕事をアサインします。仕事がないときに備えて、仕事があるときは、多めに仕事を振るのです。これが間違いなのですが、たいていの現場は、このように行動してるでしょう。つまり、仕事があるときは、多めに振られているので残業することが前提なのです。 ここで、会社の作った残業規制のルールが効いてきます。上司は、会社のルールがあるので、月30時間以上の残業をつけることを基禁止します。「残業をつけることを禁止する

    残業を悪とするチームを作ろう - ひがやすを技術ブログ
    terazzo
    terazzo 2012/07/09
  • 僕と君とSIerの生きる道 - ひがやすを技術ブログ

    SIerに対するバッシングは、高まる一方です。 私もSI業界からはさっさと抜けだしたほうがいいのエントリでSIerには未来がないからサービスを作る側に回ったほうが良いと書きました。 確かに私自身は、サービスを作る側に回った(まだISIDにいるけど、ベンチャーで働いているようなものです)のですが、身を持って面白いサービスを作る難しさも経験しました。 面白いサービスを作るのはほんとうに難しい。その後、マネタイズにも成功するのはさらに難しい。サービスを作る側に回って成功するのはほんの人握りの人なんです。 これは、自分でやってみての正直な感想。やらなきゃわからなかったことなので、自分のしたことに対する後悔はありませんが、日々ものすごいプレッシャーです。 チャレンジし続けないと落ちぶれてしまうのエントリの通り、私は現状維持を嫌い、常に新しいことにチャレンジする前向きな性格ですが、それでもこのプレッシ

    僕と君とSIerの生きる道 - ひがやすを技術ブログ
    terazzo
    terazzo 2012/02/10
  • AppEngine/Jのspin-upを劇的に改善する方法 - ひがやすを技術ブログ

    AppEngineは、アクセスがあったときにアプリケーションを起動し、しばらくアクセスが無ければアプリケーションを終了させ、また次のリクエストで再起動するという仕組みを導入しています。 そのため、アプリケーションを起動(spin-up)する時間がとても重要になってきます。このspin-upの時間はpython(webapp)で60cpu_ms以下。(cpu_msはcpuが使う仮想的な時間ですがmsと同じ感じで捉えてもらってもとりあえずは大丈夫です)JavaのServletだと600cpu_msくらいです。PythonでもDjangoような大きなフレームワークだと1000cpu_msくらい(アプリによる)かかりますが、許容範囲内。JavaだとSlim3で1300cpu_ms、Springだと早くて7000cpu_msという感じで、Slim3がギリギリ許容範囲内でしょうか。ほんとうは、1000

    AppEngine/Jのspin-upを劇的に改善する方法 - ひがやすを技術ブログ
    terazzo
    terazzo 2010/11/09
  • Seasar3がやってくる - ひがやすを技術ブログ

    Seasar2は、機能を枯れさせることに徹し、機能追加は行わないと宣言してから、二年以上たちます。 で、Seasar2が冒険しないことによって、適切な大きさの問題は生まれなくなり、開発者が離れ、Seasar関連プロダクトが生まれなくなり、Seasarユーザも離れていく。使われないSeasarからさらに開発者が離れていく。 こういうスパイラルが発生するかもしれないことについては、どう考えますか? このような声もありました。「機能を枯れさせることに徹する」というのは、かなりの冒険でしたが、今のところ、うまく行っていると思っています。 「RubyやSeasar2、OpenPNEが“定番”に、Linux Foundationが活用動向調査」という記事も出てましたね。 http://itpro.nikkeibp.co.jp/article/NEWS/20100527/348514/ しかし、二年の間

    Seasar3がやってくる - ひがやすを技術ブログ
    terazzo
    terazzo 2010/06/03
  • Slim3 1.0.0 Released - ひがやすを技術ブログ

    Slim3 1.0.0をリリースしました。 リリースノートはこちら http://sites.google.com/site/slim3appengine/release-notes ダウンロードはこちら http://code.google.com/p/slim3/downloads/list Slim3の主な特徴は次のとおりです。 Global Transactions Faster than JDO/JPA Fast spin-up HOT reloading Type safe query 詳しくはこちらをどうぞ http://slim3.org Seasar2譲りのHOT reloadingやS2JDBC譲りのType safe queryなどもありますが、最大の特徴は、Global Transactionsを実装していること。 http://d.hatena.ne.jp/hig

    Slim3 1.0.0 Released - ひがやすを技術ブログ
    terazzo
    terazzo 2010/03/18
  • Google App EngineでGlobal Transaction - ひがやすを技術ブログ

    Google App EngineにはTransactionは1つのEntity Group内でしかできないという制限があります。詳しくは、App EngineのEntityGroupを理解しよう - yvsu pron. yasを参照してください。 そうするとある口座から別の口座にお金を振込むような送金のパターンで、Transactionを利用することができません(すべての口座を1Entity Groupに押し込むと更新がぶつかって現実的ではないから)。送金パターンで整合性を保つためには、理論的には次のようになります。 http://songofcloud.gluegent.com/2009/11/blog-post_18.html 実装するとこんな感じ。 http://blog.notdot.net/2009/9/Distributed-Transactions-on-App-Engi

    Google App EngineでGlobal Transaction - ひがやすを技術ブログ
    terazzo
    terazzo 2010/02/10
  • Slim3 Preview release - ひがやすを技術ブログ

    Slim3の正式リリースは、来年の一月くらいになりそうですが、ドキュメントも最低限のものはそろったので、今の段階のものをPreview版として紹介しておきます。 サイトへは、http://slim3.org でアクセスしてください。 Getting Startedをやり、Slim3 Datastoreのドキュメントを読み、Online demoをみれば、Slim3のことは把握できるようになっています。 Oneline demoからソースも見れるようになっているので、動かしながらソースを確認することができます。Online demoは、IE6で見るとレイアウトが崩れていますが、これはIE6を使うなというメッセージということで。(IE7,8では未確認) Slim3は、Google App Engineに対して最適化されています。 例えば、最近、App Engineで問題になっているのは、spi

    Slim3 Preview release - ひがやすを技術ブログ
    terazzo
    terazzo 2009/11/15
    Employee.class.metaみたいに出来ないかなあ。そんでEmployee編集してセーブしたら(aptかIrenkaかなんかで)自動的にアップデートするの。
  • えせMVCについてそろそろ一言言っておくか - ひがやすを技術ブログ

    Ruby on Railsの最大の問題点は、それが持つ「一見そのフレームワークがMVCの形をとりながら、MVCの最も大切なところを外している『えせMVC』である」点にある RailsのえせMVC疑惑で盛り上がってますね。Railsが「えせMVCフレームワーク」ではないのは、みんな知っていると思うので、記事、コメントをみて勘違いしている人が多そうな部分に一言書いておきます。 まず、おかしいのはsatoshiさんのこの意見。 PhotoShareは主にRailsで作られているので、ModelはActiveRecordが担当しているわけだが、Modelのレイヤーが非常に薄いために(O/Rマッピングをしているだけ)、データベースの整合性の責任がController側にある。そのため、ちょっとした機能変更のたびにAPIレベルでのテストを大量に走らせなければならないし、それでもどうしてもミスが生じてし

    えせMVCについてそろそろ一言言っておくか - ひがやすを技術ブログ
    terazzo
    terazzo 2009/10/13
    >ロジックはそれぞれ適切なところで実装すべき
  • 男児たるものGoogle App Engine実践クラウドシステム構築を買うべきだ - ひがやすを技術ブログ

    なぜなら、Google App Engineを学ぶために一番必要なのは、「何ができないかを知ること」だからだ。そして、このにはそれが書いてある。それしか書いていないといってもいい。 App Engineは、Googleのインフラを最も効率よく使うことにフォーカスしている。Genericなアプローチではなく、Specializedなアプローチだ。 何かを得ようとするならば、それと等価の何かを支払わなければいけない。App Engineは、Googleのインフラを最も効率よく使うために、「いくつかのAPIが使えない」という対価を支払った。 だからこそ、App Engineを知るためには、最初に何ができないのかを知らなければいけないのだ。 あなたは、その制限という対価と引き換えに、Googleから安価なスケールするプラットフォームを手に入れることができる。 EC2はGenericなアプローチだ

    男児たるものGoogle App Engine実践クラウドシステム構築を買うべきだ - ひがやすを技術ブログ
    terazzo
    terazzo 2009/09/29
  • HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ

    JavaではClassはClassLoaderに読み込まれます。これはほとんどの人が知っていると思います。AOPを使うときのエンハンスされたクラスも同様にClassLoaderに読み込まれます。 これらの情報は、パーマネント領域に格納されますが、ClassLoaderがGCされると解放されます。 Seasar2のHOT reloadingでは、リクエストの度にClassLoaderを作って、そこにClassをロードし、そのClassLoaderは、リクエストが終わったら破棄しているので、Classの情報は、リクエストごとに破棄されています。 HOT relodingによって、パーマネント領域が使いつくされることはありません。 さらっと書きましたが、きちんとClassLoaderを破棄するのは、かなり大変です。リフレクションの情報がキャッシュされているとそれだけで破棄されなくなってしまうから

    HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ
    terazzo
    terazzo 2009/07/16
    Log4j使ってて、weavingされてるクラスでLog logger = LogFactory.getLog(getClass());とかしてると危険なんだよね
  • JDOのモデルの状態を理解しよう - ひがやすを技術ブログ

    GAEのJDOのモデルは、ざっくりいうと4種類の状態があります(当はもっといっぱいあるけど、4つをおさえておけば普通はOK)。 transient persistent detached hollow モデルをnewして、PersistenceManager#makePersistent()を呼ぶまでは、transientです。 PersistenceManager#makePersistent()がよばれるとpersistentな状態です。persistentなモデルの状態は、PersistenceManagerをcloseするかTransactionをcommitしたときに、データストアに反映されます。 PersistenceManagerをcloseしたときからが、運命の分かれ目。何の設定もしないとhollowになり、lazy loadingされているオブジェクトに触ろうとするとエ

    JDOのモデルの状態を理解しよう - ひがやすを技術ブログ
    terazzo
    terazzo 2009/06/04
  • Slim3 for Google App Engine/Java - ひがやすを技術ブログ

    Slim3をGAE/Jに対応させました。 デモサイトはこちら。 http://higayasuo.appspot.com/ ソースコードをチェックアウトしたい場合はこちら。 http://code.google.com/p/slim3/source/checkout https://slim3.googlecode.com/svn/を指定してチェックアウトできます。デモ用のプロジェクトは、slim3-demoです。 SAStrutsのチュートリアルをやったことのある人なら、デモサイトが、そっくりだということがわかるでしょう。Slim3 Struts(SAStruts相当)がGAE/Jで動くわけです。 素のStrutsだとGAEではファイルアップロードに失敗しますが、Slim3 Strutsはその辺も対応してます。 やってみて感じたのは、GAE/Jは、制限が結構厳しいので、高度なフレームワー

    Slim3 for Google App Engine/Java - ひがやすを技術ブログ
    terazzo
    terazzo 2009/04/12
  • アドリブ・プレゼンのススメ - ひがやすを技術ブログ

    私のプレゼンの基スタイルは、場の雰囲気(聴衆の様子)を見ながら、その場で話す内容を組み立てていくスタイルです。 良く言えば、会場とのつながりを大事にしています。 悪く言えば、事前のシナリオ(プレゼン資料)なしのぶっつけ番(アドリブ)です。 このほうがライブ感が出る。聴衆と一緒になって場を作れる。 「あぁこういうことにうなずいてくれるのか」とか、 「あれっ、寝てる人がいる。派手なデモをして起きてもらおう」とか、 場を見てプレゼンの中身を組み立てることができます。 その場で話すことを決めるので、長く考えている余裕がありません。思いついたことを直ぐ話す。だから、音が出やすい。音でしゃべったほうがやはり伝わりやすい。音で話すということも、ライブ感を出すには重要だと思っています。 アドリブといっても、100%その場で考えているわけではなく、だいたいのシナリオは決めておいて、後は会場しだいっ

    アドリブ・プレゼンのススメ - ひがやすを技術ブログ
    terazzo
    terazzo 2009/03/26
    発表者というよりテーブルトークのゲームマスターみたいな感じだ
  • HOT deployで嵌らないためのパッケージ構成 - ひがやすを技術ブログ

    Slim3では、ルートパッケージ直下がagileパッケージとfirmパッケージに分かれます。agileパッケージには、agileに開発する必要のある機能要件に応じたクラスが入ります。firmパッケージには、ユーザの要件には直接関係しない非機能要件に応じたクラス(一般的にはインフラストラクチャ層のクラス)が入ります。 例えば、ルートパッケージがtutorialの場合、次のようになります。agileとかfirmの名前はもちろん自由に選べます。 tutorial root package tutorial.agile agile package tutorial.agile.action agile package for action tutorial.agile.xxx agile package for xxx tutorial.firm firm package tutorial.fir

    HOT deployで嵌らないためのパッケージ構成 - ひがやすを技術ブログ
    terazzo
    terazzo 2009/03/18
  • メタプログラミングの光と影 - ひがやすを技術ブログ

    メタプログラミングとはソースコードを生成するプログラミングのことです。メタプログラミングによって生成したソースコードは、eval関数で実行することができます。 メタプログラミングとは、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。 メタプログラミング - Wikipedia だから、eval関数は、手段であり、メタプログラミングそのものではない。これは弾さんが指摘してますね。 evalだけがメタプログラミングの技法ではないし、またevalはその威力ゆえ最後の選択肢とすべきだ。 弾さんのパフォーマンスの指摘に対して、miyagawaさんが、「必ずしもevalが遅いとは限らない」と指摘してますね。 メタプログラミングとevalのベンチマーク - Bulknews::Subt

    メタプログラミングの光と影 - ひがやすを技術ブログ
    terazzo
    terazzo 2009/02/09
    S2自体がメタプログラミングの塊だと思う(AutoRegisterとかCustomizerとか。)/S2Daoは使う側がメタプログラミングし易くするものではないのでイメージわき難いかも。