SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(MultiRow)

明細書の入力・印刷・Excelデータへの保存を行う.NETアプリケーションを作成する

MultiRow for Windows Forms 6.0Jで多機能明細書作成プログラムを作成する

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード 実行ファイル (1.1 MB)
ダウンロード サンプルソース (375.5 KB)

 MultiRow for Windows Forms 6.0Jのコンポーネントを使用し、印刷機能とExcelのブックに入力データを保存する機能を持った、明細書作成アプリケーションを作っていきます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 以前の記事「高性能な伝票入力フォームを持った.NETアプリケーションを作る」では、MultiRow for Windows Forms 5.0Jを使って、簡単な明細書を作成するアプリケーションを作ってみました。

 今回作成するのは、同じような形式の明細書を作成するアプリケーションですが、新たに印刷機能とExcelのブックに入力データを保存する機能を加えたアプリケーションです。また、MultiRow for Windows Forms 5.0Jが6.0Jにバージョンアップされたことで、ヘッダ・フッタセクションへのデータ入力機能が可能になったので、この機能を使ってサマリ型セルを使ったセル値の自動集計機能も加えてみました。

作成した明細書を印刷プレビューで確認して印刷する
作成した明細書を印刷プレビューで確認して印刷する
入力データは、Excelのブックに保存する
入力データは、Excelのブックに保存する

対象読者

 Visual Basic/Visual C# 2005・2008を使ってプログラムを作ったことのある人。

必要な環境

 Visual Basic 2005・2008、Visual Studio 2005・2008、Excel VBAでプログラムが作れる環境。なお、Visual StudioのExpress Editonでは、MultiRowのデザイナは使用できません。本プログラムはWindows Vista(SP2)上で動作するVisual Studio 2008を使用して作成し、動作確認を行っています。

 また、Excelのオブジェクトおよびそのメンバメソッド・プロパティを使用するので、今回はVisual Basicでの作成のみになります。コードでVBAの構文を利用するとなると、どうしてもC#では使い勝手がかなり悪くなるので、C#でのアプリケーション作成は行いません。ご了承ください。

プログラム実行時の注意事項

 MultiRow for Windows Forms 6.0Jを使って作成したアプリケーションを配布する場合、MultiRow for Windows Forms 6.0Jのアセンブリファイルを添付する必要があります。これは、Common Language RuntimeのDLLをアプリケーションと一緒に配布するのと同じです。

 本記事のサンプルアプリケーションを正常に動作させるためには、次のファイルをインストールする必要があります。

ファイル名 説明
GrapeCity.Framework.MultiRow.v21.dll 共通フレームワーク
GrapeCity.Win.MultiRow.v60.dll グリッド コンポーネント
.\ja\GrapeCity.Framework.MultiRow.v21.resources.dll 日本語リソース
.\ja\GrapeCity.Win.MultiRow.v60.resources.dll 日本語リソース

 これらのファイルを、プログラムを実行するフォルダへ、フォルダ構成を変えずに格納します。.NET Framework 2.0から追加されたクラスやメンバを使用しているので、バージョン2.0以降の.NET Frameworkがインストールされていることが必須条件です。

※注

Excel(バージョン2003以降)がインストールされていないコンピュータでは、プログラムを実行させることができないので注意してください。

コンポーネントのインストール

 はじめてMultiRow for Windows Forms 6.0Jを使用する方は、Visual Studio、Visual Basic、Visual C#の開発環境にMultiRow for Windows Forms 6.0Jをインストールする必要があります。

 インストーラは、グレープシティのWebページからダウンロードできます。「トライアル版お申し込みフォーム」に必要事項を入力して登録すると、添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてくるので、ここからダウンロードします。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールの追加

 MultiRow for Windows Forms 6.0Jをインストールしたら、ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコンポーネントは、「.NET Frameworkコントロール」の名前空間が「GrapeCity.Win.MultiRow」で、アセンブリ名が「GrapeCity.Win.MultiRow.v60(6.0.yyyy.mmdd)」で始まるコンポーネント「GcMultiRow」です。

 なお、既に同じ名前空間とアセンブリ名のコンポーネントにチェックが付いていますが、これらのコントロールはMultiRowコンポーネントのデザイナで使用するコントロールなので、チェックは外さないでください。

