技術者ブログ – Reactの紹介

技術者ブログと題して社員が日ごろ取り組んでいる学習内容を紹介します。
今回はWEBデザインをテーマにしている第0ユニットです。
本記事では、第0ユニットが注目している「React」についてご紹介をします。

Reactとは?

Facebook社が開発したWebサイト上のUIパーツを構築するためのJavaScriptライブラリです。React.jsやReact.JSと呼ばれることもあります。よくAngularJSやjQueryと比較されますが、React自体はフレームワークでなく、あくまでもUIを構築するだけのライブラリです。

投稿者もこの記事を書く上で、調べるまで前者の人間でした。
実際、第0ユニットで利用しているMonaca上で、フレームワークを使用したテンプレートを作成する際、ReactやAngularJSが選べるため、わりと勘違いすることが多いかもしれないです。

Reactは、開発元の「Facebook」をはじめ、「Instagram」はもちろん、「Yahoo!」「Netflix」など、世界中で数多く採用されているみたいです。

特徴

・宣言的なView
・コンポーネントベース

宣言的なView

Reactは、Webアプリの各部分のView(見た目)を、「こういう表示にしたい」と宣言的に記述できます。
記述について触れましたが、ReactのViewの記述にはJSXという構文を使用します※1。
JSXは、HTMLとほぼ同じ構文で記述でき、JavaScriptの処理も組み合わせた記述も可能です。JSXを使うことで、HTMLのようにシンプルでわかりやすい宣言的なコードが書けます。
JSXの書き方について、投稿者の所感では、人によっては違和感を拭うのに時間がかかるかもしれないです。
※1…Reactを使う際にJSXを必ず使わなくてはいけないわけではないようです。

コンポーネントベース

Reactでは、WebアプリのUIをコンポーネントと呼ばれる部品に分割して管理します。コンポーネントは、単独で機能する再利用可能な部品です。大規模なJavaScriptコードも部品化させることで保守性を高め、既存のReactコンポーネントを再利用することで、開発工数を減らすことができます。

さて、ここまでの特徴のイメージを持ってもらうために、サンプルコード(中身部分)を用意しました。

JSXの書き方として、文字列以外の値(数字、boolean、変数など)を HTML タグの属性に代入する際には {} を使う特徴があります。※2
※2…他にも沢山特徴はありますが、今回は割愛させて頂きます。

例として、37行目を見ると{this.onInput}と書かれていることが確認できるかと思います。
ここでは、onInput(<input> 要素の値が変更)の際に、定義しているonInputを呼び出し、setStateによってnameの状態をイベントから取得した際の値で変更しています。
このようにコンポーネント(この例ではテキストボックス)毎に分割してWebアプリのUIを作っていきます。

  1. import React, { Component } from 'react';
  2. export default class Todo extends Component {
  3.     constructor(props) {
  4.         super(props);
  5.         this.state = {
  6.           todos: [],
  7.           name: ''
  8.         };
  9.       }
  10.       //テキストフィールドに入力された値を name として state に保存
  11.       onInput = (e) => {
  12.         this.setState({
  13.           name: e.target.value
  14.         });
  15.       }
  16.       //登録ボタン処理
  17.       addTodo = () => {
  18.         const { todos, name } = this.state;
  19.         this.setState({
  20.           todos: [...todos, name]
  21.         });
  22.       }
  23.       //削除ボタン処理
  24.       removeTodo = (index) => {
  25.         const { todos, name } = this.state;
  26.         this.setState({
  27.           todos: [...todos.slice(0, index), ...todos.slice(index + 1)]
  28.         });
  29.       }
  30.       render() {
  31.         const { todos } = this.state;
  32.         
  33.         return (<div>
  34.         超簡易版ToDoりすと<br/>
  35.           <input type="text" onInput={this.onInput} />
  36.           <button onClick={this.addTodo} >登録</button>
  37.           <ul>
  38.             {todos.map((todo, index) => <li key={index}>
  39.                 {todo}
  40.           <button onClick={() => { this.removeTodo(index) }}> 削除</button>
  41.             </li>)}
  42.           </ul>
  43.         </div>);
  44.       }
  45. }


