自由に、スマートにします。コメントなしpythonのテンプレートエンジンを使って簡単に解析入力ファイルを作成するRESP-Dを始め画面上で操作するプログラムが増えてきたとは言え、入力用のテキストファイルが必要になるタイミングがあります。小規模なモデルでしたら一から書き上げることもできますが、モデルが大きくなってくるとどうしても自分でスクリプトを書きたくなるのではないでしょうか。その際に便利になるテンプレートエンジンについてご紹介したいと思います。Control)変数の扱いまとめテンプレートエンジンとは?テンプレートエンジンはWebシステム開発でよく使用される技術です。下図のようなログインした後、自分のログイン名が表示されるページを見かけることが多いのではないでしょうか。これは決してユーザーごとにhtmlファイルを用意しているわけではなく、ユーザー認証後の名前をhtmlファイルに割り当てています。このような動作を可能にする仕組みがテンプレートエンジンと呼ばれます。例のhtmlファイルを下に示します。%}</main></html>テンプレートエンジンを使用するメリットなぜこのテンプレートエンジンを使うと便利なのでしょうか。それはテンプレートエンジンを用いることで、テキストファイルの見栄えとオブジェクト操作(プログラム内部で節点や梁などを生成する操作)を分離することができる点にあります。具体的には変更しない値はプログラムに組み込む必要がない(テンプレートファイルに書いておけばよい)開発初期段階から完成形のイメージを明確にできるテンプレートファイルを複数用意しておけば、同じプログラムをほとんど変更することなく複数種類のテキストファイルを用意できる。プロトタイピング(RESP-F3Tの入力ファイルを作る)では早速、テンプレートエンジンを用いてプロトタイピングをしてみたいと思います。サンプルとして弊社のRESP-F3T用の入力ファイルを作ってみたいと思います。テキストファイルですので、本プログラムを参考に皆さまのご利用目的に沿ってファイル拡張子やその内容は変更ください。pythonで用いることができるテンプレートエンジンには色々ありますが、今回はjinja2というライブラリを使ってみます。参考URL:jinja2完成例モデルを構成するスクリプトも合わせて作る必要がありますので、完成したプログラム全体はGitHubに公開しています。下記よりご覧いただけます。テンプレートエンジンによるRESP-F3T解析プログラム作成(全体)構成としては下図のようです。テンプレートファイルから解析入力ファイルを作るスクリプトを見てみます。%}今回のプログラムを用いると下図のような複雑な形状の解析モデルも簡単に作成できます。以前のプログラムTipsで紹介した事柄は割愛したいと思います。"__main__"の意味やクラスの呼び出し方などは過去の記事をご覧ください。【プログラムTips】PythonでCSVファイルを固定書式に変換するテンプレートエンジンの設定テンプレートエンジンであるjinja2の読み込みは以下のように行います。厳密にはjinja2のライブラリからEnvironmentとFileSystemLoaderだけを読み込んでいます。FileSystemLoaderテンプレートエンジンの設定は主に以下の三行分のコードで完結します。template.render({"Nodes":nodes,"Columns":columns,"Girders":girders})最後の行でテンプレートファイルとの対応をとっています。テンプレートファイル上の変数(”Nodes”,”Columns”,”Girders”)にpythonスクリプト上のnodes,columns,girdersを渡しています。テンプレートファイルの書き方テンプレートファイルの記法はpythonと似通っています。%}で囲った部分にfor文やif文を書くことができます。%}で囲う必要があります。改行を消す(WhiteSpaceControl)前節のコードをよく見ると”%”の前に”-“がついています。Controlと呼ばれ、改行や空白を削除する処理になります。デフォルトの状態では、for文が回るたびに改行が自動的に入力されてしまいます。それらの改行を削除するために”-“符号を入れています。変数の扱い変数の値を埋め込みたい場合は、”{{}}”で囲います。{{Column.name}}まとめテンプレートエンジンを用いることで、ファイルを生成する仕組みがシンプルで明確になり、保守性に優れたシステムにできることをご紹介しました。今回はRESP-F3T用の入力ファイルを作成しましたが、テキストファイルであればどのようなファイルでも生成できますので、ぜひ皆様がお使いのプログラムに合わせて作ってみてください。完成したプログラム全体はGitHubに公開しています。下記よりご覧いただけます。コメントをキャンセルメールアドレスが公開されることはありません。Q&A】加振終了後の自由振動まで解析して残留変形を求めるにはどのようにすればよいでしょうか。Q&A】フレームが定義できない大梁の応力はどのように確認できますか。Q&A】層跨ぎの間柱ダンパーにおいて初期応力を負担させないとエラーとなるのは何故ですか。