アセンブリ名が「GrapeCity.Win.MultiRow」で始まるコンポーネント「GcMultiRow」を選択する
アセンブリ名が「GrapeCity.Win.MultiRow」で始まるコンポーネント「GcMultiRow」を選択する

GUIのデザイン

 フォームは、GcMultiRowコンポーネントと標準コントロールのButtonコントロールが2つというシンプルなものです。なお、「Template11」はGcMultiRowコンポーネントにテンプレートを作成すると自動的に作られるオブジェクトです。GcMultiRowコンポーネントのデザイン方法については、次の項目で紹介します。

GUIコンポーネントの構成
GUIコンポーネントの構成

新しいグリッドレイアウトの作成

 最初に、GcMultiRowコンポーネントにデータ入力のためのグリッドを作成します。これは、配置したばかりのGcMultiRowコンポーネントは中が空になっており、[新しいテンプレートを作成する]という作業でグリッドを作成します。テンプレートはオブジェクトになっており、専用のデザイナでグリッドをデザインするようになっています。

新しいテンプレートの作成

 新しいプロジェクトを作成し、フォームにGcMultiRowコンポーネントをドラッグ&ドロップすると、スマートタグが展開します。[新しいテンプレートの追加]を選ぶとテンプレートウィザードが起動します。ここでは、セル数を指定してテンプレートを作成します。設定するセルは、水平方向(列数)に5個、垂直方向(行数)に1個です。また、スタイルに「BlueSky」というグラデーションを施すスタイルを選びます。

 グリッドができあがったら、フォームに合わせてサイズを調整します。フォームには「Template11」というオブジェクトが作成されます。

スマートタグで[新しいテンプレートの追加]を選択
スマートタグで[新しいテンプレートの追加]を選択
設定するセルは、水平方向(列数)に5個、垂直方向(行数)に1個
設定するセルは、水平方向(列数)に5、垂直方向(行数)に1個
スタイルに「BlueSky」というグラデーションを施すスタイルを選択
スタイルに「BlueSky」というグラデーションを施すスタイルを選択
できあがったグリッド
できあがったグリッド

Rowセクションでのデータ入力フォーマットの作成

 作成したグリッドをデザインしていきます。スマートタグから[テンプレートの編集]を選ぶと、デザイナ画面が表示されます。

 グリッドは、「ヘッダセクション」と「Rowセクション」に分かれており、データの入力を受け付けるのがRowセクションです。このRowセクションに、先ほど作成した列セルとそのヘッダ用セルが配置されています。境界線をマウスでドラッグすると、それぞれのセクションの「幅」と「高さ」を変えることができ、各セルを個々にクリックして選択状態にすれば、「セルのサイズ」と「配置位置」を変えることができます。

 Rowセクションに配置されたセルは、デフォルトでは文字列型セル(TextBoxCell)が配置されているので、これを修正します。具体的には、個数と単価を入力するセルは、数値型セル(NumericUpDownCell)に入れ替えます。入力範囲を設定する「Maximum」「Minimum」プロパティをデフォルトの値から「Maximum」は「1000000」に、「Minimum」は「0」に変更します。

 また、単価の数値型セルは、数値入力用スピンボタンを使用しないので、ShowSpinButtonプロパティを「NotShown」に設定します。列ヘッダ用セルは列ヘッダ型セル(ColumnHeaderCell)なので、これはValueプロパティを使って列見出しの文字を設定します。

合計金額を入力するセルは、サマリ型セル(SummaryCell)を使用します。このセルを使用すると、指定したセルの数値を自動集計することができます。サマリ型セルについては記事の後半で説明します。

Rowセクションでのセルのデザイン
Rowセクションでのセルのデザイン

 なお、新たに追加したセルは、デフォルトでは枠線が表示されていませんが、Styleプロパティを展開してBorderプロパティの値を「通常の罫線」に変更すると、罫線を設定できます。