上記ソースコードを環境整えた後にブラウザで表示してみました。
テキスト入力欄にデータを入れて、登録ボタンを押すと
画面上のリストが更新されたのが確認できます。
このように、データをどのように配置するかを定義しておくだけで、データの変更を検知し、自動的に表示を更新する。といった点もReactならではの特徴です。

今回はReactについて紹介しました。
次回の第0ユニットの技術者ブログもお楽しみに!

社員紹介

ご覧いただきありがとうございます。

はじめまして、今年4月ダンデライオンズに入社した中国出身の「チェン」です。

経歴

来日前、中国で理系の大学を卒業し、そのまま機械エンジニアとして3年間働きました。日本のアニメや文化に興味があるために、独学で日本語をN1まで勉強していました。そして、日本に留学することを決意しました。

来日後、日本の文系大学院に入学しました。去年の9月大学院を卒業し、今年の4月にダンデライオンズに入社しました。今は第1ユニットに所属しています。

現在の活動

入社してから基本的なIT知識の研修を受けました。プログラム言語はもちろん、社会人にとって必要なビジネスマナーもしっかり学んでいきました。研修期間中にITパスポート資格を取得し、現在は基本情報技術者資格に向けて勉強しています。また、8月からプロジェクトに参画することになり、学ぶことたくさんあってなかなか難しいですが、先輩たちがいつも助けて頂いたおかげで、だんだん慣れてきました。これからもっと頑張りたいと思います。そして、一日のスケジュールも紹介したいと思います。

8:45  出勤

9:00 作業開始(メールとスケジュールをチェックしてから作業します)

12:00 昼休み(基本的にお弁当を持って行きます)

13:00 作業再開

16:30 夕会(情報共有、進捗状況の報告など)

18:00 退勤

興味

激辛料理大好きです!激辛料理に挑戦することが好きです。それでは、最近食べた激辛料を紹介させていただきます。

まず一つ目はこちら、COCO壱番屋の激辛料理です。ご存知かもしれませんが、COCO壱番屋では、カレーの辛さを選択することが可能です。1辛の32倍と言われる一番辛い15辛カレーです。すごく美味しく頂きました!

coco壱番屋15辛カレー

二つ目は、名古屋ですごく有名な中国料理「味仙」の台湾ラーメンです。台湾ラーメンがそもそも辛いですが、普通の台湾ラーメンで満足できない自分は、いつも一番辛い5辛のラーメンを食べます。

台湾ラーメン1~5辛

また最近は、キャンプにはまっています。美しい夕日を楽しみながら、美味しいキャンプ飯を食べるのは最高でした!

以上になります。

次回の社員紹介をお楽しみに!

グランピングに行ってきました!!

2023年6月23日に、ダンデライオンズの社員旅行が開催されました!!
コロナウィルスの影響もあり、2年ぶりの開催となります!

今回の社員旅行のテーマは「山」ということで、岐阜県にあるkito関ヶ原という場所でグランピングを行いました。
いくつかのグループに分かれ、食材班、飲み物班、調味料班などに分かれて買い出しをしながら集合しました。

グランピング場は天気は晴れ、空気はおいしく、自然豊かでとにかく最高の場所でした。
施設は最近できたらしく、どの部屋もきれいでした。
夜ごはんまで時間があったため、みんなの部屋をルームツアーをしたり、施設に常備してあるバドミントンなどをし時間を過ごしました。

きれいな建物達
ドームの内装
準備をする傍らでバドミントンを楽しむ先輩たち笑

メンバーもそろい食材の準備も終わったため、いよいよBBQの始まりです!!
それぞれ買ってきた食材を食べながら最近の出来事などを話す時間はとても楽しいです。
普段会う機会がない人とも話すことが出来るので、積極的にたくさんの人の話を聞きました。
誕生日の人がいたため、ケーキのサプライズなどもあり、大盛り上がりでした。

【乾杯!!🍻】
肉!野菜!
Happy Birthday!!!

