2010年12月29日水曜日

年末も差し迫った中でADO?にはまってみました。「現在の Recordset は更新をサポートしていません。」

変なところではまってしまった・・・
こんなの知らなかったんだけど。

VB.netで

現在の Recordset は更新をサポートしていません。プロバイダか、選択されたロックタイプの限界の可能性があります。

と言われて、調べてたんだけどわからん。
ロジックはどうなっているのかというと、

dim sWkCd as string = "01"
dim strSQL as string
dim objRS as adodb.recordset 

コネクションうんちゃら・・・・やってSQLにSQLを書いて。
objRS.Open(strSQL, objCon, 3)



ここまでは問題なし。 objRS.Fields("フィード").Valueの値もちゃんと取れている。

dim l_HP = New cls_Holiday(sWkCd, objRS.Fields("フィード").Value)

ちなみに、 cls_Holidayでは新たなデータを取得して、l_HPのプロパティに検索結果をセット。
んだけど、なぜか落ちる!

で、結局、

dim_HP = New cls_Holiday(sWkCd, objRS.Fields("フィード").Value)
この赤字を別の領域に退避してやってみたらすんなりといきやんした。

dim swk as string

swk =objRS.Fields("フィード").Value
dim l_HP = New cls_Holiday(sWkCd, swk )

ってことは、と思ってcls_Holidayのパラメータを確認したら・・・・

ByRefで定義・・・・

ウップス・・・・

2010年12月24日金曜日

年末年始休業期間のお知らせ

当社の年末年始の休業期間は下記の通りです。

〔年末年始休業期間〕12月28日(火)~1月5日(水)

新年は1月6日(木)9:30より営業開始となります。
休業期間中にご不明な点などございました際には
メールにてご連絡くださいますと幸いです。





2010年12月10日金曜日

BugLog.me公開!

こんにちは。そろそろクリスマスです。イブの予定は埋まりましたか?
ビジネスサービス事業部隊長です。

さて、以前から作成していたインシデント管理サービスBuglogがいよいよ公開されましたのでお知らせします。

といっても紹介ページとかなんも用意してないのですが・・・

Buglog
は、システムやWebサイトの構築における障害情報、改善要望、問合せ等のインシデントをネット上で共有するサービスです。

[多彩な集計]
インシデントについて、プロジェクト毎に集計結果をグラフで表示します。
バグ収束率の報告書類って作るの大変なんですよね!
あと、メンバー毎の対応状況や報告者の確認状況も一目瞭然。
アサインされまくってパンクしちゃってるのにリーダーが気づかない。よくあります。身に覚えも・・・

[プロジェクトメンバー]
インシデントを報告するにあたって、誰をアサインするのか、といった所って管理大変ですよね。
「あれどうなった?」
「あれってなんすか?」
「バグだよ。致命的なやつあったじゃん」
「えー!聞いてませんよ!」
「こないだ君に頼んだよ!」
「いやいや、聞いてませんって!」
みたいな下り。火吹くとよく聞きますよね。聞きませんかそうですか。


BugLogでは、インシデント毎にアサインするメンバーを決定できますので、
こんなやりとりは減るんじゃないでしょうか!
また、プロジェクト毎にアサインするメンバーを設定できるので、閲覧対象者のフィルタリングが容易です!
見られたくないプロジェクトにはアサインしなきゃOK。

[通知]
アサインされると、対象メンバーにはインシデントの更新情報がメールで通知されます。
アサインされてなくても、インシデント毎に購読すればメール受信できちゃいます!

[添付ファイル]
インシデントにはファイルを添付する事ができますので、情報はweb、ファイルはローカル、といったような情報の分断が起こりません。

[データのダウンロード]
事象をドキュメントにしてユーザーに提出!なんて事もよくありますね。
BugLogでは、大体のデータはcsv形式でダウンロードが可能です!


通常こういった事象管理は、現場ごとにExcelシートがあったりなかったり(どっちだよ)するんですが、
やはり問題になるのは共有だったりアクセス制限だったり添付ファイルの管理方法だったり・・・

うちの開発メンバーもExcelの方がいいって人が多かったです。
そこで、Buglogは、いかにしてExcelに勝つか、というコンセプトで企画されています。


是非一度お試しください。ご利用は無料です。





ご利用はネットにつながってればOKです。

