はてなキーワード: Seasarとは
あの発表の場にいたわけだけど、感想はよくわからないポエムな理由だ、でした。
今日の彼のSeasar2打ち切り宣言ブログ記事も読んだがやっぱりポエムだった。
あの発想は正直私にはよくわからないです。飽きたなら飽きたと言えばいいのに。
つうか、開発を打ち切ったあの時に言えばよかったんじゃないですかね。
かっこいいのかもしれませんが半分言い訳が入っているようにも思えます。
あのフレームワークには大変お世話になっているので、
とりあえずは本当にありがとうございます。
ま、でもすぐは消えないでしょ。この国ガラパゴスだし。
そもそも日本はまだStruts1.2.9ガチで新規開発に使ってるSIerがいたりするくらいだし。
来年で打ち切られたとして、確かに今後新規開発に使う人はほぼいなくなるだろうけど、
それでも5年いや10年以上既存アプリのメンテとかで普通に使ってるでしょ。どうせ。
フレームワークのフの字もない時代に作られたサーブレットだけで書かれた昔のゴミアプリを書き換えたいと
5年以上主張してても顧客から改修費用もらえない(後そこにリソース取れない)
という理由で書き換えられない人も世の中にはいるわけですよ(私だけど)。
もちろん最終的にはSeasarが緩やかに消えていくのは確かだろうけど皆さんが思ってるほど早くはないんじゃないですかね。
で、とりあえず今うちの会社は現在(かなり)Seasarの資産を使って作ったアプリが稼働中なので
いきなり移行する気もないわけです(つかそんなリソースない)
そもそも確かにメーリングリスト見て参考にしたところは多少あるけど、
サポート打ち切られたからってああそうですかでしかないとも言う。
どうせ何かあったら最初からこっちでメンテするしかないんですよ。
ぶっちゃけ今もそうですし結局当面はなんも変わらないわけです。
(あ、でもメーリングリストのバックアップは消えないうちに全部取っておこうかな)
フリーの環境を使わせていただくというのは究極的にはそういうことなんだと思っています。
それは多分Springに移行してもそう変わらない(最新の機能は随時提供されるだろうけど)
とは言え、新規に今後Seasar2を使うのがためらわれる状態なのは確かなので、
今後の新規開発案件では多分Springに移行することになるでしょう。
当日SpringBootのセッションも聞いたので日曜さらっと動かしてみてます。(ほんとにさらっとですが)
ひと月も触ってみればある程度Seasar2と変わらない程度で代替としては使えそうだとは感じてます。
バージョン2.4くらいの時に少しSpring触っていまいちとっつけずに捨てていたけど、
当時から見て大分とっつきやすくなってるんだなとは思いましたね。
(未だにSeasar使ってる化石人間の私としては今のSpringならPlayよりとっつきやすそう。JavaEEは論外)
でも正直あれがSeasar2より優れているのかと言うとぶっちゃけよくわからないけれども。
せめてDB周りがS2JDBCくらい使いやすければなー。来週HibernateやDBFluteの連携を試しますかね。
せっかく(外的要因とはいえ)変えるのだからよりやりやすい方法を探したいですね。
ま、もう少し研究して1か月くらいしたら新規案件はこっちでやるめどがつくかもですね。
(既存を移行するかはわからない(受託開発は移行を提案しても金がもらえないと…))
とりあえず、
1、5~10年計画で徐々にSeasar2フェードアウトするとは思うけど、完全卒業は多分しない(苦笑)
2、とりあえず、新規の開発はSpringで今後やるけど既存のアプリをどうするかは目途つけてない。変更のないアプリとかそのままずっと動き続ける可能性大(大苦笑)
http://d.hatena.ne.jp/higayasuo/20150827/1440647815
Seasarの名前を語って、Seasarとは全く無関係なことを、ひがやすをはこんなに攻めてますってカンファレンスで宣伝するの?本当ダサい。
どうせこのダンスもそのうち放り出して、また適当に何か始めて、ひがやすをはこんなに攻めてますとか言うんでしょ?
少しでも期待してた俺がバカだったわ。
本当がっかりだよ。
今回のSeasarカンファレンスは、Seasarのカンファレンスどころか、同窓会ですらなくて、Seasarはこれで名実ともにお終いですってのを知らせるための会じゃねーか。
こういう、一見正反対の記事が同時期に出てくるのはやはり面白い。
前者は、オープンイノベーションにより年々進化が加速するソフトウェアの世界で、停滞を選んだ技術に何が起こるかを象徴していて非常に興味深い。
Seasar2が冒険しないことによって、適切な大きさの問題は生まれなくなり、開発者が離れ、Seasar関連プロダクトが生まれなくなり、Seasarユーザも離れていく。使われないSeasarからさらに開発者が離れていく。
なぜ人はオープンソースプロジェクトに集まるか。そこに解決すべき課題があるからだろう。解決すべき課題が無ければ、人はプロジェクトから離れていく。
では、やはりカネでプロジェクトの求心力を維持できるプロプライエタリこそ一番信頼できる、無責任なオープンソースに依存するべきではないということになるだろうか? しかし、ここ十年のソフトウェア技術の進化の大半が、プロプライエタリではなくオープンソースプロジェクトの成果であることを考えれば、もはやそのような選択肢はないだろう。
そして、単に人が居なくなるだけなら良いが、問題は、人が居なくなり進化が止まった技術は陳腐化して価値を失うことだ。
よく、「流行の技術が出てくるたびに次々と乗り換えるのは軽薄だ。枯れた技術こそ最後に生き残る」みたいなことを言いたがる人がいる。けど、一見、次々に現れるバズワードで似たようなバカ騒ぎを繰り返しているように見えても、なんだかんだで、一周した時点で世の中は前に進んでいるし、そのサイクルは年を追うごとに短くなっている。
で、それを象徴しているのが後者の記事だと思う。つまり、「枯れた技術は堅実」とか言って余裕ぶっていると、XaaSによって仕事そのものが消滅するケースが増えている。あるいは、そう簡単に自動化できない仕事を請けるにせよ、要求される技術水準は確実に上がってしまっている。
でだ…これらの台頭もあって、いわゆるインフラを全部外部まかせにすることになったとする。その場合、Webサービスの運用であったり足回りの整備であったりツール開発であったりを担当しているおれの主業務はほとんど奪われることになる。
昔から「技術者たるもの勉強し続けなければならない」みたいなことは言われていたが、今や、その言葉が意味するシビアさは格段に上がっている。泳ぎ続けなければ自身の生命を保てないマグロのように、先端技術へのキャッチアップを続けられない者は、速やかに技術者生命を失うことになるだろう。
我々の業界は、すでにオープンイノベーションを核とする過酷なエコシステムに組み込まれてしまっている。もはや、逃れることはできない。
増田でこんなこと聞いていいのかわからないけど、誰かわかる人教えて欲しい。
seasarの公式サイトにある、s2jdbcのチュートリアルを試してみたんだけど、entityの生成でいきなり躓いてしまった。
$ ant -f s2jdbc-gen-build.xml gen-entity Buildfile: /Users/hoge/dev/s2jdbc-tutorial/s2jdbc-gen-build.xml gen-entity: [gen-entity] Java Result: 1 BUILD FAILED /Users/hoge/dev/s2jdbc-tutorial/s2jdbc-gen-build.xml:46: Exception in thread "main" java.lang.NoClassDefFoundError: Caused by: java.lang.ClassNotFoundException: at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
動かしている環境は
- java version "1.6.0_29"
- Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527)
- Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
s2jdbc-gen-build.xml:46 っていうのが、classpathに関する記述の箇所なので、動かすのに必要なjarが読み込まれていないからなんだろうなぁ、って思ってるんだけど。
同じ現象で躓いて、うまく解決できた人がいたら、教えて欲しい。
38 <target name="gen-entity"> 39 <gen-entity 40 rootpackagename="${rootpackagename}" 41 entitypackagename="${entitypackagename}" 42 javafiledestdir="${javafiledestdir}" 43 javafileencoding="${javafileencoding}" 44 env="${env}" 45 jdbcmanagername="${jdbcmanagername}" 46 classpathref="classpath"> 47 <jvmarg value="${vmarg.encoding}"/>
今更だが、はてブで http://www.atmarkit.co.jp/fjava/column/andoh/andoh53.html が人気だったのでまとめてみた。(末尾Eは英語)
まずはその記事にあった、16あるけど購読するべき15の開発者ブログ一覧(一部追加あり)
で、偏ってるんじゃないのとか、あれないよね、みたいなのとか、その時の http://reader.livedoor.com/ranking/hot.html とかから集めた、14しかないけど購読するべき15の開発者ブログ
あと、企業ブログじゃないけど、 http://reader.livedoor.com/ranking/subscribers.html から、これも購読するべき15の開発者ブログ
さらに、 http://gihyo.jp/dev/serial/01/alpha-geek にある、もっと購読するべき15の開発者ブログ
まだまだ、 http://geekdb.jp/ とか、 http://jibun.atmarkit.co.jp/lcom01/rensai/comrade01/comrade01.html とか、 http://bizmakoto.jp/bizid/kw/newgenchronicle.html とか、 http://web-engineer.buyuden.net/buyuden/ とか、これでも購読するべき30の開発者ブログ
あとは個人色強め、社会派、学者派、ビジネス派もある、これは好きにすべき15の非開発者ブログ
これ無いとかこれ違うとかあったらよろしく
ちまたじゃ、みんなフレームワークのことを当たり前のように論じててすごいなーと思うんだ。尊敬するぜ。だから、ミーハーなオレもフレームワークが気になって仕方ない!
だから、30歳近いプログラマのオレがプライドを捨てて優秀なハテナ住人に聞くが、
だが、そこまでだ。
Javaだと、Struts、Spring、Seasar、Wicket等をよく目にするけどよぉ、ドキュメントの量どんだけだよ。
入門ドキュメントだけ見ると簡単そうに思えるけど、仕事で使えるレベルまで理解が深まるまでどんだけ時間かかんだよ。
起動遅い、動き遅い、定型パターンを外れたら、やる方法が見つかんねー。
で、苦労して作ってもよぉ、結局は、HTMLがピロッって出力されるだけで、見てくれが変わるわけでもなく、全然努力が報われん。
これって、どゆこと?
Servlet+JSP+簡単なライブラリ 程度で十分じゃね?
PHPだと、Zend Framework、CakePHP、symfony等をよく目にするけどよぉ、ドキュメントの量どんだけだよ。
入門ドキュメントだけ見ると簡単そうに思えるけど、仕事で使えるレベルまで理解が深まるまでどんだけ時間かかんだよ。
デバッガの使い方分かってねーオレが悪いとは思うんだが、開発効率悪いぞ。(フレームワーク以前の話だが…)
統合開発環境何使えばいいの?わざわざクラス名や関数名覚えてられんぞ。(フレームワーク以前の話だが…)
何で、拡張子変えたがる。何で、変なテンプレートエンジン使う。エディタで認識されねーから開発効率悪いじゃねーか。デザイナがコーディングした分かりくいHTMLコードをよ、何で編集してるわけ?
ついでに聞くけどよぉ、ORマッピングライブラリって使えるの?
確かに書くコード量は少なくなっていいんだがよぉ、目に見えて遅いと思うのはオレだけか?
ディスクアクセスは明らかにボトルネックになるのに、巨大なライブラリのコードを毎回走らせるんだよ。普通のサーバじゃ余裕なの?
話題がそれたが、
実は、みんな、上司や先輩に言われて使ってるだけなんじゃないの?
ハテナ住人の優秀なエンジニアは、どんな目的でフレームワーク使ってんだ?教えて偉い人!
ま、誰も見ないんだろうけど。
東京以外でもひがやすを飲み会をやってほしいという要望にこたえて、第二回ひがやすを飲み会は、11月2日(日曜日)に仙台で行います。飲み会の前に勉強会もやりまーす。
http://d.hatena.ne.jp/higayasuo/20081020/1224492595
求めてませんからホント。
大体、地方に居るコーダーに
あなたが話をして何になるの?
明らかにアピールする相手を間違っているのでは?
こんな事を繰り返していても
だれも聞いて無いかも知れないけど
泊まる場所…?しらない。
http://d.hatena.ne.jp/happy_ryo/20081020#1224495115
こんな風に、どうでも良いことで
トラックバック飛ばしてくるような
私には、こういう信者達が
業界を変える力になるとは思えない。
実際、彼や他の参加する信者達が
ほんの少しでも変わった事が出来るとは思わないでしょ?
持ち上げて欲しいだけで無いのならば
相手を変えるべきじゃない?
[参考文献]
S2 は、.dicon ファイルで定義をだいぶ簡略化できる。パフォーマンスはどうなんだろう。誰かテストしてくれいw
app.dicon
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd">
<components namespace="client">
<include path="hello.dicon" />
<component class="org.seasar.guice.Client" />
</components>
hello.dicon
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components initializeOnCreate="false">
<component class="org.seasar.guice.HelloServiceImpl" />
</components>
HelloService.java、HelloServiceImpl.java は、上記 ITPro と内容が同じなので省略。
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
public class Module extends AbstractModule {
S2Container container = null;
public Module(S2Container container){
this.container = container;
}
@Override
protected void configure() {
bind(S2ContainerFactory.class).annotatedWith(Names.named(container.getPath()));
bind(Client.class).toInstance(SingletonS2Container.getComponent(Client.class));
}
}
private HelloService helloService = null;
public void setHelloService(HelloService helloService) {
this.helloService = helloService;
}
public void execute() {
helloService.sayHello();
}
}
Main.java
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class Main {
private static final String PATH = ".\\app.dicon";
public static void main(String[] args) {
SingletonS2ContainerFactory.setConfigPath(PATH);
SingletonS2ContainerFactory.init();
S2Container container = SingletonS2ContainerFactory.getContainer();
Module module = new Module(container);
Injector injector = Guice.createInjector(module);
Client client = injector.getInstance(Client.class);
client.execute();
}
}
実行結果
java -cp ?? org.seasar.guice.Main
2008/05/13 21:19:22 org.seasar.framework.log.Logger info
情報: Running on [ENV]product, [DEPLOY MODE]Normal Mode
Hello, world!