iPX社員によるブログ

iPX社員が"社の動向"から"自身の知見や趣味"、"セミナーなどのおすすめ情報"に至るまで幅広い話題を投下していくブログ。社の雰囲気を感じ取っていただけたら幸いです。

自動運転とトロッコ問題

ご無沙汰しています。
相変わらずの雨男っぷりを発揮していますishizawaです。
当日は曇り予報だからと洗車をすると毎回雨に降られてへこんでます。
(晴れの日は洗ってる途中から乾くんで汚れが残りやすいんですよね)

ブログ担当少し前に大体体調を崩すのは何故なんでしょうかね。
今年は3月末にインフルエンザにかかりました…orz
だんだん暑くなってくる時期なので水分補給はしっかりしましょう。



今回は去年出たセミナーで話題に上がったネタを書こうと思います。

続きを読む

PC9801-VXと改造コード

はじめに

iPX砂子です。前回から随分と期間が空きました。当番に関係なく記事のネ タがあるなら書いたほうが良いかもしれません。

前回はEmacsネタだったわけですが、丁度その頃、未来技術遺産の発表があ りました。PC-9801も記憶遺産に選ばれました。

PC9800シリーズの思い出

私の父親がPCが好きで家にはPC9800シリーズが何台かありました。私が中学 生位の頃の話です。5インチのフロッピーディスクドライブが内蔵されてい るようなやつです。確か型式はPC-9801VXだったきがします。まあ、世間で はWindows95が発売されたころなのでその当時でさえ”旧式”ではありました。

当時はTVゲームが好きでプレイステーションRPGを主にプレイしていまし た。なにかの雑誌で改造コードなるものをみて、プロアクションリプレイを 購入してRPGのキャラクターのステータスを改変したの覚えています。

少しすると雑誌に掲載されている改造コードを使うだけでは物足りなくなり、 自ら改造コードを作成できないと考えはじめました。プロアクションリプレ イのカタログにPCと繋ぐことでプレイ中のTVゲームの解析が行なえるような やつです。父親に相談すると家にあるPCが対応しているので設定までしてく れることになりました。

購入した拡張ボードをPCの拡張スロットに設定してもらい、拡張ボードと プロアクションリプレイをフラットケーブルで接続してプレイステーションの メモリを解析するわけです。 設定が完了したPCとゲーム機で画面上に表示されている数字を変更できない か試行錯誤していました。

なにをやっていたのか?

今の知識で当時やっていたことを説明するならば、メモリに格納された値を 番地指定で更新していたと表現できるでしょう。 改造コードとは指定した メモリアドレスにある値を編集するものだったようです。

おそらく改造コードの作成作業とはプロアクションリプレイと繋げたゲーム機 のメモリをプロセスメモリエディターで編集していたのではないでしょうか?

具体的な作業

あの頃にやっていた作業をjavaのコードで再現してみましょう。

Characterクラスで名称、HP/MPを定義する。FF7のキャラクター"クラウド" をインスタンス化する。そして、そのインスタンスをバイナリシリアライズ し、ファイルに出力する。この出力したファイルを書き替えてキャラクター “クラウド"のHPを任意に変更できないだろうか?

コマンドライン

javac FF7.java

rem シリアライズ
java FF7

rem 書き換え

rem デシリアライズ
java FF7 a

Deserialized Character...
Name: CloudStrife
CurHP: 101
MaxHP: 223
CurMP: 50
MaxMP: 80

ソースコード

参考文献にあるTutorialPointのシリアライズのページのコード参考に一部書き換え。

import java.io.*;

public class FF7 {

    private static class Character implements java.io.Serializable {
        public String name;
        public int cur_hp;
        public int max_hp;
        public int cur_mp;
        public int max_mp;
    }

