�A�ځFReactive Extensions�iRx�j���� ��2�� �C�x���g�E�v���O���~���O��Rx �͍� �X��2012/01/06 |
|
�@�{�A�ڂ���1���ł́AReactive Extensions�i�ȍ~�ARx�j�̊T�v�ƃC���X�g�[�����@����������B����͋�̓I�Ȏg���������Ă������B
�@�܂���Rx�𗘗p����ۂ̊�{�I�ȗ�������Ă����B���ɁARx�̎���\�I��2�̐����ł���C�x���g�Ɣ��̂����A�C�x���g�𒆐S�I�Ɏ��グ��B
����{�I�ȋL�q���@
�@�ŏ��ɁA�V���v����Rx�iObservable�I�u�W�F�N�g�j�̃R�[�h�ƁAforeach���iEnumerable�I�u�W�F�N�g�j�̃R�[�h�̑Δ�����Ă݂悤�B
|
||
�������s���ʂ�Rx��foreach���̃R�[�h�i��FC#�A���FVB�j | ||
��System.Reactive�A�Z���u�����Q�Ƃ���K�v������B |
�@���s���ʂ͂Ƃ��Ɂu1�v����u5�v���o�͂����BEnumerable�I�u�W�F�N�g�i�ȍ~�A�uEnumerable�v�Ɨ����j��Pull�^�̃V�[�P���X�i����A�̏����̗���j�AObservable�I�u�W�F�N�g�i�ȍ~�A�uObservable�v�Ɨ����j��Push�^�̃V�[�P���X��\��*1���A�ǂ���������悤�ɋL�q�ł���BEnumerable�ł̓V�[�P���X�iRange�j������A������������́iforeach�j������BRx�ɂ����Ă�����͕ς�炸�A�V�[�P���X������Aforeach���Ɠ��l�̊��o�A�����ʒu��Subscribe���\�b�h��p����Ƃ����̂���{�I�ȗ���ɂȂ�B
*1�@Enumerable�̓f�U�C���E�p�^�[���ł����Ƃ����Iterator�p�^�[���AObservable��Observer�p�^�[����\���Ă���B |
�@����ł́A�ڍׂ�m�邽�߂ɃC���^�[�t�F�C�X�����Ă݂悤�BRx�ł̎�v�ȃC���^�[�t�F�C�X��2�AIObservable<T>��IObserver<T>���B���̃R�[�h�͂��̃R�[�h���e�ł���iC#�̏ꍇ�j�B
|
|
IObservable<T>�C���^�[�t�F�C�X��IObserver<T>�C���^�[�t�F�C�X�iC#�̏ꍇ�j |
�@�ŏ��ɋ������V���v���ȗ�̒��ł��A����2�̃C���^�[�t�F�C�X�����p����Ă���BIObservable<T>�I�u�W�F�N�g���V�[�P���X��\���AIObserver<T>�I�u�W�F�N�g���������̂�\���Ă���B�܂�A�uObservable.Range�v�Ƃ����R�[�h���瓾����I�u�W�F�N�g��IObservable<int>�^���B�������AIObserver<T>�I�u�W�F�N�g�͌�������Ȃ��B����IObserver<T>�I�u�W�F�N�g�́ASubscribe���\�b�h�ɓn���Ă��郉���_���̒��Ŏ����I�ɍ���Ă���B���̏ڍׂ𖾂����ƁA���ł͈ȉ��̂悤�ɂȂ��Ă���B
|
||
Subscribe���\�b�h�̈����ɋL�q���������_���ɂ�萶�������IObserver<int>�I�u�W�F�N�g�̏ڍׁi��FC#�A���FVB�j |
�@Observer.Create���\�b�h�ɂ�3�̃f���Q�[�g�����p�����[�^������A���ɁAIObserver<T>�C���^�[�t�F�C�X��OnNext�^OnError�^OnCompleted���\�b�h�̃V�O�l�`���Ɠ����f���Q�[�g�^�ɂȂ��Ă���B���̂��߁A���̏��IObserver<T>�C���^�[�t�F�C�X�����������C���X�^���X���ł���悤�ɂȂ��Ă���B
�@�������A����ł��킴�킴Observer.Create���\�b�h��IObserver<T>�I�u�W�F�N�g���쐬����͎̂�Ԃ��낤�B�����ŁAIObservable<T>�C���^�[�t�F�C�X�ɂ́AIObserver<T>�I�u�W�F�N�g�݂̂����Subcribe���\�b�h�����łȂ��A�e��̃f���Q�[�g�����A�����̃I�[�o�[���[�h��Subcribe���\�b�h���A�g�����\�b�h�ɂ���Ēlj�����Ă���*2�B����ɂ��AEnumerable�ł�foreach���Ɠ������o�ŗ��p���邱�Ƃ��\�ɂȂ��Ă���̂��B
*2�@ObservableExtensions�N���X�iSystem���O��ԁj�ɁAonNext�^onError�^onCompleted�p�����[�^�̑g�ݍ��킹�p�^�[���ɂ��5�̃��\�b�h����`����Ă���B |
��IObserver<T>�I�u�W�F�N�g�̏ڍ�
�@�ŏ��́u�������s���ʂ�Rx��foreach���̃R�[�h�v�̗�ł�IObserver<T>�C���^�[�t�F�C�X�̃����o�̂����AOnNext���\�b�h�̃f���Q�[�g�����L�q���Ă��Ȃ������B����OnNext�́A�l���I�u�U�[�o�ɓ͂����тɎ��s����郁�\�b�h�ŁA�ł����p�������̂��낤�B�c���2�̂����AOnError�͗�O�������Ɏ��s����郁�\�b�h�AOnCompleted�̓V�[�P���X��������Ɏ��s����郁�\�b�h��\���B�����3�̃��\�b�h�̃f���Q�[�g���w�肷��ꍇ�́ASubcribe���\�b�h�̃R�[�h��������B
|
||
OnError�^OnCompleted���\�b�h�̃f���Q�[�g���܂߂�Subcribe���\�b�h�̃R�[�h�̎��s��i��FC#�A���FVB�j | ||
Do���\�b�h�̓p�C�v���C����ʉ߂���l�ɏ����������āA���̒l�͂��̂܂܌㑱�֓n���B����͒l���u3�v�̂Ƃ��ɗ�O��������悤�ɂ����B |
�@��L�̃R�[�h�����s�����ꍇ�ARange���\�b�h�ɂ��u1�v�`�u5�v�̒l�̐�������������ƁAOnCompleted���\�b�h���Ă��A�������͓r���ŗ�O�����������OnError���\�b�h���Ă��̂��m�F�ł��邾�낤�B�Ȃ��AOnError���\�b�h�A��������OnCompleted���\�b�h�́A�ǂ��炩�Е������Ă�邱�Ƃ͂Ȃ��B�܂�AOnError���\�b�h���Ăꂽ���OnCompleted���\�b�h���Ăꂽ�肷�邱�Ƃ͂Ȃ��B�܂��AOnError���\�b�h�A��������OnCompleted���\�b�h���Ăꂽ���OnNext���\�b�h���Ă�邱�Ƃ��Ȃ�*3�B
*3�@���̖@����Rx�ɕW���ŗp�ӂ���Ă��郁�\�b�h�ł͂��ׂĎ���Ă���B�܂��A���\�b�h�����삷��ꍇ�ł�Observable.Create���\�b�h�Ƃ�����Rx�W���ŗp�ӂ���Ă��鐶�����\�b�h��p����Ύ����B�����Subscirbe���\�b�h�̌Ăяo�����ɂ�Rx�ŗp�ӂ���Ă���Observer�i�O�q��System.ObservableExtensions�N���X�ɂ��g�����\�b�h�A��������Observer.Create���\�b�h�j���g���Ύ����I�Ɏ����悤�ɂȂ��Ă���B���̂悤�ɁA��d�ɂ��n���Ė@�������炳���悤�ɂȂ��Ă��邽�߁A�ق�100�����̖@�����j���邱�Ƃ͂Ȃ����AIObservable<T>�^IObserver<T>�I�u�W�F�N�g�����ׂĈꂩ�玩�O�Ŏ�������ꍇ�́A���̖@���ɔ����鋓��������\��������B�������A���̂悤�Ȏ����͂��ׂ��ł͂Ȃ��B���S�̂��߂ɂ��AIObservable<T>�C���^�[�t�F�C�X��IObserver<T>�C���^�[�t�F�C�X����������ۂ́A�ɗ́ARx�ɗp�ӂ���Ă���Observable.Create�^Observer.Create���\�b�h�𗘗p���Ď������ׂ����낤�B�ǂ����Ă�����炪���p�ł��Ȃ��ꍇ�́A�@�������悤�ɒ��Ӑ[����������K�v������B |
�@�Ȃ����̂悤�ȋ����ɂȂ��Ă���̂��A�����łȂ���Ȃ�Ȃ��̂��Ƃ����ƁAforeach���ōl���Ă݂�ƕ�����₷���B
foreach�����OnNext�^OnError�^OnCompleted���\�b�h�Ă͂߂��C���[�W |
�@foreach���ł̗����ׂĊ����i�����[�v����j������A�ēx�Aforeach���̃��[�v�ɓ��邱�Ƃ͂Ȃ��B�܂��A�̍Œ��ɗ�O������������A�ēx�Aforeach���̃��[�v�ɓ��邱�Ƃ��Ȃ����A�����Ƃ͈Ⴄ���[�v�̔����������邽�߁A�����̕����ɓ��邱�Ƃ��Ȃ��B
�@���̂悤�Ȍ������\�Ȃ̂́A�A�ڂ̑�1���ŁuIObservable<T>�^IObserver<T>�C���^�[�t�F�C�X�̐��藧�����̂��AIEnumerable<T>�^IEnumerator<T>�C���^�[�t�F�C�X�]�����č��ꂽ�v�Ɛ��������悤�ɁAIObservable<T>�I�u�W�F�N�g��Enumerable<T>�I�u�W�F�N�g�̐��������ׂĎ��悤�ɂł��Ă��邵�A�܂��A�����łȂ���Ȃ�Ȃ�����ł���B
���gDispose�h�̕K�v��
�@Subscribe���\�b�h�̖߂�l��IDisposable�I�u�W�F�N�g�ł��邪�A��L�̗�ł͕ϐ��Ɏ邱�Ƃ��Ȃ��������Ă���B����́ARx�ɂ�����IDisposable�I�u�W�F�N�g�̈Ӗ����A�]���g���Ă���u�������K�v�����郊�\�[�X������Ă���\��������v�Ƃ͈قȂ邩�炾�B
�@Rx�ł͌��\�[�X���C�x���g�̏ꍇ�̓C�x���g�́u�f�^�b�`�v�A�^�C�}�[�̏ꍇ�́u���~�v�A���̏ꍇ�́u�L�����Z���v�̈Ӗ��Ŏg����B������ɂ���u�I���v�̖������ʂ����i���������̏ꍇ�AOnCompleted���\�b�h�͎��s����Ȃ��j���A�����͑S�āA�K�������Ăяo���Ȃ���Ȃ�Ȃ����̂ł͂Ȃ��B�ނ���A�Ăяo���Ȃ��P�[�X�̕���������������Ȃ��B����āASubscribe���\�b�h�̖߂�l�͕K�v���Ȃ���Ζ������Ă����Ȃ��̂ł���B
��Observable�I�u�W�F�N�g�̐����q
�@Enumerable�ɂ����āA�V�[�P���X�A�܂�IEnumerable�C���^�[�t�F�C�X������������̂́A�z���List�ADictionary�ȂǁA���鏊�ɑ��݂���B�Ђ�ARx�ɂ�����V�[�P���X�AIObservable<T>�C���^�[�t�F�C�X�������������̂́A�ʏ�ł͂ǂ��ɂ����݂��Ȃ��B�����ŁA�������邽�߂̃��\�b�h����ʂɗp�ӂ���Ă���B
�@�ȉ���Observable�̐����q���܂Ƃ߂�B�Ȃ��A���̕\��Rx��Stable�i����j�łɗp�ӂ���Ă��鐶���q�݂̂ŁAExperimental�i�����j�ł�Rx�ɂ́A����ɒlj�����Ă���B
���\�b�h�� | �@�\ |
Create | �C�ӂ�Observable���쐬 |
Defer | Subscribe�����܂ŁA���̃t�@�N�g���E���\�b�h���s��x�� |
Empty | OnCompleted���\�b�h�݂̂����s |
FromAsyncPattern | Begin-End�p�^�[������쐬 |
FromEvent *4 | Action�f���Q�[�g�̃C�x���g����쐬 |
FromEventPattern | EventHandler�f���Q�[�g�̃C�x���g����쐬 |
Generate | for����͂����l�̔��s |
Interval | ��莞�Ԃ��Ƃɒl�s |
Never | �������s���Ȃ� |
Range | �w��͈͂̐����s |
Repeat | �w��A����̒l�s |
Return | 1�݂̂̒l�s |
Start | �w��X�P�W���[��*5��ő����Ɏ��s���A�������1�݂̂̒l��Ԃ� |
Throw | OnError���\�b�h�݂̂����s |
Timer | ��莞�Ԍ�Ɉ�x�̂݁A�������͈�莞�Ԍ�Ɉ������Œl�s |
ToAsync | �w��X�P�W���[��*5��Ŏ��s���A�������1�݂̂̒l��Ԃ�Observable������Func�f���Q�[�g��Ԃ� |
Using | ������A�w�肵�����\�[�X��Dispose����t�@�N�g���E���\�b�h���쐬 |
Observable�I�u�W�F�N�g�����̂��߂�Observable�N���X�̐ÓI���\�b�h | |
*4 Windows Phone 7�ɓ�������Ă���Microsoft.Phone.Reactive�A�Z���u���ƁAData Developer Center�Ŕz�z����Ă���System.Reactive�A�Z���u���ł͋@�\���قȂ�B���̏ڍׂ͌�ŏڂ����q�ׂ�B | |
*5 �f�t�H���g�ł̓X���b�h�v�[���iThreadPool�j��Ŏ��s����AThread.Start���\�b�h��Task.Factory.StartNew���\�b�h�Ȃǂ́ARx�ł̑�ւƂȂ�B�X�P�W���[���Ɋւ��Ă͎���ȍ~�̘A�ڂŏڂ����q�ׂ�B |
���\�b�h�� | �@�\ |
ToObservable | IEnumerable<T>�I�u�W�F�N�g��Observable�ɕϊ� |
IEnumerable<T>�I�u�W�F�N�g�ւ̊g�����\�b�h |
���\�b�h�� | �@�\ |
ToObservable | Task�I�u�W�F�N�g��Observable�ɕϊ� |
Task�I�u�W�F�N�g�ւ̊g�����\�b�h | |
���uSystem.Reactive.Threading.Tasks�v�́uusing�v�^�uImports�v���K�v�B |
�@�������ŏ��̃\�[�X�Ƃ��āAWhere���\�b�h��Select���\�b�h�Ȃǂ��Ȃ��݂̃N�G�����Z�q��ARx�����ɂ��鉉�Z�q��K�p�����Ă����A�l��ό`�����A�Ō��Subscribe���\�b�h�Œl��n���A�Ƃ����̂�Rx�̊�{�I�ȗ���ƂȂ�B
�@�Ⴆ�Ή��L�̃R�[�h�����s�����ꍇ�A���̉��̐}�̂悤�ȗ���ƂȂ�B
|
||
���Z�q��K�p���������\�b�h�E�`�F�[���̗�i��FC#�A���FVB�j |
���\�b�h�E�`�F�[���ŗ����l�̃C���[�W |
�uRange�v�̈�ԉE�̎l�p��OnCompleted���\�b�h�̌Ăяo����\���B |
�@���̗�ł�Where���\�b�h��2�̔{���݂̂ɒl���t�B���^�����O���ASelect���\�b�h�Œl���悵�Ă���B
�@����ł͎��̃y�[�W����A�{�e�̎��ł���u�C�x���g��Rx�ň������@�v��������悤�B
�@INDEX | ||
�@ | �m�A�ځnReactive Extensions�iRx�j���� | |
�@ | ��2�� �C�x���g�E�v���O���~���O��Rx | |
1�D��{�I�ȋL�q���@�^IObserver<T>�I�u�W�F�N�g�̏ڍׁ^�gDispose�h�̕K�v���^Observable�I�u�W�F�N�g�̐����q | ||
�@ | 2�D�C�x���g�Ƃ͉����H �C�x���g��Rx�ň������Ƃ̗��_�^FromEvent���\�b�h��FromEventPattern���\�b�h | |
�@ | 3�D�����̂��߂̃��\�b�h | |
�@�u�A�ځFReactive Extensions�iRx�j����v |
- ��2��@�Ȍ��ȃR�[�f�B���O�̂��߂� �i2017/7/26�j
�@�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă��� - ��1��@Visual Studio Code�f�o�b�O�̊�b�m�� �i2017/7/21�j
�@Node.js�v���O�������f�o�b�O���Ȃ���AVisual Studio Code�ɓ�������Ă���f�o�b�O�@�\�̊�{�́u�L�v���}�X�^�[���悤 - ��1��@���ĂȃR�[�f�B���O�̂��߂� �i2017/7/19�j
�@C# 7�Œlj����ꂽ�V�@�\�̒�����A�u���l���e�����\���̉��P�v�Ɓu���[�J�����v���Љ��B�����͕�����₷���R�[�h���L�q����̂Ɏg���� - Presentation Translator �i2017/7/18�j
�@Presentation Translator��PowerPoint�p�̃A�h�C���B�v���[���e�[�V�������̎����̕t����A������ł̎��^�����A�X���C�h�̖|����s����
|
|