ipadやiphoneからの利用も可能です!
※但し、ファイルのアップロードはできません


但し、IE6以前のブラウザですと表示が乱れます。
あと、現在Firefoxで一部機能が動作しない事象が報告されています。




BugLogは今後もどんどん進化していきます。ご要望やバグ報告、大歓迎です!


新規のご登録は下記からどうぞ!

BugLog Me !

2010年12月7日火曜日

Access mdbでのSQLチューニング

こんばんは。(略)部隊長です。

早師走ですね。当部隊もご多分に漏れず、年末進行中です。
クリスマス以降は仕事しません!



今回はまたWindowsAzureから遠ざかり、
AccessMdbをバックエンドに使ったシステムでパフォーマンス悪いぞ!
というご指摘がありまして、
それの対応で へー と思った事があったので書いておきます。


今更mdb?、とかいわない。実際多いでしょ。


【今回の要件】
1.メインテーブル(物件)に、サブテーブル(価格)がぶら下がっている
2.価格は逐次更新され、更新日とともに追加登録される。
3.一覧画面では、最新の価格が取りたい
4.価格テーブルには、価格の他、価格登録時のメモなんかもあり、一緒に取りたい

【改修前のサブクエリ】

SELECT S.物件ID, S.価格ID, S.価格, S.価格設定日, S.お値段メモ
FROM お値段TBL S
WHERE EXISTS (
 SELECT *
 FROM (
  SELECT 物件ID, MAX(価格設定日) as Dt
  FROM お値段TBL
  Group by 物件ID
 ) q
WHERE S.物件ID = q.物件ID
AND S.価格設定日 = q.Dt

サブクエリ内でWhere Exists し、
その中で物件IDでグループした最新価格日を取得しています。
Indexは物件IDだけで、価格設定日には張っていませんでしたが、
これが超遅い。3秒位かかる。

本体はこういうLEFT JOINのサブクエリが4つほどあり、
全部合わせると10秒超える勢い。
全く以て実用に耐え得る性能じゃない。


で、色々試行錯誤した結果、一瞬で結果が返るのがこれ(found by シャチョー)


【改修後のサブクエリ】

SELECT S.物件ID, S.価格ID, S.価格, S.価格設定日, S.お値段メモ 
FROM (
お値段TBL S
INNER JOIN (
 SELECT 物件ID, MAX(価格設定日) as Dt 
 FROM お値段TBL 
 Group By 物件ID
) as sp
ON S.物件ID = sp.物件ID AND S.価格設定日 = sp.Dt)
) 

これで一瞬です。本体のWHERE EXISTSを全てINNER JOINに変更したら、
本体自体一瞬で結果が返るようになりました。


私今まで内部結合で絞り込みをするのはダメかと思っておりましたが・・・
大体なぜこれで速いのか、改善前はなぜ遅いのか、追及してまいりたいと思います。

2010年12月3日金曜日

レンタルサーバーでBuglogを

インフルエンザの注射を打ってきました。

こんにちは。ビジネスサービス事業部隊長です。
でも重症化予防ワクチンだそうで、罹らないってわけではないそうです。なんか残念・・・

さて、AzureのBlobにアレやコレを保存して幸せになる方法を書く予定でしたが、
色々と重なってしまい追及できておりません。でもやります。近々。

WindowsAzureのアプリケーションは、「http://アプリ名.cloudapp.net/」というURLがあてがわれます。
これだとちょっと長いしドメインも欲しいので、レンタルサーバーを借りる事にしました。

レンサバに入口だけ作ってAzureに誘導、でもいいのですが、
どうせなら動かしてしまえっつことで、
SQLServer2008R2が利用できる且つ安い所を探して見つけたのがここ
月735円でSQLServerも10G。ヤスイネー。

実はちょっと前に別のレンサバに載せようとしたんです。Buglog。
しかし、ユーザー定義テーブル型を使ってたおかげでSQLServer2005には乗らず、
別の方法を考えたもののデータ回りとストアド全修正になるという苦行しか思い浮かばなかったのでそこのレンサバは1か月分だけお支払して撤退です。
社長すみませんm(__)m

話が反れました。
で、今回は2008R2ですからユーザー定義テーブル型もばっちりです。
ローカル環境からも問題なくテスト完了、さあデプロイだ!


















System.Web.DataVisualization? デジャヴ?