    public static void main(String [] args) {

        String name = "CloudStrife";

        if(args.length == 0){
            Character c = new Character();
            c.name = name;
            c.cur_hp = 101;
            c.max_hp = 223;
            c.cur_mp = 50;
            c.max_mp = 80;

            try {
                FileOutputStream fileOut =
                    new FileOutputStream(name + ".ser");
                ObjectOutputStream out = new ObjectOutputStream(fileOut);
                out.writeObject(c);
                out.close();
                fileOut.close();
                System.out.printf("Serialized data is saved in " + name + ".ser");
            }catch(IOException i) {
                i.printStackTrace();
            }
        }
        else{
            Character c = null;
            try {
                FileInputStream fileIn = new FileInputStream(name + ".ser");
                ObjectInputStream in = new ObjectInputStream(fileIn);
                c = (Character) in.readObject();
                in.close();
                fileIn.close();
            }catch(IOException i) {
                i.printStackTrace();
                return;
            }catch(ClassNotFoundException ce) {
                System.out.println("Character class not found");
                ce.printStackTrace();
                return;
            }

            System.out.println("Deserialized Character...");
            System.out.println("Name: " + c.name);
            System.out.println("CurHP: " + c.cur_hp);
            System.out.println("MaxHP: " + c.max_hp);
            System.out.println("CurMP: " + c.cur_mp);
            System.out.println("MaxMP: " + c.max_mp);
        }
    }
}

バイナリエディタでCloudStrife.serを開きます。すると下図のような画面 になります。(図はEmacsのhexl-mode)

f:id:ipx-writer:20170531194034j:plain

コードでHPは101(dex)に設定してあるため、65(hex)を探します。しかし、 65(hex)は複数あるためどれがHPを表すものかは特定できません。そこでソー スコードを編集してHPを110にして再度シリアライズしてみます。それをバイ ナリエディタで前回のシリアライズしたものと比較します。

f:id:ipx-writer:20170531194058j:plain

前回65(hex)であった4箇所のうち1箇所が6e(hex)になっています。どうもこの 箇所がHPを表すアドレスのようです。この箇所をff(hex)に変更して変更して 、デシリアライズしてみます。

rem デシリアライズ
java FF7 a

Deserialized Character...
Name: CloudStrife
CurHP: 255
MaxHP: 223
CurMP: 50
MaxMP: 80

成功です!!!プログラムを編集したりせずにバイナリデータの変更が行なえま した。こんな感じでキャラクターのステータスをMaxにしたりしてましたね。

結び

上記のjavaでの作業は改造コードというより、セーブデータの書き換えに近い です。しかし、作業そのものはほとんど同じなので今回はシリアライズしたデー タの編集で代用しました。プロセスメモリエディタのインストールなどが煩わ しかったという理由もありますが。。。

子供時代にやったことに限らず、過去の作業を振り替えり現在知っている知識 で当時の疑問などを解決できるかを試してみると発見があるやもしれませんね。

しかし、こんなことやってたからプログラマーになったんだろうな。。。

参考文献

  1. http://qiita.com/icelandnono/items/d30bce978bea8939b8a1
  2. https://www.tutorialspoint.com/java/java_serialization.htm
  3. http://sts.kahaku.go.jp/material/

人とくるまのテクノロジー展2017 横浜へ行ってきました

CPUのすずきです。

5/24から3日間開催されている、公益社団法人自動車技術会主催の自動車技術展:人とくるまのテクノロジー展2017 横浜@パシフィコ横浜へ行ってきました。

f:id:ipx-writer:20170526102554j:plain

自動車の部品からシステムまで様々な会社が参加され、部品の軽量化やエコ、自動運転など最新技術の展示が多くありました。

車の開発はいくつもの企業が展示を行っていましたが、それぞれ手法が異なっており、凄いと思いました。
自動運転のブースがあり、私は免許を持っていないのですが、いつか免許がなくても車が運転できるようになれば良いのにと思いました。
しかし自動運転システムのシミュレーションの体験で「×××の為、手動運転に切り替えます。」というケースがあり、免許なしでの運転は当分先だと思いました。

