何か着ていればいいよ

ソフトウェア技術者の日常や技術の話を書こうと思います。

PHPに入門したよ

<注意> 初心者が単に感想を書くだけです。以下読む意味はほとんどありません。

PHPに入門して最近覚えたというか知ったこと。

おまじない

どの入門用ソースをみてもおまじない的なphp用のタグが必要だということ。

<?php
// こんなやつ
?>

本当にこれ要るんだろうか?
なんかものによっては最後の閉じタグ無いやつあったり。
要らなそうとはいえ片方だけ無いのはもっと違和感がある…。

文字列連結(変数連結?)

.(ドット)で連結というのは熱い!C系のほか言語のメソッドチェーンを見慣れているとかなり頭にすっと入らない。
自分の狭い観測範囲では結構独特な気がする。

GCどうなってんの?

簡単なサンプルだけみてるとすぐグローバル変数になってしまいそうだし、クラスレスなプログラミングができそうだけどGCどうなってるんだろうなー?
参照カウンタっぽいのも本で見たのだけど循環参照はどうなるのかとか色々気になるけど夜はぐっすり眠れます。

以上、PHPUnitが動いたら満足しちゃった系の入門者の雑な感想でした。
おわり

Seasarのサポートはあと1年!繰り返すSeasarはあと一年で終わる!#seasarcon

ちょっと、自分的に衝撃を受けたのでそんな題名にしました。
本日はSeasar Conference 2015に参加してきました。

event.seasarfoundation.org

最近は、あまり比嘉さんの新規昨日開発停止宣言もあり、大きな動きもなかった*1Seasar界隈ですが久しぶりのSeasar Conferenceだったので開発再開か?なんて淡い期待を抱いてワクワクしながら会場に向かいました。*2

そして、最初のKeynoteで比嘉さんのSeasar終了宣言につながるわけです。

というわけで、本来はSeasar Conferenceの発表内容をブログに書きたかったのですが現時点で自分がわかっている範囲のSeasar関連プロダクトのいく末についてここでは書こうと思います。

Seasar2関連プロダクトのサポート終了について

比嘉さんの話では来年の今日。つまり2016/9/26をもってSeasarのサポートを終了するとのことでした。
これは具体的には今まで新規機能の開発は凍結したものの、バグフィクスや問い合わせへの応答はメンテナーのみなさんが続けていたのが終了するということだと思います。
また、サポートが終了すると思われるのは以下のプロダクトです。

  • Sesar2
    • S2Framework
    • S2Extention
    • S2Tiger
    • S2Dao
    • S2JDBC(これは不明)

また、派生プロダクトやSeasar Foundationの他のサブプロジェクトについては不明です。 ただ、一つだけ明確になっているものがありました。

DBFluteは開発が(サポートも?)続く

開発者の@jfluteさんが本日の登壇者だったこともあり明確に語っておりました。
そもそも、DBFluteはすでにSeasarのプロダクトではなくなっているそうです。
また、同時に@jfluteさんが責任者であるSeasar.Netについても終わらない点を語っておりました。*3

Seasarの今後について

DBFluteSeasar.Netを除くほとんどのSeasar関連プロジェクトは終息に向かうと思います。
これはある意味現状の追認というか比嘉さんなりのケジメの宣言だったように自分には思えました。
ただ、SeasarOSSです。
さまざまなforkがこれから作られのではないかと個人的には思いますし、最後に行われたLT大会ではそういうことが語られておりました。

個人的には参加する前に抱いていた淡い希望とは真逆の結果になったわけですが、ある意味踏ん切りがついたというかSeasarに少しでも関わったことがある人間が新しい道に踏み出すきっかけになったのではないかと思います。

以上Seasarの今後についてのまとめでした。
認識違い等ありましたら申し訳有りません。

最後にSeasar2のコミッタのみなさま、Seasar Conferenceを開いてくれたみなさま、本当にありがとうございました。
お疲れ様でした!

*1:というか動きを観測していなかったのでそう自分には思えた。

*2:開発再開なら個人的にはもっとコミュニティに貢献したいとかそんなこともこの時は思っていたんだけど…

*3:そもそもSeasar.Netはサポートするとも言ってないので始まってないとかそういう話をされておりました。

Webアプリケーションやらかし集(その1)

Webアプリケーションの開発に関連していままで見たことあるやつや、やってしまったことがあるやらかし集。
アンチパターンと言っても良いと思う…。

というわけで、尊敬すべき愛読書"SQLアンチパターン"の記法に沿って解説していみます。

SQLアンチパターン

SQLアンチパターン

SQLアンチパターンでは対象のアンチパターンを以下の項目に分けて詳述しています。

[やらかし] upload, download 時にサーバーサイドのファイルシステム上にファイルを保存

本家アンチパターンのようにイカした名前がつけられない・・・。

目的

Webアプリケーションでファイルのアップロード処理やダウンロード処理を実装する

アンチパターン