Borderプロパティの値を「通常の罫線」に変更
Borderプロパティの値を「通常の罫線」に変更
罫線が設定できるようになる
罫線が設定できるようになる

 最後に、行見出し(行ヘッダ)に自動的にレコード番号が表示されるようにします。行ヘッダは、行ヘッダ型セル(RowHeaderCell)になっており、「ValueFormat」プロパティの値を「%1%」と設定すれば、レコードが追加されるたびに、行ヘッダに自動的に番号が表示されます。

 これで、Rowセクションは完成です。

ヘッダセクションの作成

 ヘッダセクションには、明細書に必要な顧客情報や受注番号、受注年月日を表示するためのセルを配置します。「お買い上げ明細書」と表示したLabelCellだけ、Borderプロパティを「3D罫線」に設定します。

ヘッダセクションのレイアウトデザイン:黒い枠線のあるセルは説明上表示しているものなので、実際は罫線なしに設定する
ヘッダセクションのレイアウトデザイン:黒い枠線のあるセルは説明上表示しているものなので、実際は罫線なしに設定する

 また、郵便番号を入力するセルだけはマスク型セル(MaskedTextBoxCell)を使用し、Maskプロパティを「郵便番号」に設定しています。

Maskプロパティを「郵便番号」に設定
Maskプロパティを「郵便番号」に設定

 ヘッダセクションは、背景をグラデーションに塗りつぶします。これは、ColumnHeaderSectionオブジェクトの次のプロパティを設定します。

プロパティ 設定値
GradientColors [192, 255, 255]; White
GradientDirection Side
GradientStyle Vertical

 また、ヘッダ内のセルが入力可能になるように、次のプロパティを設定します。

プロパティ 設定値
ReadOnly False
Selectable True

フッタセクションの作成

 ヘッダセクションができたら、今度はフッタセクションを作成します。ここは、入力された金額の合計を集計し、送料と請求金額を入力するエリアにします。

 まず、Visual Studioのメニューから[テンプレート]-[追加]-[列フッタ]を選択します。グリッドにColumnFooterSectionオブジェクトが追加され、列フッタを作成できるようになります。ここには下記の4つのセルを配置します。

  • ラベル型セル(LabelCell)
  • サマリ型セル(SummaryCell)
  • マスク型セル(MaskedTextBoxCell)
  • コンボボックス型セル(ComboBoxCell)
Visual Studioのメニューから[テンプレート]-[追加]-[列フッタ]を選択
Visual Studioのメニューから[テンプレート]-[追加]-[列フッタ]を選択
フッタセクションのレイアウトデザイン
フッタセクションのレイアウトデザイン