旭化成株式会社のコンセプトカーでは、カメラから取得した顔から脈の状態を計測し運転可能な体調であるかを計測する機能や、
車内のCO2濃度を計測し快適な運転を行えるよう空調を制御する機能などを搭載している車を開発しており、まさに社内の各部署の技術を結集させたコンセプトカーだと思いました。

ドライブシミュレータの展示ではコントローラであるハンドルに操作感をフィードバックすることで、タイヤが道路に食いつく独特なハンドルの重さを再現した展示をしている企業や、
ドライブシミュレータの小型+高性能化、実際に車を運転した場合の揺れや傾きを再現する仕組みを展示している企業があり、面白いと感じました。

f:id:ipx-writer:20170526103303j:plain
f:id:ipx-writer:20170526102913j:plain

その他、講演会も行っており、大変ためになる展示会でした。

日刊工業新聞社の主催でMBDセミナー@名古屋を開催しました

EPLU(Engineering Process Leading Unit)の加藤です。

 

5/17(水)に、日刊工業新聞社の名古屋支社にて、MBD(モデルベース開発)に関するセミナーに講師として登壇しました。

昨年12月の東京開催に引き続き、二回目の開催となりました。

f:id:ipx-writer:20170522104000j:plain

前回は半日コースでしたが、今回は1日コースという事で、内容を見直して実施しましたが、より分かり易い説明が必要だと今回もあらためて感じました。

またこのような機会があれば、さらに分かりやすいコンテンツを用意できたらと考えています。

 

このようなセミナーを通して、実際に現場でお仕事をされている方々の意見を聞く事が出来るので、むしろ我々の方が勉強させて頂いた、という感覚があります。

セミナーの中で頂いた質問やアンケートの内容は、今後の活動の参考にしたいと思います。

 

参加頂いた受講者の皆さま、ありがとうございました。

(宣伝)個別セミナーも対応可能です

お客様先へ訪問して、本セミナーと同様の内容を紹介させて頂くことも可能です。

MBDを推進するためにお悩みのお客様は、当社ホームページよりお問い合わせください。

 

 

三浦半島の荒崎の旅

EPLU(Engineering Process Leading Unit)のパルハットです。今年の三月に三浦半島荒崎の海沿いに行って来ました。冬がちょうど終わったごろなので、太陽の日差しと春の涼しい風が微妙にバランスが良かったんです。写真が興味で、いろんな風景を撮ってみました。自然の力で岩や石が色んな形になって、写真取るのにも面白く感じました。以下はその時に取った写真なのです。美しい風景ではなく、白黒で自分が好きな写真を取ってみました。

f:id:ipx-writer:20170417103244j:plain
f:id:ipx-writer:20170417103125j:plain
f:id:ipx-writer:20170417103154j:plain
f:id:ipx-writer:20170417103146j:plain
f:id:ipx-writer:20170417103151j:plain
f:id:ipx-writer:20170417103159j:plain
f:id:ipx-writer:20170417103208j:plain
f:id:ipx-writer:20170417103214j:plain
f:id:ipx-writer:20170417103224j:plain
f:id:ipx-writer:20170417103220j:plain
f:id:ipx-writer:20170417103230j:plain
f:id:ipx-writer:20170417103236j:plain
f:id:ipx-writer:20170417103239j:plain
f:id:ipx-writer:20170417103610j:plain
f:id:ipx-writer:20170417103620j:plain
f:id:ipx-writer:20170417103637j:plain

今回は写真が多くて、書くことが少なかったんですが、それもそれでいいかなと思います。

自社キャラクターをリミックスする件

iPX 2Dデザイン部 かのまたです。
今回は、題材を除いて真面目な話となっております。

iPXのキャラクター