upload, download 時にサーバーサイドのファイルシステム上に一旦ファイルを保存し、その後処理を継続する。
たとえばアップロード時ならば、アップロードファイルを一旦ファイルとして保存してからそのファイルをDBに格納する。
ダウンロードの場合はDBから取得したファイルを一旦ファイルに保存してからダウンロード処理に渡す。

アンチパターンの見つけ方

Webサーバーを運用続けて停止開始を繰り返すと特定のディレクトリにゴミがたまるという苦情を受ける。
あるいは、時々アップロードやダウンロードに失敗するという不具合報告を受ける。

アンチパターンを用いても良い場合

このアンチパターンを用いても良い場合が果たしてあるのか?よっぽど限定的な場面や要件だと思う・・・。*1

解決策

個人的にはメモリ上からstreamで返すような形が良いのではないかと思うのだけど、よく見かけるこのパターン
いくつか問題がある上にメリットらしいメリットがほとんど思い浮かばない。*2
ちなみに自分に思い浮かぶ問題点

  1. ディスクIOが挟まるのでレイテンシに負のインパクトがある
  2. ディレクトリ構成とファイル名のつけ方次第だがファイルがかぶる可能性がある
  3. Webサーバーの停止タイミングによってはサーバー上にゴミが残る上、それがゴミかどうか認識すしづらい。

うーん。 でも、同じ人が何度もやるとかそういうわけではなく時期も場所も人も異なる幾つかの現場で見たことがあるんだな…。
もしかして人は通常この実装をやりたくなるなんか心理的な要因があったりするのかも…。
真面目に考えるとクラサバ系からWebアプリ作るようになって日が浅い不慣れなひとがやりがちなパターンなのかなぁ?

*1:単純に自分には分からない。想像力不足。

*2:あるなら教えて欲しい。少なくとも以前こういう実装をしていた当人たちからは特段メリットを聞き出せなかったし、自分には分からない。

WindowsのTerminalはConEmuがオススメだよ

最近使っているterminalについて書いておきます。

結論

最初に結論 ConEmuが良いよ。

conemu.github.io

前提条件

仕事ではWindowsで作業しています。
なのでWindowsでの話。

自分の過去のterminal遍歴はこんな感じ

  1. コマンドプロンプト
  2. Cygwin
  3. Windows Power Shell
  4. Git Bash
  5. ConEmu <- いまここ

経緯

たいした話ではないけど経緯も書いておく。 自分はこの夏に転職したんだけどその前の何ヶ月か無職で過ごしていました。
その間は個人のMac でコード書いたりなんやかやしていたんですが、前職でWindowsコマンドプロンプトPowerShellしか知らなかった自分にとっては衝撃的に使いやすいMacのterminalに超ご機嫌だったんですね。
で、目出度く勤め始めたのは良いのですが、またWindowsに戻ってコマンドプロンプトPowerShellの見辛いこと…。

色はチカチカ、文字はギザギザ、タブで複数出せないしイライラが募ります。
そんな時に出会ったのがConEmuというわけ。
Console2もなかなか良いという話も聞くけど試してないので評価できず。 先に試したConEmuで今の所満足している状態。

ConEmuの特徴

見た目

Windowsの他のTerminaと異なり色がきれいで文字もアンチエイリアシングが効いており非常に見やすい。
ここがかなり大きなポイント。
UXってやつですかね?

https://conemu.github.io/img/ConEmu-Maximus5.png

操作性

タブで複数のterminalを立ち上げることができるところが良い!
Macのterminalで慣れるとタブがないなんて耐えられなかった。
これもUX?
自分はUXの部分に惹かれてこのツールを選んだみたいですね。
こうやって書いてみて気づいた。

設定

設定というかサブツールというかでコンテキストメニューから開くことができる。
これは昔はWindows XPのころWindows XP Power Toyっていうツールでやっていた"Opne Command Window Here"の頃から必須機能
Windows 7になってOS標準の機能(Shift + 右クリック)になったけど、CygWinはこれが簡単にできずにすぐやめた。*1
で、ConEmuはインストール時点ではできないが、設定からConEmu Hereをregisterすると出来る。*2
これは良いね。いちいちregisterしないでもインストールで出来ても良いくらいだ。

難点

設定が柔軟というか非常に項目が多く、何が何だか分からない。
とはいえ、デフォルトでも見た目はきれいだしタブも効くんで十分っていえば十分。(デフォだと右クリックのコンテキストメニューには出ないけど)

正直、設定項目が多すぎて「うっ・・・。」ってなってそっと閉じるタイプのやつ。 https://conemu.github.io/img/Settings-Main.png

ただ、相対的にUXの部分で圧倒的に他のツールより良いのでTerminalにはConEmuがオススメだよ!

*1:見た目みちょっと馴染めなかった

*2:多分レジストリを書き換えてるんだと思う。

InfoQ(英語)で良書と出会える

エンジニアにおなじみのInfoQ*1
この英語版のサイトでは電子書籍を発行しているのですが*2、これがなかなかの良書ぞろいだと自分は思っています。