サマリ型セル(SummaryCell)の設定

 サマリ型セル(SummaryCell)は、セルの値の集計と結果の表示を提供します。SummaryCellを使用すると、コードを記述せずに計算式を定義でき、次の各計算をプロパティの設定だけで行わせることができます。ただし、集計できるのは列セルだけで、ヘッダやフッタに配置したセルは集計の対象にはできません。

  • 任意の列(セル)の集計
    • 合計 (Sum)
    • 平均 (Average)
    • 最小値 (Min)
    • 最大値 (Max)
    • 値の個数 (Count)
  • 演算子による計算:+、-、*、/、丸括弧()
  • 非表示行を集計するかどうかの指定
  • ユーザー定義の計算式

 SUM、Averageなどはあらかじめ計算式がコンポーネントに組み込まれていますので、計算したいセルをプロパティで指定するだけです。演算子による計算式を組み込む場合は、直接指揮をプロパティに設定します。

 このプログラムでは、Rowセクションに配置したサマリ型セルでは計算式による計算を、フッタに配置したサマリ型セルではSumによる合計計算を自動的に行うように設定します。

 では、最初にRowセクションに配置したサマリ型セル(SummaryCell1)に、単価と個数から自動的に合計金額を算出する設定を組み込みます。

  1. Rowセクションに配置したSummaryCell1を選択し、プロパティウィンドウでCalculationプロパティのドロップダウンリストから「Expression」を選択する。
  2. Calculationプロパティの左にある[+(プラスマーク)]をクリックしてプロパティを展開し、ExpressionStringに次の式を設定する。
    =NumericUpDownCell1*NumericUpDownCell2
    
    ExpressionStringに直接計算式を入力する
    ExpressionStringに直接計算式を入力する

 次に、フッタに配置したサマリ型セル(SummaryCell2)に「合計金額」の列の合計を集計するように設定します。

 

  1. フッタに配置したSummaryCell2を選択し、プロパティウィンドウでStyleプロパティを展開して、Formatプロパティを「"\"###,##」と設定する。
  2. Calculationプロパティのドロップダウンリストから「MathStatistics」を選択する。
  3. Calculationプロパティの右にある[+(プラスマーク)]をクリックし、MathStatisticsオブジェクトのプロパティを展開して、StatisticsTypeプロパティを「Sum」に設定する。
  4. CellNameプロパティで、集計対象のセルを「SummaryCell1」に設定する。

 これで、SummaryCell1セルで計算された合計金額が次々と、サマリ型セル(SummaryCell2)で合計され表示されていきます。Formatプロパティを「"\"###,##」と設定しているので、集計された金額は「\210,000」というように書式が整えられて表示されます。

 なお今回、「"\"###,##」という書式を使用しているので、セルに値がない場合に"\"のみが出力されます。そのため、最初のサマリ型セル(SummaryCell1)のFormatプロパティには何も設定しないでください。設定してしまうと、計算結果が文字列になってしまい、SummaryCell2で合計計算ができなくなってしまいます。なお、「"\"###,##」のかわりに.NET Frameworkの通貨書式「c」を使うと、この現象を回避できます。

Calculationプロパティで集計方法と集計対象セルを指定する
Calculationプロパティで集計方法と集計対象セルを指定する

コンボボックス型セル(ComboBoxCell)の設定

 コンボボックス型セル(ComboBoxCell)は、.NET FrameworkのComboBoxコントロール(System.Windows.Forms.ComboBox)と同等の機能を持ったセルで、ユーザーはドロップダウンリストから値を入力できるようになります。

 ここでは、3種類の送料をリストから選べるように、「Items」プロパティのコレクションエディタで次のようにリスト項目を設定します。

  • \0
  • \500
  • \1000

 また、「DropDownStyle」を「DropDown」にすると、セルの計上が3Dボタン型からフラットなリストボックススタイルに変わります。

マスク型セル(MaskedTextBoxCell)の設定

 このセルでは、最終的な請求金額を入力するようにするため、Maskプロパティに「\\##########」と設定しておきます。また、このフッタセクションも背景色にグラデーションを設定し、フッタ内のセルが入力可能になるように、次のプロパティを設定します。

プロパティ 設定値
GradientColors [192, 255, 255]; White
GradientDirection Side
GradientStyle Vertical
ReadOnly False
Selectable True

 以上で、グリッドのデザインが完成です。[ビルド]-[リビルド]メニューを実行し、デザイナでの修正をフォームのGcMultiRowコンポーネントに反映させます。

Excelファイルへの保存処理

 このプログラムでは、フォームに配置した[保存]ボタンをクリックすると、列セルに入力されたデータとヘッダセクションにある一部のデータを、Excelを起動してブックに保存します。

 Excelの操作は、すべて[保存]ボタンのClickイベントハンドラで行い、Excelをオブジェクトとして扱います。Excelの各オブジェクトとそのメンバを操作するので、ある程度VBAの知識が必要になりますが、本稿ではVBAおよびExcelのオブジェクト構造に関しての詳細な説明は割愛させていただきます。

 今回、データを入力するExcelのブック「売上集計.xls」は、次の手順でプロジェクトに組み込んであります。この方法であれば、データファイルを持ち歩く必要はありません。

  1. Visual Studioのメニューから、[プロジェクト]-[既存項目の追加]を選ぶ
  2. 「ファイルを開く」ダイアログのファイルフィルタのリストから[すべてのファイル(*.*)]を選択し、「売上集計.xls」を選択して[追加]ボタンをクリックする
  3. ソリューションエクスプローラで、プロジェクトに追加された「売上集計.xls」を選択する
  4. プロパティウィンドウの「出力ディレクトリにコピー」の値を、「新しい場合はコピーする」に変更する