で、先方にお問い合わせしました所、mschartは現状使えませんと。
インストールは会議にかけねばならんそうでして、結果は1週間以内にわかるようです。

また使えんかったらどうしましょうかね。
チャート出すページだけAzureにすっか。


2010年11月4日木曜日

VS2003のデバッグができなかったけど、できるようになった

VS2003のWEBシステムをメンテをするのに、なぜかデバッグができない!
しばらく、なぜかなやんでいたんだけど、隊長が治癒方法を発見。

方法は・・・・
レジストリエディタで、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Mainで右クリックします。
「新規」にポイントし、DWORD 値(D)をクリックします。
すると、「新しい値 #1」として新たにレジストリが作成されるので、その名前を「TabProcGrowth」にします。
んで、Windowsを再起動するそうな。

で、見事解決!
ちなみに、環境はWinXP SP3 /IE8.0 /VS2003 /.NetFramework 1.1,2.0,3.5が入っている環境です。

2010年11月1日月曜日

AzureでのBinaryデータの保存先

こんにちは。ビジネスサービス事業部隊長です。
最近寒すぎます。雨も多くてチャリ通勤できません。

さて、BugLogでは情報に画像やファイルを添付する事ができます。
保存先はSQLServerのvarbinaryのカラムに入れていたのですが、
SQLAzureのWebEditionではSQLServerは1Gか5Gです。
現在250KBまでの制限にしてはいますが、最悪4000枚程度の画像で1Gになってしまいます。

BusinessEditionにすれば50Gまで拡張できますが、
CP的によろしくありません。(おおよそ1000円×50=50,000円/月!)

そこでStorageのBlobです。
こっちは全然安い。1Gあたり14.7円/月です。
1T使ってても14,700円です!
IOもSQLAzureより速いんでしょ?

というわけで次回はStorageへのバイナリデータ保存と、
うまい使い方について書きます。


短くてすみません。まだ確立できてないので・・・

2010年10月28日木曜日

vs2003なんだけど

ひょうんなことからvs2003のWebシステムを保守することになったので、社内サーバ(win2k3svrR2)に展開してみたところ、アセンブリがActiveReports.HtmlExport.dllでうんじゃらかんじゃら言われて、アクティブレポートの表示がうまく行かなかった。

別環境(WinXP Pro SP3)にてリビルドしてできた資産を再度展開したら、今度はうまくいった模様。
ちょっと前にやってうまくいかなかったような気がしたんだけど・・・

うん、うまくいった模様。

後日、ウチの技術者が解析して解説してくれるハズ!です。

2010年10月5日火曜日

SQLAzureへの既存DB移行

こんにちは。ビジネスサービス事業部隊長です。
一気に寒くなりましたね。自転車通勤にはいい季節です。

本日は既存SQLServerをSQLAzureへ移行する方法についてです。

まずは、SQLAzureのポータルで移行先のDBを作成します。
createDatabaseポチっと。

こんなポップアップが出るので、DB名、
Specify an Editionは、お試しプランだとwebで1個まで3か月間無料。
Specify the max size は、5Gでもお試し3か月無料なのかな?でも3か月経過後は1Gで900円、5Gで5千円(大体)です。
DB名はアンスコ等の記号が入力できません。
ローカルのDB名でアンスコを使っていた為、クラウド環境とローカル環境でテストの時にいちいちDB名を少し直さなければならなくなりました。めんどくさい。

作り終わると、一覧にDBが追加されてます。

次に開発環境から繋がるように、firewallの設定です。firewallsettingタブから。
開発拠点のIPを許可リストに入れます。

WindowsAzureのサービスから接続するDBの場合は、
allow microsoft services access to this serverのチェックをつけましょう。
参考:http://msdn.microsoft.com/en-us/library/ee621783.aspx

次にローカルDBの準備です。
2008R2であれば、データベースのタスクからスクリプトの生成ができます。
DL:Microsoft SQL Server 2008 R2 RTM - Express with Management Tools



全てのオブジェクトについて、データとスキーマをスクリプト化します。
データベースエンジンの種類に対応したスクリプトには、SQLAzureデータベースを指定します。


スクリプトが出力されれば、データ移行準備が完了です。
2008R2のSSMSであれば、ポータルで確認できる接続文字列で問題なく繋がるはずですので、
スクリプトを実行すればおしまい。


