「テキストエディタ」を含む日記 RSS

はてなキーワード: テキストエディタとは

2015-06-25

テキストエディタの育成

2年位、試してみては諦めていたvimに段々慣れてきた。

よくネットで、vim設定ファイルである.vimrcを育てるという言い回しが段々わかってきた。

まだ俺のvimrcは40行位だし、プラグイン10個に満たないけれど。

俺程度が何かやりたいと思い付くことは既に誰かがやっていて、

vimrcやらプラグインができていて、ありがたい。

はじめは凄く使いにかく感じて、2年もちょっと触ったりサクラエディタに戻ったりしてたけど

ちょっとの山を越えたらもう操作感がやめられなくなってしまった。

麻薬のようだ。麻薬なんてしたことないけど。

2015-03-31

エクセルはいつも何考えてるんだろうな。

おれはただエクセル文章コピーしてよそで使いたいだけなんだ。

テキストエディタからエクセルの画面がアクティブになるのに時間がかかって、選択したらレインボーグルグルまわって、それが一息ついたらようやくコピーできる。

その間エクセル君は何を考えてるんだろう。

こんなに時間がかかるの君だけだよ?

終了する時もいっつもぐずってる。

もうちょっとテキパキと動いてくれないとおこだよ。

エクセル君と比べたらイラレちゃんの方がずっと早いんだから

2015-03-17

http://anond.hatelabo.jp/20150316195608

はてぶコメント見たらTEditorの名前があった。たしかにあのコンポーネントが多くのエディタを生み出していた。自分テキストエディタじゃないけどTEditorを使ったアプリ書いてたので良く覚えてる。

しかし開発環境低価格化/無償化する今、未だに一番廉価なStarterでも2万円超するDelphiを選んでしまった作者たちは今何を考えているのだろうか。

それとも未だDelphi8あたりの無償版を使い続けているのだろうか。

2015-03-16

ここ数年の戦争で負けていったWindowsで使えるテキストエディタたち

これらのエディタ新規ユーザーを獲得していくのは難しいでしょう。

Windowsの3強と言えばSublime TextAtom、bracketsだよね。

2015-01-17

http://anond.hatelabo.jp/20150117062109

まあまさに設定ファイルいじるのにvimちょっと使えれば問題なし。

後はなにかしら1つ隅々まで使いこなせるテキストエディタはあるほうがいいと思う。

2014-12-22

テキストエディタATOM

名前をよく見かけるようになったからためしにインストールしてみたけど異常に起動が遅い。

VisualStudio、NetNetBeans、AndroidStudioより遅い。

IDEみたいに起動しっぱなしで使うのが前提なのか?

それとも俺の環境が変なのか。

2014-11-05

http://anond.hatelabo.jp/20141105183743

基本的機能を備えたテキストエディタに簡単なドロー機能がついていれば何ら問題ないだろう。

そも手描きの黒板は手描きに最適化されているのだから、それをPCで完全再現しろ、できなければPCダメだ、というのがおかしな話

PCが導入されれば板書はPC最適化されるし、それを元にしたノートも同じく最適化された形式になる。

PC最適化された文書は、さぞ手描きに向かないだろうが、それを以って「手描きではノートを作れない」とは言うまい

2014-11-04

http://anond.hatelabo.jp/20141102214208

俺も時々なるからOS問題だと思うよ

Winキーの他にAltやCtrlでも起こる

ロックされたと思われるキーをもう一回押せばだいたい治る

テキストエディタだけ問題ないというのは、単にそのエディタでは(たとえば)Alt+hに何も割り当てられてないからhキー単体を押したのと同じ扱いになるというだけだと思う

 

詳しく調べたわけじゃないが、たぶんカーネルモードプロセスか何かが裏でCPU占有ちゃう瞬間があって、そのときキーを離すとキーリリースイベント無視されるんじゃなかろうか

2014-11-02

固定キー機能っぽい状態になるのだけど誰か助けてよ

タイトル通り。どこに質問を書けばいいのかわからず、とりあえず増田に書いておく。OSWindows7

状態としては、firefoxとか使ってるときにvやcやhといった一部のキーが動作しなくなる。firefoxだけかと思ってたらTweentwitter用のソフト)でも使えなくなったりする。場合によってはdを押すとウィンドウがすべて最小化されたりする。

固定キー機能ってのは、特定キーがずっと押されたままの状態になってしまうクソ機能。右のシフトキーを5回押したりすると出てくるアレね。Win+Dでウィンドウ最小化できるため、固定キー機能Winキーがオンになってるんじゃないかと考えた。

ところが、固定キー機能オフコントロールパネルコンピューターの簡単操作キーボード動作の変更→固定キー機能有効にするのチェックを外す)にしても同様の現象が発生。しかも全部のソフトで起こるわけではなく、『Tweenfirefoxではhキーが押せないけどテキストエディタだと問題ない』みたいな状態なのが非常に厄介。

キーボード故障も考えたが、現象発生中に別のキーボードに交換しても同様の現象が続いてるため、OS側の問題なんじゃないかと考えてる。

上記の現象PC再起動すると正常に戻る。

まだOSの再インストールしてないんだけど、再インストールするとデータバックアップとかがすこぶる面倒なので出来れば避けたいところ。yahoo知恵袋とか探しても『キーボード故障だね! 買い替えなよ!!』って回答しか見つからない。どうしたもんか。

2014-10-26

我が家ベネッセ顛末

最近報道も下火になってきたようなので、我が家ベネッセ顛末を記録しておく。

2014年3月

xxxx+benesse@yyyy.com みたいなメアド宛に迷惑メールが届き始める。