事前準備

 Excelをオブジェクトとして操作するため、参照設定が必要になります。

 ソリューションエクスプローラの[参照設定]でショートカットメニューを表示し、[参照の追加]を選択します。そして、「Com」タブをクリックして「Microsoft Excel 11.0 Object Library」を選びます。「Excel 11.0」がExcel 2003、「Excel 12.0」がExcel 2007です(ちなみに「Excel 14.0」はExcel 2010のβバージョンです)。この参照設定を行わないと、Excelを操作することができません。

「Com」タブからの「Microsoft Excel 11.0 Object Library」を選択
「Com」タブからの「Microsoft Excel 11.0 Object Library」を選択

 また、フォーム表示時の「受注年月日」に現在の日付を表示するように、Loadイベントハンドラに処理を作成します。

Visual Basic
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.GcMultiRow1.ColumnHeaders(0).Cells("LabelCell6").Value = Format(Date.Today, "D")
End Sub

入力データの取得

 最初に、Rowセクションのセルに入力されたデータおよび、ヘッダセクションに入力されたデータを配列に格納します。配列は2次元配列を使用し、1レコードずつ7つのセルデータを取得し、格納します。取得するデータは次のセルです。

  • ヘッダーセクション
    • 購入年月日
    • 受注番号
  • Rowセクション
    • 商品名
    • 商品番号
    • 個数
    • 単価
    • 合計金額

 GcMultiRowクラスのRowCountプロパティを参照すると入力されている行数が分かるので、これを使って配列を再確保します。

Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim cnt As Integer = 0
    Dim i As Integer
    Dim getdata(0, 7) As String

    cnt = Me.GcMultiRow1.RowCount - 1

    ReDim getdata(cnt, 7)

 データの取得には、Do...Loop...Whileステートメントを使用し、この行数を使って1行ずつ列データを配列に格納していきます。また、購入年月日と受注番号も一緒に格納していきます。

Visual Basic
Do
    getdata(i, 0) = Me.GcMultiRow1.ColumnHeaders(0).Cells("LabelCell6").Value
    getdata(i, 1) = Me.GcMultiRow1.ColumnHeaders(0).Cells("TextBoxCell5").Value
    getdata(i, 2) = Me.GcMultiRow1.GetValue(i, "TextBoxCell1")
    getdata(i, 3) = Me.GcMultiRow1.GetValue(i, "TextBoxCell2")
    getdata(i, 4) = Me.GcMultiRow1.GetValue(i, "NumericUpDownCell1")
    getdata(i, 5) = Me.GcMultiRow1.GetValue(i, "NumericUpDownCell2")
    getdata(i, 6) = Me.GcMultiRow1.GetValue(i, "SummaryCell1")
    i += 1
Loop While i < cnt

取得したデータをExcelのブックに保存する

 配列にデータを格納したら、Excelのブックに転送します。実行ファイルに格納しているように、列見出しを付けた「売上集計.xls」をあらかじめ作成し、ここに転送させます。転送データは、ワークシート「集計表2009」の3行目に行を挿入し、常にこの位置に転送するようにします(既に入力されたデータは順番に下の行にさがっていきます)。

 最初に、Excelのインスタンスを作成します。以降、Excelの各オブジェクトはこのインスタンスを使って操作します。Excelは、インスタンスを作成しただけではバックグラウンドで動作するだけなのでそのまま操作することも可能ですが、動作確認のために目に見えるようにVisibleプロパティを「True」にします。そして、WorkbooksコレクションのOpenメソッドでブックを開きます。

Visual Basic
Dim fname As String = Application.StartupPath & "\" & "売上集計.xls"
Dim ex As Microsoft.Office.Interop.Excel.Application

