ITにかかわる全てをご提供するIT企業スタッフブログ当社ブログは社員での持ち回りで掲載しております。ビジネスだけではなく、社内イベント、プライベートなことを書いておりますので予めご承知おきください。普段はPHPを中心にプログラムして、ちょっとPerlを使ったり。Rubyをいじったりしているのですが、今回、数年ぶりにC#を書いています。C#は、Microsoftが作成したC++やJavaに影響を受けたオブジェクト指向言語で、Windowsで、.netフレームワークという共通化されたライブラリをベースに動きます。iOS(MacやiPhone)やAndroidなどは、フレームワーク部分が異なるため、そのままでは動きませんが、Xamarinという互換性の高いフレームワークがあるので、これを利用するとiOSやAndroidもクロス開発ができるらしいです。C#は結構Java並みに型のチェックの煩い言語です。いえ組み込み型の値とクラスのオブジェクトの動作が異なるなど、純粋オブジェクト指向言語とはいえないようです。今回作るのはWindowsのフォームタイプのアプリケーションです。フォームのタイプのアプリケーションというのは、画面に部品を貼り付けて、それに付随したコードを書いて、動作を検証して、また、デバッグして、コードしては難しくないのだけど、ひたすら面倒。現状で動いているコードを参考に移植を進めていくのですが、Webでこういう動的な入力部分を作ると、AJAXを駆使して作らざるを得なくなるので、とても大変だけど、C#はひたすら面倒なだけ。PHPだと連想記憶配列があってこれを構造体のように使ったりできるのだけど、C#では、ひたすらクラスを作ることになります。Formは10個くらいなのに、クラスファイルは20。中には、ベースのクラスとそのリストの二組を書いているものもあって、30近くのクラスが。今回作ったクラスで、CSelectItemというクラスがある。プルダウンなどの選択肢を入れておくクラス。実際はこれはリストがあって意味のあるクラスなので、リストのクラスも作成。普通の関数で書いたのだけど、ジェネリック型とか、ラムダ式を使えば汎用的になりそう。そっくりな関数を二個書くのはバカらしいので、ラムダ関数を使ってまとめます。ついでにListクラスを継承してListExクラスを作成こちらに移動。Friday)というイベントをしていて、これまでの1年あまり、様々なテーマでネタが披露されています。私も昨年2月に、Web制作を効率化できるタスクランナーであるgulpとBrowserSyncについて発表しましたので、紹介させて頂きます。※1年近く前に発表した内容なので、ちょっと古いかもしれませんが、基本的な考えはさほど変わっていないはずです。gulpは、Web制作の中で、毎回行うような作業を自動化してくれるツールです。gulpについての基礎については、札幌でフリーランスで活躍しているh2hamさんのブログで紹介されていますので、よろしかったらご覧ください。ブラウザでの表示を自動的に更新というようなことを自動化するために使うことが多いようです。Sass/SCSSは、CSSスタイルシートの定義を構造化して書くことでコーディング効率やソースコードの保守性を向上させる技術です。札幌でも、3年ほど前から勉強会などでSass/SCSSについて取り上げられてきて、広く普及してきているようです。具体的には、弊社のブログで以前取り上げられているので、よろしければご覧ください。PHPなどによる動的ページで使われるというのはあまり聞いたことがありませんでした。PC内に作ったVMWareやVirtualBoxなどの仮想環境に開発サーバを構築して開発する際のタスク自動化を試してTGIFで発表しました。BrowserSyncによって表示が自動的に更新される、というような流れを作ってみました。TGIFで発表した内容をベースに、SaCSSという勉強会で発表したスライドを以下に貼り付けますので、ご覧頂ければと思います。Murakamiなお、このときに実際に作ってみたタスク定義のgulpfile.jsをgithubに載せてありますので、こちらもよろしければご覧ください。続き、しつこく続編です。ようにしても、コンテナを立ち上げてもサービスを開始してくれない、というところで止まっていました。今回は、Supervisorを使って簡単に起動する方法を調べたので、まとめてみます。Supervisorっていうのは、pythonで作られたプロセス管理システムなので、pythonを入れる必要があるので、それも含めて手順をまとめていきます。こんな流れで進めていきます。コンテナを作りなおすのは、起動時に走らせる処理を変えるためです。コンテナを起動してrootで操作します。vi等のエディタでファイルを新規作成します。以下の内容で保存します。作ったsupervisordのファイルに実行権限を与えます。設定ファイルのひな形を作成します。次に、作ったひな形をエディタで開きます。ファイルの末尾に以下の2行を加えます。次に、具体的にサービスを起動する設定のファイルをvi等のエディタで新規作成します。※先に設定ファイルを入れるディレクトリを作成します。以下の内容で保存します。ここまで行ったら、コンテナを終了しておきます。