次に、データを移行する際の注意事項です。

1.照合順序
SQLAzureの照合順序は、「SQL_LATIN1_GENERAL_CP1_CI_AS」です。
データベースごとの照合順序設定はできませんので、日本語の列はJapanese_CI_ASでテーブルを作成します。
また、日本語項目はnvarcharを使用し、リテラルにはNプレフィックスを必ずつけます。

2.GETDATE()
WindowsAzureのアプリケーションでも同じですが、現在時刻はUTC時刻です。
日本時間にするにはDATEADD(HOUR,9,GETUTCDATE())というような感じにしなければなりません。


今のところ、SQLAzureを使う上で困難に当たってないです。
SQLAzureは単なるSQLServerのホスティングではない!
とMSがゆってましたけど、どこらへんがすばらしいのかもまだわかっておりません。

2010年9月27日月曜日

WindowsAzureでのMembershipframwork実装

こんにちは。ビジネスサービス事業部隊長です。
今日は、ASP.NETで利用できるMembershipFrameworkの実装方法です。

そもそもASP.NETのメンバシップはSQLServer上で稼働するので、
通常実装するとAPP_DATAにmdfファイルができます。
これはwebconfigのconnectionStringsに対象となるLocalSqlServerを指定できるので、
外のSQLServerにaspnetdbをこさえて実装する事も簡単です。



では、WindowsAzureではどうしたらいいでしょうか。
方法は2通りあります。

1.SQLAzureにDB作成
2.Storageを使う

簡単なのは1.です。
SQLAzureにaspnetdbを作るorインポートして、接続文字列を変えてやれば多分使えちゃうのではないでしょうか?
(すいません。未確認です。)

しかし、WindowsAzureをより深く理解する為、Storageによる実装を選択しました。

・・・といえば聞こえがいいんですけど、本当の理由は、
最初に調べて見つかった情報がStorageを使ってたからです。
SQLAzure使えるなんて気が付かなかったよ・・・


実はStorageによる実装もズルが可能です。
Microsoftからそれ用のライブラリプロジェクトが公開されてるのです。
↓のリンクからダウンロードしましょう
http://code.msdn.microsoft.com/windowsazuresamples
※このページの利用規約は絶対に読ませる気がない。俺はそう思う。

この中の、AspProvidersと、StorageClientのプロジェクトをそれぞれ
自前のプロジェクトに入れて、WEBRoleから参照設定します。以上準備完了。
あとは、webconfigの値を適当にいじるだけです。

但し、サンプルはローカルの仮想環境で実行される設定になっていますので、
そのまま配置しても動きません。
なので以下のポイントを設定しなおすのです。

あ、先にAzure上にStorageを作っておきましょう。
すると、EndPointとAccessKeyが出るのでメモっておくこと。

※塗りつぶしてるところはStorageのアカウント名と、接続文字列です。別にアカウント名は消さなくてもいいような。

EndPointは、
http://アカウント名.blob.core.windows.net/
http://アカウント名.queue.core.windows.net/
http://アカウント名.table.core.windows.net/

の3つ出ますが、今回必要なのはtableです。ここにメンバシップ用のDBが出来るわけです。

まずはweb.configのconfigurationにキーを追加します。
1.membership。変えるところはapplicationName、その他プロパティは運用にあわせて。
2.roleManager。Roleを使用するなら追加。これもap名を。cookieの設定も運用にあわせて。
3.profile。独自に情報を付け足すならこれも。BugLogではユーザーの氏名等を持たせてます。
既存のタグはコメントアウトしておきます。あと、Storageへの接続設定もappsettingsに追加。

次に、Cloudプロジェクトの設定ファイルを正しく書き換え。
内容については詳しい情報がたくさん見つかるので割愛しますが、
ポイントとしてallowInsecureRemoteEndpointsです。
これはデフォルトで""になっているのですが、azureにそのまま配置すると動かないようです。
また、falseにするならEndpointのURLをhttpsに変えるのを忘れずに。

これらの設定で、ASP.NET側の実装をいじることなくメンバシップが利用可能になるはずです。
が、今回利用しているライブラリはあくまでもサンプルというスタンスみたいですので、
中を確認して可能であれば自力で実装した方が安心かもしれません。

2010年9月24日金曜日

WindowsAzureでASP.NETアプリ開発