先日はこちらを手に入れずっと読んでおりまする。

www.infoq.com

形式も書籍によりますが、PDF, ePub, mobiと取り揃っていてKindleユーザーとしては非常にフレンドリー。 内容もかなり濃くて読み応えがあります。
というわけで、最近はそんなことばかりつぶやいています。

でも、自分の英語力ではなかなか厳しくも楽しい時間です。 これからも、色々読んでいくつもり。

*1:同名の偽物といってしまっては失礼ですが、名前が一緒でGoogleの検索では先頭にくるアンケートサイトが非常に紛らわしくて最近困っています。

*2:日本語版のInfoQも発行してくれていますが、3年に1冊くらいでいかんせん数が少ない…。

個人の成功体験と失敗体験

なんかそれっぽいことを書いてみたくなって書いていますが、基本的にはクソポエムです。

社会人の仕事上の成功と失敗について個人の経験はどう関わる?って部分で最近思っていること。

前段

自分は社会人経験が12年ちょっとしかありませんが、いっぱいの失敗といえる苦い経験と少しだけの成功を味わってきました。
また、人生の先輩方の経験談を聞く機会にも少なからず遭遇し、それを他山の石にしたり心の拠り所にしたりしながら仕事をしてきたわけです。 そして、ひとつの確信めいた論理にたどり着いたかなと。*1そういった今の考えを残しておきます。
それは、個人の成功体験はほとんど当てにならないが失敗体験は同じ失敗を防ぐ程度には役立つということです。

そのような考えに至った経緯と理由を以下に説明します。

成功体験について

個人の成功体験は自分のものであれ、他人のものであれ様々な要因が絡み合って結果として成功となっており比較的粒度の大きな経験といえるのではないかと思います。*2
つまり、成功体験を生かそうとした場合、先に成功をもたらした多くの要因を同じように揃える必要があるということです。 実際、前回うまくいったから今回もうまくいくといったことはほとんどなく逆に手痛いしっぺ返しを食うことが多かったという"失敗経験"を結局招いてしまうという感じです。

失敗体験について

成功体験と比して失敗体験は比較的粒度が小さく、かつその要因を特に仕事の上で発生した失敗では事後分析する機会があったりします。 そのため、失敗へ至った経緯や原因の分析がしやすく生かしやすいのではないかという結論に至ったのです。

まとめ

人は*3成功体験を誇らしく語ってみたり、他人の成功体験をありがたがって拝聴したりするものです。*4
しかし本当に価値がある、あるいは活かしやすいのは失敗体験の方なのではないかと考えられるよ。ということです。

*1:ただし、科学的ではありません。自分は怠惰なので数値をちゃんと残していなかったので数字の裏付けがないのです。

*2:ただし、小さい成功体験の積み重ねでひとつの成果を出したとかそういう場合は当てはまらないとも思います。

*3:おっさんになってくると特に

*4:人はとか主語を大きくしていますが、ありてい言えば自分がそういう人間です。

表参道.rb #4に参加したよ #omotesandorb

omotesandorb.connpass.com

ちょっと、時間が経ってしまったのですが上記のイベントへ行ってきました。

目的

Rubyエンジニアとして成長したいが実務では触らないので、勉強会で刺激を受けたい。
個人でやるにも限界が…。
ということで第二回から一回飛んでの参加です。*1

感想

まず、会場となったクラウドワークスさん。
非常に綺麗な会社で、立地的にもおしゃれ。このような場を提供いただきありがとうございます。
渋谷の街行く人にビビりながら歩いてたどり着きました。

ちょっとギリギリすぎて、Wifiが繋がらず「あれ?あれ?」とかやっている間にどんどん進行していきました。 wifi気にしすぎて、せっかくの発表が上の空になってしまって、勿体無いことをしてしまった…。

全体としては、自分はRuby/Railsでプロダクトを作ってないので細かい空気感は分からないのですが、メタな部分ではあるあるな内容でした。
なんというか、Rubyを書いている人間は結構幸せそうにプログラミングしてるな。とか勝手に印象で思っていたのですが、*2プログラマーとしての辛みというか闇の部分はどこでも変わらないんだなぁという変な安心を覚えたのが印象的でした。

ただ、それでもこの勉強会は2回目ですが、Rubyコミュニティの特徴なのか、この勉強会の特徴なのか非常にポジティブで向上心に飛んだ参加者、発表者で健全なコミュニティだと思います。
自分はRuby関連技術でプロダクトを作ってないという引け目であまり積極的に何かしたわけではないのですが、何かこのコミュニティのために出来たらなぁとぼんやり考えている。
そんな感じです。*3

*1:前回は気づくのが遅れて抽選漏れ

*2:その印象とは異なったのは確かだけど、が幸せそうなという部分が間違ってたかどうかはよくわからない・・・。

*3:ぶっちゃけ、若くて勢いのある主要メンバーの皆さんにこんなソルジャーあがりおっさんの助けはいらないかもしれないけどね。