xxxx+benesse@yyyy.com は、ベネッセ提供サービス自分アドレスとして登録したもの。当然、ベネッセサービス以外には使っていない。

2014年4月

Web経由で、ベネッセに問い合わせ。情報漏洩などの事実がなかったか調査と回答を依頼。

登録内容の確認などを挟み、2往復目で以下の回答。要は、

ということ。

平日にまとまって対応できるような時間もなく、交渉のプロを相手に変な言質を取られるのもイヤだったので、何かあれば電話ではなくメールでやりとりしたい旨を連絡。

引き続きセキュリティには気をつけるといった旨のメール受領して、いったん終了。

2014年7月

ベネッセ情報漏えい報道を受け、やっぱりオレ様の情報漏えいしたのでは? と改めて確認

オレ様のメアド漏えいしていないとの回答。加えて、業務外や社外から不正アクセスはなかったことも改めて確認たとのこと。

この時すでに、報道で、内部関係者が通常業務を装って不正情報を持ち出したことが分かっていたため、「業務外や社外から不正アクセスはなかった」確認だけでは不十分と感じた。また、この直後にオレ様が使っていたサービス情報漏えいしていたと報道発表。なぜ、こうも調査が甘かったのか理由を問いただしたメールに対する回答。ほぼ平謝り状態だが、中身はない。

2014年9月

9月10日個人情報漏えい事故調査委員会の報告直後、結局オレ様の情報漏えいしていたと確認できた旨、連絡を受領

これ以降

周囲の話を聞く限り、オレ様へのお詫び対応は優先的に行われた模様。手紙が来たのがやたら早かった。

さらに1ヶ月半後、追加で2通のお詫びの手紙が来た。結局、我が家からは3件の漏えい確認できた、ということだろう。

の2点は、正直許し難い。

調査結果によれば、6月27日情報漏えいの可能性を認識したとのことであり、オレ様の4月の問い合わせは全く生かされていなかったということになる。また、6月27日以前にも情報漏えい示唆する問い合わせがあったなどという記載もないようである。もう少し、顧客の声1つ1つに真摯に向き合う姿勢があれば、こんな事態を引き起こすこともなかったのではないかと思う。重箱の隅系だが、「お客様本部」の位置付けを「お客様への支援を行う専門組織」としているあたりも気になる。ベネッセ不手際迷惑している「お客様」に対し、ベネッセが「支援」をするというのである支援などという第三者的言い回しではなく、ベネッセ自らが回復させるという主体性を見せてもよいのではと思う。

さらに、問い合わせフォームについても問題を感じた。こちらが投入した質問文が、問い合わせシステムから返ってこないのである。こちらがテキストエディタなどで作成した文章コピペすれば、一応保管はできるのだが、ベネッセ側が認識した質問文を、問い合わせ元は確認できない。うがった見方をすれば、ベネッセ質問文を偽装できるのである。よく「以下のような問い合わせを受け付けました」と、質問文をそのまま返してくる問い合わせシステムがあるが、ベネッセはなぜそうしなかったか、ということである

情報漏えいへの対策としては、今ベネッセが取り組もうとしているように、システマティックにできるようにすることが重要だとは、オレ様も思っている。しかし、さらにその上で、数十年にわたり様々な方法個人情報を集めてきた会社としてその責務を認識し、顧客に対する姿勢がどのように変化するか、も注視していこうと思う。

ベネッセ以外に

ここ、数年思っているのだが、「xxxx+zzzz@yyyy.com」といったメールアドレスを受け付けない入力フォームに、よく、出くわす。「+」がメールアドレスに使えない文字だと言われるのである。はじかれたときメッセージで「正しいメールアドレス入力してください」というのをよく見る。

いろいろ理由はあるのだろうが、ぜひ、「+」も使えるよう、「修正」してもらいたい。「+」は、メールアドレスに使用できる文字のはずである。間違ったメールアドレスなんかでは、決してない。

2014-09-22

ATOKって金出す価値あるの?

 何年か前だけど評判がすごいからためしにインストールして一ヶ月くらい使ったけど、無料IMEに比べて特に便利だとか頭いいとか感じなくて、試用期間が終わったらそのままアンインストールしたことがある。

ATOKが頭いいとか使いやすいとか気のせいじゃないの? 単に慣れてるだけなのを性能いいって言ってるだけとか。

 以前の職場で、PCに入れるアプリ会社が許可したものだけってことになって、ATOK秀丸ベッキーあたりの有料ソフトを使ってた連中が「これが使えないと仕事効率落ちるだろ!」みたいにゴネまくって会社に買わせるってことがあったけど、仕事VisualStudioがメインでテキストエディタなんてサクラでもEmEditerでもなんでもいいんじゃね? って感じだったわ。自分は。

「金出して買ってるんだから優秀に決まってるだろ」って思い込みなんじゃないかって気がする。

 ATOKが優れてるって客観的データ検証ってあるのだろうか。

2014-04-28

http://anond.hatelabo.jp/20140428150354

HTMLは見た目だけ綺麗にできりゃいいってもんじゃない。

意味に合わせた要素でマークアップして、後からスタイル適用するんだからテキストエディタで作るのが正しい。

モック作成

VisualStudioみたいな感じでポトペタでhtml編集出来る無料ツール誰か知らない?

テキストエディタでシコシコ作るのって前時代的で受け付けないわ。

2014-04-14

個人的に必須Mac環境

マシン買い換えのためにメモ

仕事編集制作デザインプログラミング

入力デバイス

- HHKB Professional JP …… 最強のキーボードしかも省スペース。Adobe製品を利用するには JP版が便利)