BBQを楽しんだ後、みんなで花火をしました!!
周りが自然のため暗く、その中でする花火はとてもきれいに見えました。
花火の火を消えないようにみんなで移しあいながらする花火は、これぞ「夏!!」という感じでした。

夏!自然!花火!

その後は自由時間となり、それぞれ自由な時間を過ごしました。
私は部屋についているおしゃれなお風呂に入りました。
なんといってもこのお風呂はドアがなく、開放感がすごいです。
自然を感じながら入るお風呂は最高でした!!

開放感溢れるお風呂

楽しい時間はあっという間に過ぎ一日が終わってしまいました。
沢山の人数でどこかに行くということはとても楽しく有意義な時間になりました。
会社でこのようなイベントが開催されるのはとてもありがたいことで、何よりみんな仲がいいのでとても楽しい時間を過ごせました!

次回も楽しみにしてます!!

とにかく楽しかったです!次の社員旅行も楽しみです!
今回の記事は以上になります!次回もお楽しみに!

技術者ブログ – UTMによるWebフィルタ

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回はインフラをテーマにしている第3ユニットです。

第3ユニットでは、ダンデライオンズ社内のインフラ管理をしております。

今回は、社内ネットワークの強化のために導入したUTMについてお話します。
導入したUTM機器は、FortiGateというもので、世界で最も導入されているUTMの1つです。

次世代ファイアウォール(NGFW)FortiGate

UTM(FortiGate)とは

UTM(FortiGate)は、以下に挙げるような複数のセキュリティ機能を1台のきょう体に統合している機器です。

・アンチウイルス(アンチスパイウェアを含む)
・Webコンテンツフィルタリング
・SSL-VPN、IPSec-VPN
・ファイアウォール
・IPS(不正侵入制御)
・アンチボットネット
・アンチスパム
・アプリケーション制御

Webフィルターの設定

業務外のインターネット利用をブロックする仕組みです
FortiGateのWebフィルタは「カテゴリ単位のフィルタリング」「URLでのフィルタリング」が設定できます。
Webフィルタを適用することにより、ユーザーのWebアクセスをブロックしたり、監視することが可能です。
今回は、「カテゴリ単位のフィルタリング」を実施しました。

新規Webフィルタの作成

「FortieGuardカテゴリベースのフィルタ」をONにし、
その下の、カテゴリ毎に、ブロックするかログに残すのみ(モニタ)か設定します。

ファイアウォールポリシーにWebフィルタを設定

社内ネットワークのファイアウォールポリシーに作成したWebフィルタを設定します。

指定したカテゴリが機能しているか確認

実際に閲覧を禁止しているカテゴリのWebページを表示すると以下のように表示されることが確認できました。

以上となります。

FortieGateは、他にも様々なセキュリティ対策が行えますので、随時設定を行いたいと思っています。

次回の技術者ブログをお楽しみに。

社員紹介(29-2)

皆さん、こんにちは!

イエンです。ダンデライオンズに入社して2年目になりました。

現在の活動

去年の10月からJava AppletからTypecriptへ変換するというプロジェクトに参画しています。

プロジェクトに入って、要件から設計、製造、システムテストまで作っていきました。現在は性能改善に苦労しています。プロジェクトの参画中に重要な経験を蓄積でき、スキルもだんだんアップしていきます。初めての案件なので、分からなかったことがたくさんありますが、他のメンバーに積極的に教えて頂いた為、順調に作業を進めていました。

今回のブログで1日の仕事の流れをシェアしたいと思います。
8:50 出勤
9:00 仕事開始
9:30 朝会(共有情報展開)
朝会が終わったら、作業再開
12:00 – 13:00 お昼休み
17:30 夕会(本日の状況と明日の予定を報告する)
18:00 退勤

案件以外はユニットの活動をしています。OutSystemで勤怠システムのAPIを作っています。勤怠システム作成のため、OutSystem、APIについて、勉強しました。それによって、新しい分野を学ぶことができ、自分のスキルの幅が広がりました。

勤怠システムAPIとして下記の4機能を制作しました。
①今年度年休数を取得、対象日付を本日に設定
②デフォルト設定の開始時間/終了時間を設定
③対象日付に年休登録
④対象日付に出勤時間と退勤時間を登録

勤怠登録システムの初期表示(開発中画面)

趣味

前回の社員紹介で書いた通り、私の趣味は旅行することです。

連休の時にはあちこち旅行します。新しい地域へ行くたび、素晴らしいな景色を見物でき、面白いことを体験しました。

岐阜県の雪節
京都府にある海岸

今年の行ってきた場所でした。

以上になります。

次回の社員紹介をお楽しみに!

2023年2月インターンシップ体験談②

※2月に当社でインターンシップを行い、日本人大学生の方1名、外国人留学生の方3名に参加していただきました。当記事では、参加者の方の体験談を紹介していきます。

ベトナム人大学生(男性)

この度、株式会社ダンデライオンズのインターンシップに参加させていただきました。

今回のインターンシップで私は「自分の視野を広げたい」という目的で皆さんと一緒に頑張っていこうと思いましたが、想像以上に色々なことを学べました。

まず初めに自己紹介のために、マインドマップを作成しました。自分のことをさらに理解できました。そして、皆さんとスタンプを選んだり、フレーズを決めたり、市場調査でペルソナを作成したりしました。

次にはビジネスマナーの語彙力を体験しました。日本にいる外国人として、日本語が非常に難しいので、自分が日本語の勉強に力をかけましたが、まだ勉強不足でした。これから、もっと頑張らないといけないことが分かってきました。

IT業界と言えば、プログラミングのことがよく浮かんできますが、インターンシップでプログラミングだけではなく、テストも非常に大切だと知ることができました。時間をかけて、テストをして、ITの仕事の面白さを感じられました。

今まで、私はITによる色々な技術を体験してきました。
サイトの作成したこともあったが、2時間ほどウェブデザインの講義を受けましたが自分の知識がまだまだ不足していることを理解することができました。講義の中で「このサイトの閲覧者にどんなことを伝いたい?」と質問をされました。「サイト作成者全員の努力の結晶です!」と答えたいです。

インターンシップの5日間はあっという間でしたが、たくさん勉強になりました。自分はまだ知識も経験も不足ですが、これからも今回のインターンシップで学んだことを活用して、頑張って成長したいと思います。そして、やっと視野を広げました。

ダンデライオンズの皆さんとインターンシップに参加した仲間たち、誠にありがとうございます。

フランス人大学生(男性)

この度、ダンデライオンズのインターンシップに参加させていただきました。

2020年にソフトウエアエンジニアの大学院に卒業しました、すぐ、ソフトウエアエンジニアとしてインターシップして、そのあとすぐに、この会社に入りました。2022年の六月まで、ソフトウエアエンジニアとして同じ会社で働きました。
日本で働けるように去年の七月、日本の日本語学院に入りました。

今年の六月、卒業しますが、日本で働こうと思っていますから、グローバル愛知のおかげで日本人と留学生といろいろなイベントに参加しています。あるイベントで、ダンデライオンズのことを初めて聞きました。日本の会社のことは全然知りませんでしたが、そのために、インターシップに参加しました。

中国人とベトナム人と日本人の学生の方と一緒に行うということではじめは少し緊張しましたが(みんなは日本の大学生ですから、私の日本語はまだまだだと思いました)、すぐに三人と仲良くなりました。

1日目、 チームでSNSのスタンプを作るため、グループで話し合いました。最初はペルソナを考え始めて(このスタンプはどんな人が使うのか具体的の人物像をイメージして考えること)、大学の時、ペルソナを作りましたが、グループでは初めてでした。
SNSのスタンプで使うフレーズをフランス語で、もう三人のインターンシップ生の方は中国語・ベトナム語・日本語で決めました。その前、このスタンプの説明文を日本語と英語で作成しました。日本語と英語からお互いの母国語翻訳しました。
その経験は面白くて、日本語でたくさんな話が出来て、楽しかったです。

2日目、テスト体験を行いました。日本に来る前、ソフトウエアエンジニアとして働きましたが、前の会社で私はウニとテストだけして、他のチームがテストをやりました。
テストの体験はウエブサイトのデータとドキュメントのデータを比べて、違うところをドキュメントに記載しました。エビデンスが大事ですから、キャプチャーも撮りました。

3日目、WEBデザインの体験を行いました。サイトを作るため、ペルソナやウエブサイトのデザインなどを四人でディスカッションを行いました。私は午後のインターシップしか参加しましたが、ペルソナと一つグループのディスカッションして、ウエブサイト制作しませんでした。

その体験は四人でディスカッションが面白かったです。

それで、インターシップの経験が面白くて、グループとのディスカッションも出来て、嬉しかったです。

ダンデライオンズでインターンシップの体験させていただけるこの機会に感謝しています。

DRESS&GROOMING -身だしなみ- 2023年度

こんにちは、第1ユニットのミーです!
今回は、2023年5月24日(金) に実施した身だしなみ研修についてご紹介します。

今回の研修は、Brilliant Impressionの森内さんに講師をしていただきました。様々なことを教えていただきありがとうございます。

研修の内容:

【座学】
最初は「正しい身だしなみ」について学ぶことになりました。社会人として「身だしなみのルール」と「外見の重要性」男性と女性の各身だしなみについて。身だしなみに対してビジネスマナーの基本も勉強になりました。男性と女性はスーツの決まったルールが異なるので男性と女性とで分けて教えていただきました。

男性の身だしなみには、ルールがあります。例えば、スーツの色やスタイル、ネクタイの色や柄などがあります。スーツと靴の組み合わせも重要です。男性社員の体に合ったスーツのサイズやビジネスにふさわしいスーツを着ているかチェックしました。また、男性社員のネクタイの結び方もチェックし、正しい方法を教えていただきました。

女性の身だしなみとは、男性の身だしなみの考え方との違います。男性のシンプルなスタイルに比べ、女性は選択肢が多いです。それで自分に合った服を選ぶのは難しいですが、森内さんから全部教えていただきました。例えばスーツのスタイル、カラー、パターン、マテリアル の4つの要素を意識して、TPOや役職に合った 信頼されるビジネススタイルが完成します。それ以外にも、靴とバッグの組み合わせも重要だと学びました。

【オーダースーツ】

その後で、KASHIYAMA名古屋栄店で素敵なオーダースーツを作っていただきました。
森内さんからアドバイスを聞いて、自分が好きな色やスタイルなど様々なものを選ぶことができました。

Before/After

Before
After

写真を見ると、私たちが変化したことが分かるでしょうか?

感想:


今回の身だしなみの研修で、私はたくさんのことを学びました。私の身だしなみは、自分自身だけでなく、会社のイメージをも表します。だから、私は正しい身だしなみをする必要があると思いました。

会社のおかげで、私たちは非常に有益な研修を受けることができました。そして、とても素敵な服装を選ぶことができました。アドバイスを受け、満足のいく服装を手に入れました。そして、この研修を通じて自分が成長したと感じています。森内さん本当にありがとうございました。

DRESS&GROOMING -身だしなみ- 2023年度

こんにちは。第2ユニットのじつはらーんです。

今回も去年に引き続き、Brilliant Impressionの森内様に身だしなみについての研修をしていただきました。森内様、ありがとうございます!私はスーツの身だしなみやマナーについての知識がないため、今回の研修は楽しみにしていました。

前半は「正しい身だしなみセミナー」の座学を受け、後半は「オーダーメイドスーツ作成」の順番で行われました。

前半の座学では、「外見の重要性」、「見出しなみのルール」、「男性と女性の身だしなみ」について学びました。外見の重要性について学び、第一印象がとても重要だということを知りました。自分の印象は会社のイメージにも大きく関わるので、人から見られたときどのような印象を与えたいかという意図が必要だということを教えていただきました。

「男性と女性の身だしなみ」では、キャリア・役職が上がると共に男性は服装の自由度が減り皆同じ服装になり、女性は服装の自由度が増えることを知りました。しかし女性はその反面、上品さ、清潔さなどの品格が求められNGが増えると知り、どちらも大変だと感じました。

研修の内容で何より私が一番驚いたのはネクタイの柄についてです。私は普段ストライプ柄のネクタイを使用していたのですが、パーティーやお祝いの席ではNGだということを知り衝撃でした。ストライプ柄はイギリスの連隊旗から戦うイメージがあるため攻めの柄として使用されるそうです。ネクタイの柄一つ一つに与える印象や用途があり、ビジネスシーンにおいての使い分けが大切だと学びました。

上記のほかにも、髪型、靴、シャツ、スーツの手入れ方法などについて教えていただきどれも勉強になる内容ばかりでした。

その後、KASHIYAMA名古屋栄店様にて、研修参加者全員のオーダーメイドスーツを作っていただきました。オーダーメイドスーツはデザインの自由度が高いという点が魅力的です。生地の色やボタン、デザインなど、たくさんの中から一つを選ぶのはとても時間がかかりました。研修で学んだことや、森内様にアドバイスをいただきながら自分のスーツのデザインを決めました。出来上がったスーツをイメージし、オーダーメイドならではのデザインにこだわりながら選びました。

Before Afterを比べてみると、自分の体に合ったサイズのためスマートに見えビジネスマンらしくなりました。裏地やボタン、柄や色など細かなカスタマイズが可能だったため、皆それぞれ自分の好みに合った個性的なスーツを作ることができました。

Before
After

今回の研修は非常に充実した経験となりました。スーツについて何も知らなかった私ですが、研修を受け身だしなみのルールなマナーについて知ることができ、たくさんの知識が身につきました。ビジネスシーンにおいて、スーツの身だしなみは非常に重要な要素であり、研修を受けることでその重要性を深く理解することができました。オーダーメイドスーツを作っていただくのは私にとってとても貴重な経験になりました。完成したスーツは、自分のお気に入りの一枚です!

DRESS&GROOMING -身だしなみ- 2023年度

こんにちは。第1ユニットの「チェン」です!
今回は身だしなみ研修を参加させていただきました。そして、今回もBrilliant Impressionの森内様に講師していただきました。

研修の流れとして、前半は「正しい身だしなみセミナー」を受講し、後半は、研修を受けるメンバーが一緒にスーツの店に行き、「オーダースーツの作成」をしました。具体的な内容は以下になります。

「正しい身だしなみセミナー」


この研修では、主に社会人として男性と女性の基本的な身だしなみを勉強しました。スーツのポケットに物を入れないとか、場面の違いによってネクタイの柄が変わってくるとか、普段だとぜんぜん気づかなかった習慣が、ビジネスの場合では失礼である。ということが改めて勉強になりました。

立つときに、スーツの一番下のボタンを外すのが習慣となった理由は、ボタンを外した方が、馬に乗るときに、動きやすいためです。理由を知り、スーツの歴史の長さとその面白さを感じました。

セミナーに参加するみんなの様子

セミナーの最後の質問コーナーでは、自分がネクタイを結ぶのが苦手だと聞いた森内様が、みんなにネクタイの結び方を教えてくださり、みんなで一緒に練習しました。とても助かりました!

ネクタイの結び方を練習している様子

「オーダースーツの作成」

セミナーの研修が終わった後、森内様と一緒にKASHIYAMAさんにお邪魔して、それぞれ自分に合わせるスーツの採寸をしていただきました。
始めてのオーダースーツなので、スーツの生地とか、裏地の柄とかをどう選択すればわからなかったのですが、店員さんと森内様からアドバイスを頂いたおかけで、無事スーツの採寸を終えることができました。

スーツの生地を選ぶ様子

before/after

before
after

スーツの完成まで少し時間がかかりましたが、ようやく完成した新しいスーツを着ると、自分の体のサイズにピッタリする感触、おしゃれな裏地柄、しかもスーツの色を紺色にしたので、beforeの写真よりイメージがもっと明るくなって、ずいぶん変わりました。

「感想」

今回の「身だしなみ研修」に参加することで、社会人として基本的な身だしなみを勉強しました。今回の研修を通して、ビジネスの場面における身だしなみの基本の習得した上で、ビジネスマナーも一緒に勉強しました。さらに、スーツを着ている以上、個人だけでなく、会社のイメージも代表することも意識することができました。お店にお邪魔してオーダースーツを作っていただくことは、スーツに関する知識をたくさん勉強し、これからスーツを購入する際に貴重な経験になると思います。本当にありがとうございました!

今回の記事は以上です。
次回の記事もお楽しみに!

技術者ブログ:(OutSystems)Advanced Excelを使ったExcel出力

技術者ブログとして日ごろ取り組んでいる学習内容をご紹介します。
今回は、ローコード開発をテーマにしている第2ユニットです。

今回のテーマ:『Advanced Excelを使ったExcel出力』

前回はBootStrapを使用してExcelファイルからOutSystemのEntityへデータ取り込みを行う手順をご紹介しましたが、
今回はOutSystems内にある画面データをExcelに出力する方法をご紹介します。

Advanced Excelとは?

OutSystemsに搭載されているForgeコンポーネントのひとつで、
Excelファイルの読み込み・出力、書式設定、グラフ作成等もできるツールです。

Advanced Excel のインストール

Service Studioを起動しBrowse Forgeより”Advanced Excel”で検索してインストールを行います。

モジュールへの参照追加

利用したいモジュールを開き、Manage Dependencies(CTRL+Q)よりAdvanced Excelの要素を必要な分選択しApplyボタンをクリックします。
(今回はWorkbook_Open_BinaryData、WorkSheet_Select、Cell_Write、Workbook_Get_BinaryData、Workbook_Closeを選択しました)

各要素の説明は以下の通りです。

・Workbook_Open_BinaryData …BinaryData型でResource内に配置したExcelを指定しワークブックを開きます

・WorkSheet_Select …ワークブック内のシートを指定します

・Cell_Write…セルを指定し値を書き込みます

・Workbook_Get_BinaryData…ダウンロード用にBinaryData型でExcelファイルデータを取得します

・Workbook_Close…作成したExcelファイルをメモリから解放します

出力用のExcelテンプレートを配置

今回は以下のようなテスト用メンバー表のExcelテンプレートにデータを出力していきます。

モジュールのDataタブ内にあるResourceに用意したテンプレートをインポートします。

Excel出力用のSever Actionの作成

今回はメンバー表とExcel出力用に出力ボタンが表示されている画面を作成しました。

以下のようなExcel出力用のSever Actionを作成します。

各アクションのプロパティは以下の通りです。

・Workbook_Open_BinaryData…Action>BinaryDataにResourceで配置したExcelテンプレートファイルを選択します。

・WorkSheet_Select…Action内でWorkbookを指定、Workbook内のシートの指定をindexかシート名で選択できます。

・Cell_Write…CellRow/CellColumnにそれぞれ出力するセルの行/列番号を、CellValue/CellTypeに出力内容/タイプを入力します。

・Workbook_Get_BinaryData…取得するWorkbookを選択します。

・Workbook_Close…閉じるWorkbookを選択します。

画面上のボタンが押下されるとメンバー表が自動で出力されるようになりました。

注意事項

・Workbook_Closeは忘れずに
OutSystemsドキュメントでは、Excelファイル操作が終了したら必ずCloseするようにとあります。OutSystemsでは自動的にメモリを開放する仕組みがないので、操作が終了したらWorkbook_Closeをしてメモリを開放するようにしてください。

・シート番号やExcel行/列番号は1始まり
WorkSheet_Select でシート番号を指定したり、Cell_Writeで行/列番号を指定したりする際に起点のシート番号や行/列番号は0ではなく1になりますのでご注意ください。

まとめ

今回はAdvanced Excelを使ってOutSystemsからExcelファイルを出力する方法をご紹介いたしました。
前回のBootStrapに加えて、Outsystems上で取り扱っているデータを外部出力したい場面で活用できる機能かと思います。
第2ユニットではこれからもOutSystemsなどのローコードツールを使った技術者ブログを展開していきますのでお楽しみに。