1年ほど前に、社長より「iPXのキャラクターを作成せよ」とのお題を命ぜられた方がおりました。
企業が発信するキャラクタライズは日本の古今東西で実施されているものですが、うまくいったものは限定的であったと感じています。
昨今では、キャラの露出度が高いために住民から反対されたものがあったり、スカートなのに下着が透けている構図となってしまったがために批判を受けたりと、なかなかいいところがありません。

命ぜられたM氏は、四苦八苦の末にキャラを完成させました。
私は0から行うデザインセンスが皆無なので、甚く感銘を受けたことを覚えています。
自社キャラクターは世に言う「擬人化」とは違うかもしれませんが、源流を同じくすればそれなりです。
特徴量をどこに置くか、どこに配置するか...等、考えることは沢山あったのだろうと思います。
自社で製品を持っていればそこに重きを置けばよいのですが、そうもいきません。
iPXがどのように擬人化されるのか全く予想もつかなかったのですが、あやふやなものをここまで形にしてくるのは素晴らしいと感じました。
私の作品ではないので、ここに置けないのが残念ですが...

リミックスした結果

私の持つ技術など所詮一人芝居です。
もっと良い技術を持つ人など世の中には数えきれないほどいることを知っている必要があります。
よく大学で「自分よりできる人間など掃いて捨ているほどいることを知っている必要がある」ような旨を言われました。
たとえ数学のような分野であっても、八百屋のおばちゃん相手でさえ油断しないことだと教えられました。
しかし、最高のものを作るという使命感は、いつも忘れることはできません。

せっかくのアイディアをしまっておくのも勿体ない話です。
アレンジして、無い部分は想像して付け足して、勝手にいろいろしてしまいましょう。
まあ、恥ずかしながら、こんな結果になりました。
f:id:ipx-writer:20170416000256j:plain
RQな感じだったので勝手に傘を持たせていますが、木刀とかでも良かったかも知れません。
私が描くとどうしても中性的な方向に向かうのか、2D感が薄くなります。
実際、見た方々は「3Dモデリングは大変だっただろう」とおっしゃっています。
いいことでもあり悪いことでもあります。

バストアップだとこんな感じです。
f:id:ipx-writer:20170416000729j:plain
正面である場合に、普通削減方向になるはずの鼻を描くのは私の中の正義です。
ある絵師のこのような正面画が好みだったためです。

ソフト

Sai 1.2.0-Beta6 (ライセンスは個人購入している)
ソフトはいろいろ言われますが、初期からお世話になっているソフトが一番です。
「筆」と「ぼかし」の質が好みです。
良く学ばない私にはPhotoshopの塗りはできませんでした。
どのソフトでもすごい人はすごいのですよ。

ハード

Wacom Intuos4
6年ぐらい使用していている愛用品です。
当時の財力ではなかなか高かったと思います。(24,000円ぐらい?)
f:id:ipx-writer:20170415230638j:plain
ポインティングできる領域に白いシールを貼ることで、滑りが少ない好みのペン先の感触にしています。
なかなかオススメです。

大きさ

A4印刷でも余裕で耐えられる 3500pixel × 6500pixel
ここでは縮小しているものを貼っていますが実際は大きいです。
小さく作って後に大きくすることはできないが、大きく作って小さくすることはできるのです。
拡大の工学的手法は数多ありますが、やっぱり補間に他なりませんし、ノイズ少な目なイラストレベルでは拡大の補間はノイズです。

塗り

レイヤをたくさん使う類の「なんちゃって厚塗り」
基本的には「自分の持っているロジック」に従って色を入れていくことの繰り返しなんですよね。
これについては、今度ネタとすることがあるかも知れません。

ディスプレイの色調調整

MACを使用する場合にはいらないかもしれません。
i1 Displayという機材とi1 Profilerというソフトを使用しています。
f:id:ipx-writer:20170415231909j:plain
簡単に色調を自動補正してくれます。
特に複数画面使用していると1画面1画面の色合いが違っていることが普通ですが、これを一律に調整できます。
作ったイラストにプロファイルを乗っければ、他のディスプレイで画像とディスプレイ間の色調補正が行われます。(表示ソフトに由来するが)
ただし、ディスプレイと人間の目の間の補正は、イラストを見ているディスプレイを補正する必要があります。

根性の有無

何をやるにしても、なかなか自宅でダラダラして行動するに至れないのが現状です。
ちょっと塗っては長い休憩をとり...1日で大してできていないということの繰り返しです。
それを考えると、1日に何時間も集中して作業できる職業絵師はすごいなと思います。

自社でよいものを作るということ

イノベーションが叫ばれます。
イノベーションとは、個人がこれを達成するには厳しく、企業が戦略的に起こせるほど簡単ではないと思っています。
利害を一としている組織において何故か起こらないものが、利害を異にする社会で起こることがしばしばあります。
それは「同人」の業界です。
あるポッと出のキャラクターがその後に繰り返される同人の味付けによって深化を続け、やがて誰もが知っているキャラクターに変わるということが利害もないのに行われる不思議な活動です。

ナレッジマネジメント

言うは易いが、企業でこのような活動を起こすことはできるのでしょうか。
ここに1つのヒントがあります。
何年も前に提唱されたナレッジマネジメントというものがあります。
知識の蓄積、共有、向上を目的とし、知識が検索されることや人to人が繋がりを持つことなどから、新たな考え方が生まれることを期待できます。

  • 「考えている」をドキュメントなどの「形」にすること
  • 「形」が他の人に見えるところに置いてあること
  • 検索可能なこと
  • 見出しで内容がほぼ分かるなど、難しくないこと
  • 企業に新しいことをする文化があること

結局必要なものは明示化、データベース、文化です。

iPXの、その非常に小さな第一歩目がM氏のキャラクタライズであり、第二歩目が私のリミックスであると考えます。

Learning a foreign language

Hello everyone,

In this blog, I am going to share some information about learning a foreign language.

I am from India and I am living in Japan since 2010. From my personal experience I felt that, any person who wants to survive in any foreign country, one must learn that country`s language to lead a very comfortable and independent life.
Also people who wants to learn about other country`s culture language is very important.
Anyone can learn a language by joining a full time intensive certified course from a language school spending huge money and time.
But it`s not easy for the people who don`t have time and can`t afford money.
Also these certified courses are not guaranteed for one to get master in a foreign language.

So here are some tips or methods to get master in a foreign language without spending money or allotting special time,

  1. Make the language learning as like your daily routines such as eating, sleeping etc. Allotting a minimum time (even 10min a day) senses a lot in language learning.
  2. Set a simple and achievable goal for each level of learning. (e.g) Ten words a day etc. So that you don`t feel burden.
  3. Establish friendship with the native speakers. By this one can acquire the native style of the language. Also it helps to improve the listening and conversational skill.
  4. One of the most common barriers to conversing in a new language is the fear of making mistakes. It should be overcome and should not hesitate to converse.
  5. It’s a good practice to connect the language learning with your hobbies. For (e.g) if the hobby is watching movie, then watch the movie in the foreign language you wish to learn.
  6. Start writing your daily life moments (like writing diary) using simple words. It will help you to learn and use the vocabularies relate with your daily life.
  7. Start using gadgets that can assist you in your language learning.
  8. Engage yourself in some volunteer activities where you can get chances to learn and practice the language parallely.
  9. It is not necessary but still it`s a good habit to evaluate your language skill by taking language proficiency level test. That will give you confident and motivate you to continue the learning to next level.
  10. As per the saying, “Practice makes man perfect”, proper practicing of language will help you to get master in any foreign language.

The above shared contents are from my personal experience.
I feel that these tips have really worked for me. So I would like to share through this blog.

Thank you very much for your attention.
Sindhuja.P