こんにちは。ビジネスサービス部隊長です。
今日は、実際にWindowsAzureでアプリケーションを開発する上でのポイントを書きます。

開発環境(仮想環境)での作成は簡単です。
新しいプロジェクト→Cloud→WindowsAzureCloudService

で、WebRoleを追加

WebRoleというのが従来のASP.NET部分です。
違う点といえば、自動的にWebRole.cs(C#の場合。vbは.vb)というクラスファイルが自動的に追加されていて、
中を見るとRoleEntryPointを継承しているクラスで、OnStartとRoleEnvironmentChangingという2つのメソッドが予め記載されています。

これはWebRoleが開始された時に、設定ファイルが変更された時のイベントハンドラを追加するのと、
設定ファイルが変更された時にWebRoleを再起動するようにする処理が記載されています。
ログを出力したい場合等は、OnStartメソッドに色々と追記します。
ここらへんは下記の記事が詳しいです。

それ以外は通常のASP.NETと変わりませんので、ASPXを追加して色々開発しましょう。
で、F5押したら仮想環境が起動して、アプリもブラウザで開きます。

開発したアプリは折角ですのでAzureにデプロイしましょう。
DBもStorageも使ってない場合、何もかえずともデプロイは可能です。
ただし、依存するDLLが独自のものであったり、サードパーティ製だったりするものについてはデプロイパッケージへ配置が必要です。

MS謹製であっても、後からインストールが必要なライブラリについては配置する必要があります。
BugLogではグラフをMSChartのSystem.Web.DataVisualization.dllを使用して表示しているのですが、
これも配置が必要でした。
参照設定で.NETのタブにあるからって安心してはいけません。

デプロイしてステータスがReadyになるまで大体10~15分かかるのですが、
DLLが足りなかったり設定ファイルがよろしくなかったりすると、ReadyにならずにStoppingとかStoppedになったりします。
20分超えてもReadyになってなかったら失敗してる可能性大です。
失敗してもリトライしてループするので、そもそも失敗しているかどうかはわかりません。
いたずらに時間を浪費しないためにも、Stoppingとか見えたら配置ファイルを見直しましょう。
発行先のフォルダに「buglog(プロジェクト名).csx」というフォルダが出来ていて、その中にすべての配置されるファイルが入っています。

※こいつらがzipで固まったのが「buglog(プロジェクト名).cspkg」なんだそうですよ。

Staging(テスト用)にデプロイした場合、発行されるURLは一時的なもので、
Azureのアカウントを持ったクライアントからでないとアクセスできません。
StagingからProductionへ移すのは、真ん中にあるswap的なボタンを押せばOKです。


次回はWindowsAzureのStorageを使用して、ASP.NETのForm認証(MemberShip)を実現する方法を書こうと思います。

※追記9/24 18:29※
ProductionへのSwapについて、Productionに配置済みの場合、Stagingの版と入れ替わります。
これは、ProductionとStagingの仮想IPを入れ替える仕組みだからだそうな。
で、EndPointが変わったりするとSwapできませんとDrWatsonに怒られる。
こうゆうときはおとなしくProdctionを削除してからSwapするか、両方消して直にProductionに配置するとかしましょう。





2010年9月22日水曜日

WndowsAzure SignUp&Charge

こんにちは。ビジネスサービス事業部隊長です。
今日はWindowsAzureアカウントの購入と料金についてです。

まず最初の課金プランは、2010年10月末までやっている一定使用料無料のプランです。
http://www.microsoft.com/japan/windowsazure/offers/popup.aspx?lang=ja&locale=ja-JP&offer=MS-AZR-0001P

これはSQLAzureも3か月間は無料らしいので、WindowsAzureがどんなもんか試す人にはうってつけでしょう。
プランを決めたら、下記ページで「購入」をクリックです。
http://www.microsoft.com/japan/windowsazure/offers/

その他MS製品のライセンス管理もそうですが、AzureのアカウントもLiveIDで管理する事になりますので、ここでログインすることになります。
あと、支払はクレジットカードが必要です。

さて、導入プランは一体月幾ら掛かるのでしょうか?
実は当社でもまだ請求が来ていないので、試算してみることにします。

無料分の内訳は下記の通り


  • Windows Azure

    • S サイズのコンピューティング インスタンス 25 時間分
    • 500 MB のストレージ
    • ストレージ トランザクション 10,000 回
  • SQL Azure

    • Web Edition データベース 1 つ (最初の 3 か月間のみ)
  • AppFabric

    • 100,000 回のアクセス コントロール トランザクション
    • サービス バス接続 2 接続
  • データ転送量 (地域ごと)

    • 受信 500 MB
    • 送信 500 MB
まずはWindowsAzureです。
サイズSとは、CPUが1個にメモリが1.75GB載ってる環境です。
25時間とは、サービスがデプロイされている時間 ですので、たとえば丸1日デプロイしてたら既に1時間しか残ってないわけですね。
 これを超えると、 ¥ 11.76 / 時間ですので、1日大体283円、1か月では8,467円になります。

ここで注意ですが、デプロイ先には本番環境の「Peoduction」とテスト環境の「Staging」があります。
課金はデプロイ単位ですので、両方デプロイしてると、別々に課金されます。
てことは、両方丸々1か月デプロイしっぱなしだと、それだけで大体17,000円掛かっちゃいます。
稼働してないサービスは、なるべく削除するようにしましょう。
社内システムなど夜は使わないようなものは、
バッチでデプロイ&削除を自動化するといいらしいです。
うちもBugLogが軌道にのるまでは夜消すようにしよう・・・

また、ストレージトランザクションの回数も上限があります。
10,000回までは無料ですが、以降10,000トランザクションで約1円なので、
アクセスが多いと嵩むかもしれません。

次にSQLAzureです。
これは、WebEditionのデータベース1個までは3か月間無料ですね。
複数使わなければ問題なさそうです。
ちなみに無料期間が終わると1GBで月979円、5GBで4895円です。高い。

AppFabricは外部サービスとの連携に使用します。
うちでは使っていないので詳細はわかりません・・・・

データ転送量について、送受信ともに500MBまで。
これは、Azure外からのStorageへのアクセスですので、
外部連携やBlobを公開しなければそれほど上がらないでしょう。

というわけで、無料期間終了後のBugLogに掛かるおおよその金額は・・・

WindowsAzure:\10,000-
※Stagingへの一時的なDeployやトランザクション課金を考慮
SQL Azure:\979-
データ転送量:\0-

大体10,000円ちょっと。
ある程度予算のついたプロジェクトでは問題ない金額かと思われます。

うちは、、、大丈夫か、、、?

2010年9月21日火曜日

BugLog開発秘話

こんにちは、it-craftビジネスサービス部隊長です。
現在当社では、オリジナルのBTS(BugTrackingSoftware)であるBugLogの開発を行っています。

BugLogは、MicrosoftのCloud環境であるWindowsAzureにて動作するASPです。
ここでは、BugLogの紹介やWindowsAzure開発のポイントをUpしていきたいと思います。

まずは、WindowsAzureの開発環境から。

OSはVista以降。XPでないのが残念です。
なんせ大部分の開発マシンはXPのままですから、Azureに関する部分は限られたマシンで行う事になってしまいました。(実は専用にWindows7のマシンを購入・・・)

VisualStudioは2008以降。Expressでも大丈夫です。

あとはSQLServer2008以降。これはazureのstorageを仮想環境ではSQLServerで再現するからだそうです。
ふつうの2008でも問題無く動作しますが、R2を強くお勧めします。
なぜなら!2008R2のSSMSはSQLAzureにオブジェクトやデータを移行するスクリプトが生成可能なのです!
しかもオブジェクトエクスプローラーで繋がります。これが繋がらないと正直使い物になりません。
これもExpressでOKです。

ちなみにSQLAzureではストアドプロシージャをサポートしますが、移行用のスクリプトは必ず「SQL Azure データベース」を選択して生成しましょう。
なぜか動かない・・・等のトラブルが出るかもしれませんよ・・・(出たんですけど。)

これらがそろったら、http://msdn.microsoft.com/ja-jp/evalcenter/ee460823.aspx からSDKやらをDLしてインストールします。
これで開発環境はOK。

次回はWindowsAzureのアカウント購入について書こうと思います。

2010年9月2日木曜日

開発ブログ開設しました

株式会社アイティ・クラフト 開発ブログを開設しました。

弊社の技術者達が日々遭遇する技術的な問題やトラブル等、沢山のネタを綴っていくブログです。