SlideShare a Scribd company logo
1 of 35
Download to read offline
オープンソースで
Excelレポートプログラミング
~たぶん業務でも使えるテクニック集~
講師 .NETラボ 岡田 将
レポートプログラミングで
無茶振りされたこと
ありませんか?
Excelだったらこんなの
簡単なのに・・・
と感じたことはありませんか?
実際作ったけど、
サーバーにExcel.exeが
大量に発生して困ったことは
ありませんか?
クラウドサーバー運用に
Excelのインストールや
レポートツールのライセンスに
困ったことはありませんか?
そんなあなたに
解決できるかもしれない
プログラミング手法を
お届けします!
近日公開!
~Coming Soon~
・・・というのは冗談で
ちなみに「NPOI」は、
Javaの「Apatch POI」という
オープンソースプロジェクトの
.NETバージョンです。
ちなみにPOIは
「Poor Obfuscation Implementation (質の悪い難読な実装)」の略らしい
開発要件
ライセンスはApache2.0
▪ VS2017 VS2010 .NET Framework 4.0以降
▪ VS2005 VS2008 .NET Framework 2.0 SP1
▪ VS2003 .NET Framework 1.1 (version 1.2.1)
▪ Mono
依存コンポーネント
▪ SharpZipLib ←ライセンスが異なるので注意
Visual studioなら、NuGet Package Managerから入手できます。
https://www.nuget.org/packages/NPOI/
手動ダウンロードやソースのダウンロードはこちらから
https://github.com/tonyqus/npoi
ここにNPOIと入力
最新版を入手
現在バージョンは2.3.0
VisualStudioでのインストール方法
クラウド環境の方には、
ちゃんと.NET Core版も
あります
開発要件
ライセンスはApache2.0
▪ .Net Standard 2.0以上
Linux環境での必要コンポーネント
▪ Libgdiplus
NuGet Packageコマンド
Install-Package DotNetCore.NPOI
手動ダウンロードやソースのダウンロードはこちらから
https://github.com/dotnetcore/NPOI
VisualStudioでのインストール方法
最新版を入手
現在バージョンは1.0.2
でも今回は.Net Framework版
を説明します
Excelの前提知識
Excelの形式は2種類ある
どっちも動作可能だけど可能ならxlsx形式を推奨
.xlsx拡張子
▪ Office Open XML形式 (OOXML) フォーマット
▪ →オープンな規格で、各種XMLファイルを組み合わせてZIP圧縮されてい
る。
.xls拡張子
▪ Microsoft OLE2複合ドキュメント形式(OLE2)フォーマット
▪ →バイナリ形式で独自仕様。
開発準備
.NETのプロジェクトを作成して、NuGetからパッケージの取得して
参照設定を行います。
開発準備
適当なExcel(xlsxファイル)を作っておきます。
名前を「testTemplate.xlsx」にして保存し、実行ファイルの下または、任意
の場所に移動します。
NPOIとIOの「using ディレクティブ」をコードの先頭に追加します。
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
準備ができたら、次のコードを張り付けて呼び出します。
サンプルコード
private void CreateExcel() {
{
string filename = "testTemplate.xlsx";
XSSFWorkbook workbook = new XSSFWorkbook(filename);
ISheet sheet1 = workbook.GetSheetAt(0);
sheet1.CreateRow(0).CreateCell(0).SetCellValue("くだもの販売数");
sheet1.CreateRow(1).CreateCell(0).SetCellValue("商品名");
sheet1.GetRow(1).CreateCell(1).SetCellValue("個数");
sheet1.GetRow(1).CreateCell(2).SetCellValue("価格");
sheet1.GetRow(1).CreateCell(3).SetCellValue("消費税");
int x = 1;
for (int y = 2; y <= 15; y++)
{
IRow row = sheet1.CreateRow(y);
row.CreateCell(0).SetCellValue("りんご");
row.CreateCell(1).SetCellValue(x);
row.CreateCell(2).SetCellValue(x * 10);
row.CreateCell(3).SetCellValue(x * 10 * 0.08);
x = x + 2;
}
using (var f = File.Create(@"testReport.xlsx"))
{
workbook.Write(f);
}
}
}
テンプレートのExcel取得とシートの取得
見出し部分の作成
データ行の書き込み
Excelの書き込み
より便利に使うために、
こんな関数をご紹介します
あると便利な共通関数
▪ //既にあるかないかわからないので行を判断して取得する
▪ private IRow GetRow(ISheet sheet, int rowIndex)
▪ {
▪ if (sheet.GetRow(rowIndex) == null) {
▪ return sheet.CreateRow(rowIndex);
▪ } else {
▪ return sheet.GetRow(rowIndex);
▪ }
▪ }
▪ //既にあるかないかわからないので列を判断してセットする
▪ private void WriteCell<T>(T value,IRow row, int colIndex) {
▪ if (row.GetCell(colIndex) == null) {
▪ row.CreateCell(colIndex).SetCellValue((dynamic)value);
▪ } else {
▪ row.GetCell(colIndex).SetCellValue((dynamic)value);
▪ }
▪ }
あると便利な共通関数
//型を判定してCellの値を取得する
▪ private dynamic ReadCell(ICell cell)
▪ {
▪ switch (cell.CellType)
▪ {
▪ case CellType.String :
▪ return cell.StringCellValue;
▪ case CellType.Numeric :
▪ //日付型もこっちに入ってくる
▪ if (DateUtil.IsCellDateFormatted(cell)) {
▪ return cell.DateCellValue;
▪ } else {
▪ return cell.NumericCellValue;
▪ }
▪ case CellType.Boolean:
▪ return cell.BooleanCellValue;
▪ case CellType.Formula:
▪ return cell.CellFormula;
▪ default :
▪ return string.Empty;
▪ }
▪ }
適用したサンプルコード
private void CreateExcel() {
{
string filename = "testTemplate.xlsx";
▪ XSSFWorkbook workbook = new XSSFWorkbook(filename);
▪ ISheet sheet1 = workbook.GetSheetAt(1);
▪ sheet1.CreateRow(0).CreateCell(0).SetCellValue("くだもの販売数");
▪ GetRow(sheet1, 1).CreateCell(0).SetCellValue("商品名");
▪ WriteCell( GetRow(sheet1, 1), 1, "個数");
▪ WriteCell( GetRow(sheet1, 1), 2, "価格");
▪ WriteCell( GetRow(sheet1, 1), 3, "消費税");
▪ int x = 1;
▪ for (int y = 2; y <= 15; y++)
▪ {
▪ IRow row = GetRow(sheet1, y);
▪ WriteCell(row, 0,"みかん");
▪ WriteCell(row, 1, x);
▪ WriteCell(row, 2, x * 12);
▪ WriteCell(row, 3, x * 12 * 0.08);
▪ x = x + 2;
▪ }
▪ using (var f = File.Create(@"testReport.xlsx"))
▪ {
▪ workbook.Write(f);
▪ } }
}
テンプレートのExcel取得とシートの取得
見出し部分の作成
データ行の書き込み
Excelの書き込み
使える方はもう使えるので、
タイプ別に説明コースを
用意しました
ちょっと複雑な帳票作成の説明コース
• SQLがバリバリ得意な人Aコース
• プログラムがバリバリ得意な人Bコース
• Excel関数がバリバリ得意な人
Cコース ※ネ申エクセルのテンプレートを作られて
しまった方もこちら
▪外部結合やビュー、ストアドプロシージャでデータ
ベース側でデータ作って持ってくる。
▪Entity Framework推奨
Aコース
もう普通にやっても作成できますので割愛
▪Linq to SQLでデータを持ってきて、ひたすらデー
タ結合をプログラム側で頑張る。
▪やっぱりEntity Framework推奨
Bコース
こちらも普通にやって作成できますので割愛
▪Excel関数を駆使してテンプレートを充実させる。
▪データはシンプルなものを複数シートに格納。
Cコース
今回はこちらの裏技を重点的に説明します!
ごめんなさい、結局1コースしか準備してません
<考えたこと>
データだけ出して、
Excel関数で複雑な計算処理を
すればいいのでは?
それなら無茶振りのグラフも
条件付き書式も使い放題では?
<現 実>
そのまま出力しただけでは
Excel関数は処理されなかった
(´;ω;`)
Excel出力方法で楽するために考えたこと
▪ プログラム側(サーバー側)でExcel関数の計算を処理すればいいのでは
?
→結果:めちゃめちゃ遅い!分単位で時間がかかる。
▪ クライアント側でExcel関数の計算を処理すればいいのでは?
→結果:出力は早いけど、Excel起動がちょっと重い!
でも我慢できる範囲なので採用!
//サーバー側で計算実行
workbook.GetCreationHelper().CreateFormuraEvaluator().EvaluateAll();
//開いたときに計算実行
workbook.SetForceFormulaRecalculation(true);
Excel出力方法で楽するために考えたこと
▪ 別シートにデータが丸見えで恥ずかしい。
▪ データいじられると困る。
//シートを非表示にする
workbook.SetSheetHidden(0, SheetState.Hidden);
//シートの再表示をできなくする
workbook.SetSheetHidden(0, SheetState.VeryHidden);
//触られたくないデータはシートにパスワード設定
sheet.ProtectSheet("password");
Excel出力方法で楽するために考えたこと
▪ 空行要らないとムチャ振りされたので、行削除する。
→結果:行削除関数が未対応だったので、セル単位で削除した。
めちゃめちゃ遅い!データが多いとすごく時間がかかる。
▪ いっそ行も非表示で対応!
//最大行数を設定して、要らない行は非表示にする。
sheet.GroupRow([データ件数+1], sheet.LastRowNum);
sheet.SetRowGroupCollapsed([データ件数+1], true);
仕事で起こったNPOI事例
▪ まだ入力されていないセルはnullになるので、CreateCellとGetCellを使い分けな
いとエラーになる。
▪ POIのサンプルみても一応参考にはなるが、まだ対応していない関数がたっぷり
あるのでそのまま利用できない。
▪ スタイルはコードで書くと処理が遅くて後悔する。テンプレートに用意しておく
かシートコピーで使いまわすのを推奨。
▪ ウインドウ枠の固定をすると、壊れているとExcelで修復警告が出る場合と壊れ
ない場合がある。
過去のバージョンのトラブル
▪ 日本語入力してルビが入ってしまい即壊れているとExcelで修復警告が出た。
▪ 条件付き書式のデータバーを追加したら、壊れているとExcelで修復警告が出た
。
▪ テンプレートを2003形式から2007形式にしたらグラフでエラーが出るようにな
った。
Excelレポートのメリットまとめ
▪ ファイル容量は大きくなるけど、コード量が少なくて初心者でもなんと
か対応できる。
▪ Excelレポートは関数使えるからテンプレートを修正するだけで対応でき
るようになった。
▪ Excel使いの人にはExcelのまま提供されるので喜ばれた。
(オートフィルター設定したり、自力でグラフ作成したりとか)
▪ また1段階上のExcel関数使いになれた。(気がする・・・)
▪ オープンソースなら無料だし、最悪元ソース修正でとりあえず何とかな
る。(クラウド環境でも安心して導入できる)
ご清聴ありがとうございました
このスライドの内容はノンフィクションであり、
実際の起こったことをもとに作成しています。
また、登場するソースコードは使えるかもしれませんが、
バージョン違いなどによる動作は一切保証しません。
以上の注意点を確認いただき、 用法用量を守って正しくお使いください。

More Related Content

What's hot

例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ信之 岩永
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐりKazuyuki TAKASE
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
 
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...NTT DATA Technology & Innovation
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision TransformerYusuke Uchida
 

What's hot (20)

例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
入門 シェル実装
入門 シェル実装入門 シェル実装
入門 シェル実装
 
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
 
Java8でRDBMS作ったよ
Java8でRDBMS作ったよJava8でRDBMS作ったよ
Java8でRDBMS作ったよ
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 

Similar to オープンソースでExcelレポートプログラミング

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1鉄平 土佐
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振Sadao Tokuyama
 
Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)Ryo Asai
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514junichi anno
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiTomohiro Kumagai
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験Toshio Ehara
 
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版ありますElixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版ありますfukuoka.ex
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentialstnoda
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generatorOda Shinsuke
 

Similar to オープンソースでExcelレポートプログラミング (20)

Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
 
Apex Test Plusの紹介
Apex Test Plusの紹介Apex Test Plusの紹介
Apex Test Plusの紹介
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
Ll xcode
Ll xcodeLl xcode
Ll xcode
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振
 
Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)Glassfish勉強会(JavaEE6について)
Glassfish勉強会(JavaEE6について)
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
 
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版ありますElixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
Elixir入門「第1回:パターンマッチ&パイプでJSONパースアプリをサクっと書いてみる」【旧版】※新版あります
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
 

More from Sho Okada

AppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かすAppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かすSho Okada
 
ChatAIの未来予想図
ChatAIの未来予想図ChatAIの未来予想図
ChatAIの未来予想図Sho Okada
 
勉強会参加のすゝめ
勉強会参加のすゝめ勉強会参加のすゝめ
勉強会参加のすゝめSho Okada
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さSho Okada
 
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術Sho Okada
 
いままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなしいままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなしSho Okada
 
Excel取込みで失敗した先生
Excel取込みで失敗した先生Excel取込みで失敗した先生
Excel取込みで失敗した先生Sho Okada
 
今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史Sho Okada
 
SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集Sho Okada
 
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話Sho Okada
 
メガネ型デバイスの未来について考える
メガネ型デバイスの未来について考えるメガネ型デバイスの未来について考える
メガネ型デバイスの未来について考えるSho Okada
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠Sho Okada
 
止めないためのWEBインフラ入門
止めないためのWEBインフラ入門止めないためのWEBインフラ入門
止めないためのWEBインフラ入門Sho Okada
 
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用Sho Okada
 
WebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorWebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorSho Okada
 
初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本Sho Okada
 

More from Sho Okada (16)

AppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かすAppleシリコンのMacで Windows11を動かす
AppleシリコンのMacで Windows11を動かす
 
ChatAIの未来予想図
ChatAIの未来予想図ChatAIの未来予想図
ChatAIの未来予想図
 
勉強会参加のすゝめ
勉強会参加のすゝめ勉強会参加のすゝめ
勉強会参加のすゝめ
 
ASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さASP.NETの進化とASP.NET Core Blazorの凄さ
ASP.NETの進化とASP.NET Core Blazorの凄さ
 
WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術WebブラウザでC#実行 WebAssemblyの技術
WebブラウザでC#実行 WebAssemblyの技術
 
いままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなしいままで聴いてきたLTのおはなし
いままで聴いてきたLTのおはなし
 
Excel取込みで失敗した先生
Excel取込みで失敗した先生Excel取込みで失敗した先生
Excel取込みで失敗した先生
 
今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史今のWeb開発者に伝えたいWebブラウザの病みの歴史
今のWeb開発者に伝えたいWebブラウザの病みの歴史
 
SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集SQL Server中級者のための実践で使えるかもしれないTips集
SQL Server中級者のための実践で使えるかもしれないTips集
 
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
.Netのwebプログラマーに贈るサーバーインフラの比較的かんたんなお話
 
メガネ型デバイスの未来について考える
メガネ型デバイスの未来について考えるメガネ型デバイスの未来について考える
メガネ型デバイスの未来について考える
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 
止めないためのWEBインフラ入門
止めないためのWEBインフラ入門止めないためのWEBインフラ入門
止めないためのWEBインフラ入門
 
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用
 
WebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazorWebMatrixに対応した、新しいけど新しくないRazor
WebMatrixに対応した、新しいけど新しくないRazor
 
初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本初心者でもわかるActive directoryの基本
初心者でもわかるActive directoryの基本
 

オープンソースでExcelレポートプログラミング