- Logicool G9x …… つまみ持ちできるゲーミングマウス最近価格が高騰している)

- SteelSeries Kinzu v2 Pro Edition …… Logicool G9x の後継マウスとしてテスト使用中

★文書執筆

- Scrivener …… 最強の文書執筆ツール(これ以上のものはない)

- Bean …… 簡単な文書作成(複雑なレイアウトはできないが、とにかく起動が速い。PDFも書き出せる)

デザイン制作

- Adobe Creative Cloud …… デザインアプリケーションはこれでいい(結局は)

- Adobe Fontfolio …… 欧文フォントコレクション(高額だが結局安上がり)

学習

- Anki …… 効率的語学学習英語ドイツ語)。iPhone版と併用して効果アップ。

★プレゼンテーション

- HandBreak …… DVDデータを変換

- QuickTime Pro 7 …… ムービーデータの簡単な編集

- VLC …… 動画データ再生

- Keynote …… プレゼンテーションソフトとしての完成度が高いし見た目もよい

★開発

- Tower …… Gitによるバージョン管理ソフト(他にもあるが最初に使ったソフトから

- Omni Focus …… GTDによる作業進捗管理iPhone版と併用して効率アップ。

- Omni Graffle …… 図表作成

- MAMP …… 開発環境

- SQLEditor …… データベーステーブルの設計用(Mac用のこの手のソフトは数が少ない)

- BBEdit …… テキストエディタ(他にもいろいろあるが、最初に使ったソフトから

- Cyberduck …… FTPクライアント(動作が遅いが、特に困ることがない)

ユーティリティ

- KeyRemap4MacBook …… Finder操作まで全部キーボードでやってしまう(Emacsな人にお勧め

- NameMangler …… 一括ファイル操作(類似ソフトに比べると動作が早い)

- Boom …… 音声ボリューム限界以上に上げる(プレゼンテーション時に有用*狭い部屋なら外部スピーカーがいらなくなる)

- SiteSucker …… 個人的魚拓作成

- Synergy …… Macウインドウズマシンキーボードマウスを共用

- PlainCalc …… 履歴を残しながら簡単な計算ができる

- Paparazzi …… 長大ウェブページを一気にキャプチャできる

- ATOK …… 日本語入力環境は、作業時間を大きく左右する=時給を左右する

- Clinch …… ドラッグしてウインドウサイズを変更

- SizeUp …… キーボード操作ウインドウサイズを変更

- Alfred …… キーボード操作で、アプリケーション起動/インターネット検索

- FreeMan …… マシンメモリ使用状況を監視し、適宜開放

- ImageUp …… IMEの状態を視覚表示

- SimpleCap …… 最強の画面キャプチャソフト

- ClipMenu …… クリップボード管理テキスト変換

 

付記

ClipMenu では、クリップボードに保存されているテキストを変換できる。

変換方法アクションとして自分で用意する。

用意しているアクションで常用しているのは下記の通り:

- 横組用にテキスト整備.js …… 英数字記号約物類を所定の様式に一括変換

- アラビア数字漢数字に変換.js

- 漢数字をアラビア数字に変換.js

- 行をユニーク化.js

- 行をソート.js

2014-04-09

オブジェクト指向 v.s. 関数型プログラミング

近年、関数型プログラミング重要はいろんなところで叫ばれています

Javaの最新バージョン関数型プログラミングに関する新機能が加わりました。

Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています

プログラミング教科書大手オライリーからJavascript関数型プログラミングを行うための解説書が発行されました。

関数型プログラミングへの注目度は高まってきています

おそらく、みなさんは既にオブジェクト指向が何か、を知っています

でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います

実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、

関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。

この記事を読む方の中で、「関数型プログラミングを取り入れるか・取り入れないか」で切実に悩んでいる人は、おそらくいないでしょう。

この記事はあまりかいところに立ち入りません。関数型プログラミングを使う側の立場に立って、利点や向き・不向き、それが導くスタイルを書きました。

みなさんは鳥のように飛んで、高い空から関数型プログラミングとは何か、何が良いのか、を見渡してください。

ふたつのアプローチ比較

オブジェクト指向アプローチは、名前をつけてプログラムを整理する

関数型プログラミングアプローチは、汎用部品でなんとかする

オブジェクト指向アプローチ

Googleが近年リリースした言語、Goには、”継承”を直接サポートする仕組みが無いことが話題になりました。

また、Mac OSXの基幹ライブラリCore Foundationは、ライブラリ自体C言語で書かれているにもかかわらず、その設計方針は明確にオブジェクト指向です。

継承クラスは、オブジェクト指向必須条件ではありません。

オブジェクト指向本質とは、何でしょうか。

その本質とは"名前をつけて対象を識別し、それを扱うこと"、にあります

最もプリミティブなオブジェクト指向対象は、ファイルハンドラです。あるファイルを開いて、読み込んで、あるいは書き込んで、ファイルを閉じる。

これらの処理をまとめたら、わかりやすいですよね?

対象に関する処理を、対象の周りにまとめる。これがオブジェクト指向の基礎的な理念です。

識別することとイコール比較できることは、とても良く似ています

イコールによる比較は、オブジェクト指向では鬼門であることが知られています

PointクラスインスタンスとColoredPointクラスイコール演算をどう決めればいいかに、正解はありません(詳しくは"effective java"をご参照ください)。

また名前をつけて識別する対象は、フワフワしていてはいけません。

たとえば、"軍人階級"をオブジェクトにしたとしましょう。"大佐"クラスのある兵士名前フィールドや、性別フィールドを持っているでしょう。

ところで彼が昇格したときに何が起こるでしょうか。

新たに"少将"クラスインスタンスが作られます。"大佐"クラスを破棄する前に、名前性別、その他沢山のデータを引き継がなくてはいけません。フィールドを増やしたい場合はその都度コード修正を加える必要があります(*)。

なるべくイコール比較を避けたい。対象不安定なものはいけない。では何に名前をつけて、識別するか。そこにオブジェクト指向技術者の熟練度が現れるのです。

関数型プログラミングアプローチ

一方、関数型プログラミングでは、特定の何かに名前をつけるより、極力、汎用部品でなんとかしようとしま

さな関数を、集めて撚り合わせて、新しい関数を作る。

関数自体リストなどのデータ構造に詰めることもよく行われます

実は、関数型プログラミングというのは本質を表していません。

その真の名は、"値指向プログラミング"です。

関数をはじめとして、リスト・ツリーのようなコンテナ手続きを抽象化したもの、回路を抽象化したもの

あらゆる対象を値として、合成し、ときに分解し、新しい値を作ります

変数という概念必要ありません。

変数適用する処理を作りあげることが、とても簡単だからです。

四則演算定義されたデータを詰めたデータ構造もまた、四則演算可能だったり。

値をイコール比較することも、なんのそのです。

誤解を恐れずに言うと、オブジェクト指向トップダウンなのに対し、関数型プログラミングボトムアップです。

関数型プログラミングの利点

読みやすい・理解やす

関数型プログラミングサポートする言語には、沢山の汎用部品定義されています

このような構造インターフェイスとして、様々なライブラリが組まれているので、

たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて、

パーサーを理解できれば、JSONパーサー・ XMLパーサー・markdownパーサー・C++パーサー ... などを理解するのはとても容易です。

理解やすいこと。これが関数型プログラミングの大きな利点です。

追記:

また、汎用部品と型のお陰で、ライブラリドキュメントが圧倒的にひきやすい、というメリットも有ります

Haskellな人がPythonにトライした結果 - Togetterまとめ

書きやす

関数型プログラミングは「厳密な事前設計必要とするため、簡単なことをやるのにも時間が掛かる」。

よく誤解されていますが、これはウソです。

スクラッチプログラムするのは、非常に手軽です。

>> map (*2) [1,2,3]
[2,4,6]

邪魔な”儀式”や、"おまじない"のコードが徹底的に撤廃されているためです。

関数型プログラミングコードは、潔癖かつ濃密です。

たとえばC言語でint hoge(int x,int y)が定義されているときhoge(3)はなんの意味も持ちませんが(コンパイルコケますが)、関数型プログラミングでは意味があり、実際に有用です。

上の例では、「掛け算をする」(*)関数は、二引数関数ですが、それに引数を渡して作られた「2を掛ける」関数(*2)は、一引数関数になります

関数型プログラミングでは、「簡単なことは簡単にでき、複雑なことは複雑にできる。ただし、間違ったことは殆どできないか、全くできない」。

多くのバグは、コンパイルエラーとして検出されます

また、静的型付けの力によって、コード補完は非常に強力になっていますインテリセンスの比ではないです。

たとえば、関数中のある表記の型を任意に表示できます(GHC/TypedHoles - HaskellWiki)。

やがてやってくる未来には、プログラムテキストエディタで書くことは時代遅れになっているでしょう。

統合環境サポートで、バグミスの少ない、スムーズプログラミングができます

そしてその環境で動くプログラミング言語は、関数型プログラミングサポートした言語なのです。

いつ関数型プログラミング

以下の様な兆候を感じたら、あなたはそのプログラム関数型プログラミングで書くべきです。

一般に、オブジェクト同士の相互作用が複雑になるほど、オブジェクト指向では手に負えなくなっていきます

そういうときは、オブジェクトを直接扱わず、替わりにその"相互作用"を扱うことで、複雑さを軽減するアプローチ有効です。

それこそが関数型プログラミングアプローチです。

オブジェクト指向の利点

初心者にとっては読みやすい・理解やす

特にオブジェクト指向有効なのはプログラミング初心者がそのコードをいじるかもしれないときです。

関数型プログラミングは、強固さと柔軟さの代償として、高い学習コストを伴います

そのため、初学者にとってはハードルが高いのです。

扱う対象があまり複雑でない時は、書きやす

オブジェクト間の相互作用が複雑でなく、着目している(名前をつけている)概念が安定しているとき

そして、プログラムをいじる人たちの間で共通理解が図れているならば、オブジェクト指向が有利です。

関数型プログラミングの得意分野はなにか

数値計算

遅延評価という機能によって、レガシー言語で扱えなかった、巨大な数を扱うことができます

分数を扱うことができます虚数もです。

関数型プログラミングで書かれたプログラムは、正確さが要求される、金融関連の業界で使われています

テキスト処理

手続きとしてパーサーを記述できるので、テキスト処理プログラムはより理解やすく、メンテナンスやすものになります

関数型プログラミングを知らない人は、「正規表現おk」と言いますが、

彼の書いた複雑な正規表現は、半年後には(書いた本人でさえ)理解できなくなっていることでしょう。

並行処理

手続き一般を扱うことができるので、途中で割り込みのある手続きの表現も容易です。

関数型プログラミングサポートしていない言語ではコルーチン(ファイバー)などをつかってなんとかするしかありません。

さもなくば、非並行処理では普通に関数として記述できるところを、並行処理のために、Builder,Strategy,Command,Interpreterパターンを駆使して書き直すことになります

Javascript使いの方は、Deferredなどの構造を使うでしょう(http://qiita.com/KDKTN/items/4c6986049d204f0645d8)。

C++使いの方はBoostで頑張りましょう。破滅的に解りにくいコンパイルエラーメッセージと格闘してください。

レシピ

もう少し簡単な例をあげます

あなたは、あるレシピにしたがって、自動的料理を行うマシン制御プログラムを書いているとしましょう。

料理レシピは、"手続き"ですよね?たとえば、カレー

1. まず玉ねぎを炒める。

2. 飴色になったら、肉を加えて炒める。

3. 野菜を加える。

4. 水を加えて煮る。

5. スパイスを加える。

しかあなたはこの手続きを関数として表現できるでしょうか。

…できませんよね?何故ならば、各ステップの"間に"、マシンのロボアームの位置や動きを調整する処理が必要からです。

これをオブジェクト指向でやろうとすると、各ステップ副作用として、それらの処理を行うことになります

そうすると、マシンが二機に増えた時などの変更量は、絶望的なものになります

あるいは関数として表現するのを諦め、手順全体をDSL記述できるようにします。

このアプローチ関数型プログラミング的です。しか関数型プログラミングサポートした言語の助けなしでは、そのDSL記述するために沢山のユーティリティコードを書かなくてはならないでしょう。

オブジェクト指向アプローチでこの問題をエレガントに解こうとすると、クラス化の粒度を上げる事になります

野菜クラスフライパンクラス、ボイルクラスフライクラス、焼き加減クラス、アームクラス野菜の大きさクラス、切り方クラス、焼き方クラス、"焦げたよ"クラスetc...

こうすると早晩レシピプログラムコードから消え去ることになります。上記のたった5行は、依存性注入のオブジェクトグラフを構築するコードに取って代わることになります。そこには沢山の挙動制御オプションとして付記されているのです。

カレーなど、ある種のレシピ限定することで、見た目の理解やすさを得ることができますが、一方それは表現力を損なうことを意味します。

C言語などではマクロを使うこともできますが、それは結局、関数型プログラミングアプローチ意味するところと同じになります。すなわち、補助のために沢山のコードを書くことになるでしょう。

GUI

iOSのAppstoreアプリは、"無料"と書かれたボタンを押すと、それが"インストール"ボタンに変わり、それをもう一度押すと、ダウンロードの進捗を表すインジケータに変わり、それを押すとダウンロードキャンセルできます

このように、位置は同じなのに、ステートに依って見た目と機能が変わるボタンは複雑です。

これをオブジェクト指向で実現しようとすると、

1. 三つの異なるボタンを同じ位置に置くか

2. 同じボタンが三つの異なる機能を持つか

という下らない問題にぶつかります

一方関数型では、"機能"、"見た目"、"状態"、を独立に扱って、それらを合成してボタンを作るので、迷うことはありません。

「同じ位置にあるUIオブジェクトは、コード上で(インスタンスとして)独立して、他から干渉を受けない」

この条件が満たされているうちは、オブジェクト指向GUIを実現することに無理はありません。

しかし、携帯端末のような小さい画面で、多くの機能を達成するためには、UI要素はコンテキスト依存的に複雑になりがちです。

近年、PCのディスプレイの大きさは、頭打ちになってきました。

画素数は増えているのですが、MacにおけるRetinaのように、複数ピクセルひとつドットを表すようになってきています

これは、ひとつの画面に置かれるボタンなどのUI要素の数は、これから先の未来で増えることはない、ということを意味します。

したがって、未来GUIプログラミングは、注意深く機能ピックアップして制限するというデザイナー努力を脇におけば、

関数型プログラミングの力を頼るしか無いでしょう。

はじめよう、関数型プログラミング

まり

Haskell さいこうなのおおおおおおおおおおおおおおおおおお!! おしっこ漏れちゃうのおおおおおおおおおおおおおおおおおおおお(゜∀。)ワヒャヒャヒャヒャヒャヒャ

1. google:すごいHaskellたのしく学ぼう を注文する。

2. Download Haskell自分のPCに導入する。

3. コンソールghciと入力して、対話コンソールを立ち上げる。

4. 次の関数コンソールに打ち込んで、結果を見る。即値で書かれているところとかをいろいろ変更してみて、感動する。

take 4 $ map (*2) [1..]

5. ステップ1で買った教科書を読んで、学ぶ。


追記:

いかがでしたか

ちまたには、関数型プログラミングの利点は変数が無いことだ、とか、より安全から、とか、より速いから、などという妄言が満ち溢れています

オブジェクト指向関数型プログラミングは、水と油ではありません。プログラマ自分プログラムに最適なアプローチを選ぶことができます

一般にはあまり知られていないことですが、Haskellにもオブジェクト指向へのサポートがあるんです(Lensライブラリ、これを使用したサードパーティライブラリ最近増えてきています)。

この記事を読んだオブジェクト指向プログラマあなたが、少しでも関数型プログラミングに(そしてHaskell)興味を持ってくださって、ホームセンター大人用オシメのコーナーが大賑わいになれば幸いです。。

2014-03-23

おれもMacの昔話を書いてみよう

ここらへんでおれもMacの昔話を書いてみよう。

おれが最初Macintoshに触ったのは、91年の4月だった。配属された研究室Macintosh IIsiがあったのだ。OSは、漢字talk6.0.7.1だったように思う。

このころのソフトウェアに対するユーザー意識はひどいもので、不法コピーがあたりまえだった。今だから、そして、おそらくどの研究室なのかばれないと思うから書くが、使用するソフトはすべて出所の怪しいものだった。

エクセルマックライトII (Iを使っていたという話を聞いたことがない。マイナーだったのだろうか)、マックドロークリケットグラフコピーでなかったのはテキストエディタと端末ソフトだけだったのではないか。

その使い勝手はとにかくすばらしかった。マックライトIIの威力は、学会の要旨(一段組と二段組が混在すると当時の一太郎ではプレビューしないとま出来栄えがわからなかった。WYSIWYGという概念がなかったのだ)を書くときに思い知った。

それに貼る図は、クリケットグラフで書き、マックドローで修整してから貼り付けていた。これがほんの一年前には、一太郎で書いた要旨に手書きの図を貼り付けていたという。物理的にセロテープで貼っていたのである

…だが、それでどのくらい時間の短縮になったかというと、実はかなり微妙だった。そう、爆弾マークが出るからである

当時は何をやっても爆弾マークが出た。日本語入力英語を切り替えても出たし、ソフトを切り替えるときも出た。放置しているだけでも出た。ひどい時は、セーブしようとしたら出たときもあった。いったいどうしろというのか。

使い始めてすぐ、漢字Talk7が発表になった。なんだかもっさりして、爆弾が出る比率もそんなに替わらない印象があったが、漢字Talk7.1に糸井重里がつけた愛称おにぎり」はあまりにださすぎるので今でも忘れられない。そんな名前で呼んでるやつ一人も見たことないよ。

それとほぼ時期を同じくしてMacintosh classicやLCが販売されるようになった。classicは1000ドルパソコンといわれ、貧乏学生のおれも思わず買ってしまおうかと錯乱するほどの魅力的な商品だった。もっと日本では二十万円台後半だったように記憶している。

このあたりからApple社の迷走が始まる。

LC系やclassicは順当に性能向上を繰り返していたが、ハイエンドはひどいもので、92年にはCDROMを搭載したMacintosh IIviというモデルを発表しているが、これはなんとMac IIciよりCPUクロック数が低く、CDROM(当時はまだ使い道がなかった)を搭載したため無駄馬鹿でかく、もちろん定価もすごく高いというしろものだった。

「これを買うくらいならLC系を買うよねー」という人がおおかったのかMacintosh IIviは売れなかったので、数か月して価格改定されたらしい。らしい、というのはそのころパワーマックの噂が出始めて、68系のハイエンドマシンへの需要はかなり減少していたのでおれの記憶あやふやなのである

そして94年になると、いよいよパワーマックが発売されるのだが、これがまた遅い、高い、馬鹿かいという端にも棒にもかからない代物であった。

その他にもレーザーライターNTX-Jがなんと定価120万円で発売されていたり、フォント関係ライセンスのひどさはちょっと混沌としていすぎていた。

まあ、色々と書きたいことはあるのだがおれはおじさんであるのでここらへんが体力の限界だ。

誰か有志がおれのあとを継いでアップルのこっちの足元を見たぼったくり体制を批判してくれ。

それではおやすみなさい。

2014-03-02

あーもう

久々にテキストを保存しそこねて、釣り記事がぱーになった。

なんとなくコウモリとのネットバトルに参戦しようと書いてたんだけど、

本当になんとなく書き出したので、この増田の記事を書く所に直接書いてたんですよ。

そしたら途中でふと、フレアスカート語源が知りたくなって、ググってページ遷移しちゃったんだよ。

普段の釣り記事のときはちゃんとテキストエディタ使うのに、あーもったいない

あっ、フレアスカート語源は結局わからなかったので教えてください。

2014-02-24

http://anond.hatelabo.jp/20140222185627

vim英語圏テキストエディタなので日本語編集には不向き。

英語単語がスペースで区切られているから、単語単位での編集コマンドが生きてくるけど、

日本語にはスペース区切りの習慣は無い。

あと、モード切替時に一々日本語入力をオン・オフしなくちゃいけないのも不満。

(解消するプラグインあるらしいけど、標準では付いてない)

Windowsテキストエディタが使い物だと思っている人へ

http://anond.hatelabo.jp/20140222185627

A HAPPY END WITH YEAR 2013 !

こう書き換えたいとき

A HAPPY NEW YEAR 2014 !

不便なテキストエディタでは、

→を8回、Delを3回、N、E、W、→を1回、Delを4回、Endを1回、←を2回、バックスペース1回、4、と入力する羽目になる。

実に、24回もキーを押す計算だ。

でもこれって実は11回で書き換えられる。

そう、Vimならね。

でもこれって実は10回で書き換えられる。

そう、Windowsメモ帳ですらね。

 

Ctrl+{RIGHT}

Ctrl+{RIGHT}

Ctrl+{RIGHT}

Ctrl+Shift+{RIGHT}

{DELETE}

{END}

{LEFT}

{LEFT}

{BackSpace}

4

 

10打鍵

2014-02-22

http://anond.hatelabo.jp/20140222003624

Vimを使おう

Vimはすごく高機能テキストエディタで、人生に彩りを与えてくれるすばらしいものだ。どのOSでも使うことができる。

貴様!まさか!?

2014-02-19

http://anond.hatelabo.jp/20140219193224

JavaC#書くのにテキストエディタ使う人いなくね?

テキストエディタ使ってんのってRuby,Pythonあたりのスクリプト言語の人でしょ。

そんでスクリプト言語場合だと、REPLで気軽に動作確認できるからIDEほど補完が強力じゃなくても、不利にならないんじゃなかろうか。

あと、IDEが補完してくれたとしても、利用するライブラリドキュメントは読むべきだよ。

エディタIDE戦争の正体

かつてはVimEmacsガチ戦争があったが、最近ではどっちも大差ないと認識が広まってきのこたけのこ戦争となった。

対してこれらのエディタとVisualStadioやEclipseのようなIDEの間には今こそガチ戦争が勃発している。

数で圧倒的に有意に立つIDEユーザと本物のプログラマ自称するエディタユーザの争いである。

エディタユーザIDEユーザを能なしと罵っていて、それに一理あるという風潮があると思うが、騙されてはいけない。

致命的なのはエディタではIDEのような補完入力ができないのだ。

これなしでどうプログラミングするというのか。

もちろん規模の小さなプロジェクトなら問題ないだろう。

あるいは自分一人でコーディングするような場合も問題ないだろう。

しかプロとして仕事をするなら補完入力必須だ。

まさかいちいち対象クラスコードドキュメントを読むというのか。

覚えておけばいいと言う人もいるが、バカも休み休み言えといった感じだ。

そういうことを言う人は、コンパイラも使わず機械語直打ちなプログラミングやってればいいよ。

きっと素晴らしい情報処理能力でみるみるうちにコードを完成させてくれるだろう。

まあ、実際には一月かかっても2分木ヒープも実装できないだろうけど。

また、リファクタリングプロジェクト管理も一貫してできるIDEは単なるテキストエディタなど物ともしない。

エディタ勢は、これらより便利なツール類がvim scriptemacs lispで書かれているかのように言っているが、そんなもの実在しない

あるなら、誰もが使っているはずだ。

というより、そんなものがあったなら、そもそもIDE自体作られることはなかったはずなのだ

エディタの優勢は張子の虎だ。

実態はない。

実態があるというなら、実際にエディタIDEより優れた生産性コードを書いている動画Youtubeにあふれるはずである

だが実際にはそんなものはない。

なぜか?

もちろん、やりたくてもできないからだ。

エディタIDE戦争の正体は、エディタ生産性の低さがいつ暴かれるかと戦々恐々している自称スーパープログラマ達の、自己弁護時代に取り残されたという怨嗟の声の集まりである

2014-01-19

SFCへの申し送り事項

宛、新入生とか、これからプログラミング始めたい人へ。

なんか偉そうに書いてみた。

最初に理解すべきこと

SFCには頭がおかしプログラミング言語使いがたくさんいる。特に研究室に入ると、バイトバリバリ書いている人間や、研究趣味ライブラリを量産する人間出会うこともあるだろう。彼らに惑わされてはいけない。最初は彼らの言っていることは一つも理解できないだろう、理解する必要は無い。彼らはプロダクションで安定するかどうかという縛りから自由だ。流行り廃りに敏感で、昨日言ってることと今日言ってることが違う。

これは実際に手を動かして使ってみて好感触かどうかささっと確かめられる人間からできることで、プログラミングできない人がこれについていこうとしたら間違いなくプログラミングが嫌いになる。

  • js書くならcoffeeがいいよ
  • それgitしてよ、見てあげるから

こういう言葉に惑わされるな、コードを書くための勉強をするな、コードを書け。

できる人は概ね、できない人の気持ちがわからない。受動的になるな。積極的に書け。

プログラミングへのモチベーション

プログラミングができるようになるといいことしかない。

プログラミングなんて特殊技能で、少なくとも教養じゃないでしょ..」という認識が横行している今だけのチャンスとも言える。

webプログラミングができると「技術的には簡単だがアイデア一発で作ってみたもので、ほんのちょっとだけ有名になれる可能性がある。論文を書いて学会投稿したりニュースになったりするよりも、よっぽどお手軽に(一部での)社会的ステータスを高めることができる(かもしれない)。

↓ こういうのでいい(失礼だが)。

資格マニアあなたへ

資格勉強はある程度コードを書けるようになってから考えよ。

真面目な理由が必要あなたへ

こう言っている人間を見て何を思うだろうか。

「いや少しずつでいいから今やれよ」とか「英語できたらもっと世界ひろがるのに..」とか「大学生なのにそれで恥ずかしくないの」とか思うかもしれない。

英語プログラミングに置き換えてみよ。

知らない世界を知らずにいることは大いなる機会損失であるプログラミングに金はいらない。金はないけど時間はある、時間を大量投入できる最後の機会、大学生である内に学んでおいた方が望ましい。

SFCプログラミング講義

基本的スタンスとして、講義ではプログラミングを教えてはくれない。講義に期待するな。プログラミングに限らず、全ての講義は自習への足がかりであり、興味のとっかかりである。実際に意思を持って積極的コードを書かない限りプログラミングのことは好きになれない。自分で考えながら手を動かしてコードを書かなければ覚えないし、初学者が配られたプリント写経しても血肉にならない。

今日から俺は!」という感じでプログラミング講義を受けると爆死は約束された未来である。「腕試ししよう」「これなら楽勝じゃろ」という意気込みで講義を受けると、意外に学ぶことが多い。完全な初学者の域は脱しておいた方が講義有効的に活用できる。少なくとも、最初の2週間をインストール環境構築のみで終わらせるスジの悪い講義を取得してはいけない。

また、講師によってはJavaScriptのことをJava呼称したり、JavaScriptLispに比べて読解が平易であるためハッキングを受けやすいと言ったことを平然と言ってのける。選別にあたっては「講義名」と「講師名」を明言した上で「先輩に聞く」「Twitter活用する」等の手段をとるべきである。十二分に注意されたし。

最初に選択すべきマシン

道具を選ばないのはプロだけである。初学者は多少高くても自分サポートしてくれる良いマシンを入手すべきである。1行のコードを書くだけでも恐ろしい手数が必要アーキテクチャを選択するのは愚行だ。

具体的に言うと「最初の一台はMacを買え」。

モデルは何でもいい、無理して上位機種を買う必要は無い。お金が余ってるならMacBookProを買えばいいし、勿論一番安いMacBookAirでも全く問題ない。特にweb系のコードを書く際、インターネット検索して出てくる記事はだいたい「OSUNIXであること」を前提としたサンプルである。これをWindowsの開発環境に読み替えるのは、初学者に取ってつらいだろう。

また、Macならばパフォーマンスは多少犠牲になるがwindowsも起動できる。どうしても光学機器必要になればCNSコンサルタントで外部接続式の光学機器を貸し出してくれる。Macが気に入らなくてもどうせ研究が射程に入る3年生に上がったぐらいのタイミングPCを買い替えるだろう。バイトして稼いだ金で「俺の考えた最強のマシン」に買い替えればいい。それまではMacを使え。

OSに固有の使い方なんて学ぶ価値はない、覚える価値も無い、操作時間が短縮されるだけだ。「普通会社Windowsなんでしょう?」というくだらない理由でWindowsPC選択肢の第一候補にするな。Windowsを買うなら積極的選択としてWindowsを買え。

SFCにおいて、PC毎日抱えて通学し、毎日開いて講義を受け、苦楽を共にする相棒だ。消極的に選択するな。

共同購入

SFCには「共同購入PC」という制度がある、これを利用してはいけない。

もし要件が変更され、Macラインナップに入れば積極的に利用するべきである

最初にやるべき言語

条件を示す。

ビジュアル表現できる言語であること

見た目に変化が無いと楽しくないだろう、こんなのを実行しても何も楽しくないはずだ。

#include <stdio.h>

int main()
{
  int a;
  a = 1 + 1;
  printf("%d", a);
}
web上にブログ記事が十分にある言語であること

マイナー言語を選択してはいけない。「ライトウェイト言語」と呼ばれるくくりから選択肢するのがいいだろう、以下のようなものがある。

中でもjavascriptrubyは推薦できる、SFCでも書いている人間は多い。

phpperlおすすめできない。ドキュメントは多いが、不慣れであればロジック以外に割かれる労力が非常に多い。python日本語ドキュメントが少ないため最初はつらいだろう。

導入が簡単な言語であること
例えば

最初javascriptをやるのは理に適っている。index.htmlというファイルを作り、scriptタグの中にコードを書き、ブラウザindex.htmlを開けばもう実行されている。web上のドキュメント量も豊富だ。

rubyも推薦できるが、少なくとも「自分HTTPサーバを立てる」という言葉にピンと来るようになってから使い始めた方がいいだろう。きっと何をしていいかわからないはずだ。

他にもProcessing(http://processing.org)などが推薦できる。ダウンロード時間がかかるだけでインストール作業は必要ない。こちらに関しては旧プロダクト名であるproce55ing」をキーワード検索すると記事が引っかかりやすいという暗黙のルールがあった、今はどうだか知らない。

最近ではnode.js採用事例も増えてきた(他に比べれば圧倒的少数、増加傾向にあるという意味)。クライアントでもサーバでも活躍できるjs学習コストパフォーマンスが高いと思われる。

勉強方法については後述のセクションを参照せよ。

次にやるべき言語

書ける言語は一つにしぼってはいけない。なるべくたくさんの言語を使ってみよ。ブログ記事を読みあさり、「その言語は何が得意なのか」調査しろ。不得意なことをその言語やらせるな。

下記のような上達ストーリーが考えられる。

例えばpython音響処理や数学計算が得意だったりする。そういった特徴を徐々につかみながら書ける言語の種類を増やし、好きな言語を見つけて好きな言語のことをもっと好きになればいい。

自分が好きな言語のことを胸を張って自慢できるようになったなら、あなたは既に初学者ではない。

エディタ

人に聞くとvimemacsを推薦されるかもしれない。もしそれを使ったことが無いなら、あるいは「プラグインの導入方法がわからない」なら、やめろ。Terminalを開かなくても書けるGUIアプリテキストエディタを使え。

具体的にはSublimeText(http://www.sublimetext.com/3)を使うのがよい、無料である

ライセンス必要だが、起動時に「買ってね!」というダイアログが出続けるだけで無料で使用し続けられる。信頼できるエディタだと思ったら買えばいい。

設定方法

SublimeText3にPackageControlというものを導入すると、標準で備わっていない機能拡張できるようになる。こちらのブログ(http://p.tl/Ev7b)の「インストール手順」セクションのみを実行する。たとえば「Jadeという言語を、文法に従って色付けしてほしい(SyntaxColoring)が、その機能が無い」という時に、「Jade用プラグイン」をSublimeText内で検索し、インストールすることができる。

もし使い方がわからないければ、回りにいる「プログラミングができる優しい人」に上の記事を見せ「インストールしてくれませんか?」と頼んでみろ。きっと戸惑いながらも正しい操作をしてくれるだろう、一挙手一投足を見逃さず学べ。

勉強方法

例えば

エロ画像を集め続けるツールが欲しいとする。どうやったらいいか考える。クライアントjsだけでは限界が来る。rubyなど別の言語を試すステップを踏む。

http://www.slideshare.net/shokai/ss-26387303

ブログの読み方

プログラマ同士じゃないと伝わりにくい用語が頻発すると思う。逐一人に聞いていてはラチが開かない。人に聞くな、適当に読み飛ばせ。

ブログ記事は本ではない、それを読解しなければならない理由はない。適当はてブでもつけといて、次の記事を読め。たくさん読めば共通項が見えるだろう、コードが書けるようになるに従い読めるようになるだろう。

最後

みんなが息をするようにコード書いてさ、みんなでしあわせになろうよ。

ログイン ユーザー登録
ようこそ ゲスト さん