ex = New Microsoft.Office.Interop.Excel.Application

With ex
    .Visible = True
    .Workbooks.Open(fname)

 この方法はExcelのCOM参照が追加されている場合のみ有効です。

 なお、記事のサンプルソースをリビルドすると、ExcelのコアDLLであるInterop.Office.dllが削除されてビルドエラーになってしまう場合があります。回避策として、CreateInstanceメソッドを使用してExcelのインスタンスを作成する方法があります。

Visual Basic
Dim excelApplicationType As Type = Type.GetTypeFromProgID("Excel.Application")

If excelApplicationType Is Nothing Then
   MessageBox.Show("Excel.Applicationの読み込み中にエラーが発生しました。処理を中断します。")
   Return
End If

Dim ex As Object = Activator.CreateInstance(excelApplicationType)

With ex
   .Visible = True
   .Workbooks.Open(fname)

 そして、For...Nextステートメントで配列データをワークシートのセルに転送します。その際、1回ループが回るたびに(1レコード分の配列データを転送するたびに)、ワークシートの3行目に新しい行を挿入し、その行にデータを転送します。

Visual Basic
With .Worksheets("集計表2009")
    For i = 0 To cnt - 1
        .Rows(3).insert()
        .Cells(3, 1) = getdata(i, 0)
        .Cells(3, 2) = getdata(i, 1)
        .Cells(3, 3) = getdata(i, 2)
        .Cells(3, 4) = getdata(i, 3)
        .Cells(3, 5) = getdata(i, 4)
        .Cells(3, 6) = getdata(i, 5)
        .Cells(3, 7) = getdata(i, 6)
    Next
End With
新しい行データは常に3行目に入力される
新しい行データは常に3行目に入力される

 データがセルに転送されたら、Saveメソッドでブックを上書き保存し、QuitメソッドでExcelを終了します。バックグラウンドでExcelの処理を行わせている場合は、必ずQuitメソッドでExcelを終了させないとプロセスにいつまでもExcelが残ってしまいます。また、2番目のインスタンスでブックを開くと読み取り専用で開かれるため、ブックが保存できなくなるので注意してください。

Visual Basic
        .ActiveWorkbook.Save()
        '.Quit()
    End With
End Sub

 これで、[保存]ボタンを押すたびに次々とデータをブック「売上集計.xls」に蓄積されていくようになりました。

印刷処理

 最後に、請求書を印刷する処理を作成します。といっても、そのまま印刷するのであれば難しい処理は必要ありません。GcMultiRowコンポーネントのPrintメソッドを実行すれば、システムの現在の設定に基づいてグリッドを印刷します。また、PageSetupメソッドを実行すれば、「ページ設定」ダイアログボックスが表示されます。

 PrintSettingsオブジェクトのPrintStyleプロパティを使用すると、印刷の形式を選ぶことができます。

PrintStyleの値 説明
0 - Rich 画面と同じ印刷結果になります。例えば、テーマとボタンも印刷されます。
1 - Compact ドキュメントのような印刷結果になります。テキスト、イメージ、および境界線のみが印刷されます。
2 - Content テキストとイメージのみが印刷されます。セクションおよびセルの背景と境界線は印刷されません。

 PrintPreviewメソッドを使うと印刷プレビューを表示し、印刷状態を確認してから印刷できます。今回は、この印刷プレビュー機能を使って印刷するようにします。

Visual Basic
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        GcMultiRow1.PrintSettings.PrintStyle = PrintStyle.Compact
        Me.GcMultiRow1.PrintPreview()
    End Sub
End Class
メソッドの実行だけで印刷プレビュー機能が使える
メソッドの実行だけで印刷プレビュー機能が使える

まとめ

 GcMultiRowコンポーネントは、このようにとても多機能で大変優れたコンポーネントです。伝票や請求書などを独自のフォーマットにしたいというユーザーの要望に応えるアプリケーションの作成が可能です。データベースとの接続はもちろん、VBAと組み合わせればExcelを使ってデータの読み書きが行えます。

製品情報

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4718 2009/12/22 16:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング