愛知ユーザー会
#5 LT
OutSystemsと日本語
株式会社ハウスソフト
渡部 潤司
今日紹介すること
1. エンコーディング
2. 多言語機能
3. 周辺的話題
自己紹介
• OutSystems利用プロジェクトへの
技術的な支援をしています
–最近はReactive Web AppとMobile
–テスト自動化等、開発標準の検討
–問題の調査やQA、共通部品の作成など
• Expert Traditional Web Developer
– O11
• QiitaにOutSystems関連のメモを書
いています(@jyunji_watanabe)
①エンコーディング
デフォルト
• OutSystemsがデフォルトでどのエン
コーディングを使うかの記述は見つから
ない
• 実際の環境で観察するとヘッダに
「content=“text/html; charset=utf-
8”」とあるため、UTF-8を使っている
• OutSystems内で生成されるデータだけ
を扱っている限り、気にしなくて良い
エンコーディング変換(1)
• BinaryData ExtensionのActionで実現する
• 指定できるエンコーディング
– 「unicode, utf-8, utf-16, ascii」が有効
とされている(Descriptionより)
– Visual Studioで開いて確認すると
「System.Text.Encoding.GetEncoding
」Methodにエンコーディング文字列を渡
して使っている
– https://docs.microsoft.com/en-
us/dotnet/api/system.text.encoding?vi
ew=netframework-4.6.1 に挙げられて
いるエンコーディングも指定できる
エンコーディング変換(2)
• 他システムに渡すためにエンコーディン
グを変更するには、Binary Data型のエン
コーディングを変換するActionを利用
入力Text型のエンコー
ディング方式を指定
(OutSystemsのTextなの
でutf-8を指定している)
SourceEncoding:入力バ
イナリのエンコーディング
DestinationEncoding:変
換先のエンコーディング
エンコーディング変換(3)
• 他のエンコーディングで作られた
データ(Binary Data型)を受け取っ
たら、Binary DataをTextに変換する
ときにエンコーディングも変換でき
る
このケースではUpload
WidgetでShife-JISでエン
コードしたテキストファイ
ルをTextに変換している
②多言語機能
1つのモジュールを複数
の言語で切り替えて表示
できる機能
ロケール
• ロケールとは、UI表示に使用する言
語設定(言語と地域)
–例:en「英語」、en-US「英語(アメ
リカ)」、
• ロケールを取得する:Built-in
FunctionのGetCurrentLocale
• ロケールを設定する:System
ActionのSetCurrentLocale
Traditional Web Appの
場合(1)
• 翻訳対象をOutSystemsが自動的に
収集し、一括で翻訳データを設定す
る機能がある
• OutSystemsが提供する標準機能
• 標準機能で、かつツールの支援が受
けられため、積極的に使える
Traditional Web Appの
場合(2)ロケール定義
• モジュールで利用するロケールを定
義する:Dataタブ>Multilingual
Localesフォルダで
• フォルダ右クリック→Add Locale...
Traditional Web Appの
場合(3)翻訳データ登録
• 収集されたデータに、ロケール毎の
表示テキストを設定する
• Excelにエクスポートして編集→イン
ポートすることも可能
Traditional Web Appの
場合(4)ロケール切替
• ロケールと翻訳データの登録を済ま
せておき、SetCurrentLocaleでロ
ケール設定すると、そのロケールに
対応するデータが表示される
• ログイン後最初のリクエスト時に動
くシステムイベントのSession Start
がSetCurrentLocaleを実行する良い
候補
Reactive Web
App/Mobileの場合(0)
• これまでは標準機能がなく、Forgeコン
ポーネントを使うしかなかった
• 正式機能が実装されそう
– 「Integrated translations in reactive and
mobile (just like traditional web)」という
Ideaに「Working on it」というマークが
– 時期が「expected delivery in Q4 2020」と
なっているので今四半期予定
– というわけで、やはり標準機能提供までは様
子見が良さそう
③周辺的話題
和暦
• 昭和や平成などの元号を扱う機能。
OutSystems標準にはないはず
• .NET FrameworkをExtensionとし
てラップ、またはJavaScriptライブ
ラリを取り込んで使用
• 例:JapaneseCalendar(Forge)
–System.Globalization.JapaneseCalen
darクラスをラップする
かな変換
• ひらがなとカタカナ、半角と全角を
相互に変換する機能。これも標準に
はないはず
• ExtensionかJavaScript取り込み
• 例:kanaxs C# Actions(Forge)
–https://wiki.dobon.net/index.php?fr
ee%2FkanaxsCSharp をラップしたも
の
補足資料
エンコーディング-SOAP
• SOAP連携の場合(試していないけど……)
–SOAP Consume機能
• 対象外のエンコーディングを使っている場
合、Extensionを作る
• SOAP Consumeの
OnBeforeRequestAdvancedで作った
ExtensionのActionを呼ぶ
– https://success.outsystems.com/ja-
jp/Documentation/11/Extensibility_and_Integration/SOAP
/Consuming_SOAP_Web_Services/Use_Advanced_Extensi
bility/Example%3A_Use_a_different_character_encoding
Reactive Web App/Mobile
の場合(0-補足)
• IdeaのUrl
– https://www.outsystems.com/ideas/958
4/integrated-translations-in-reactive-and-
mobile-just-like-traditional-web
Reactive Web
App/Mobileの場合(1)
• 現時点(2020/09)では、標準では複数
言語を扱う機能がない
– Reactive Web Appの発表時のディスカッ
ション
(https://www.outsystems.com/forum
s/discussion/52761/reactive-web-the-
next-generation-of-web-apps/)による
と「Regarding multilingual, you are
right, this is similar to mobile. We
might improve this in the future.」なの
でそのうち実装されるかもしれない
Reactive Web
App/Mobileの場合(2)
• 代替の実装方法として、Forgeのコン
ポーネント「Multilingual
Component」がある
• Reactive/Mobile両方で使用可能
• 翻訳データを自分で用意する
• ロケールはコンポーネントにある
SetLocale Actionで変更する
Reactive Web
App/Mobileの場合(3)
• 自分でコンポーネントのテキスト取
得Actionを呼び出す必要がある
• 煩雑で非標準機能なので、必要性を
よく検討する
パラメータ
①モジュールで一意なキー(自
分で設定)
②翻訳設定がなかったときの
デフォルト値

Out systemsaichiusermeeting#5 lt2